Afficher les 10 première entrer dans BD [Résolu/Fermé]

Signaler
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
-
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
-
Bonsoir a tous svp j ai un souci c'est que: lorsque je fais afficher les 10 première nouvelle entrées de ma BD , celle ci reste standard même les nouvelle entrée ne sont pas pris en compte par ma requête sql...
j aimerais que a chaque fois qu'une nouvelle entrée les ancien soient remplace au fur et a mesure...

voici mon code:



<?php
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('webmaster', $base);

$sql = 'SELECT auteur, email, date_signature, message FROM livre_or WHERE id limit 0,10';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$nb_signature = mysql_num_rows($req);

if ($nb_signature == 0)
{
echo 'Aucune signature.';
}
else {
while ($data = mysql_fetch_array($req)) {
sscanf($data['date_signature'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);

echo '<b>'.htmlentities(trim($data['auteur'])).'</b>';
echo '    a signer le ' , $jour , '/' , $mois , '/' , $annee , ' à ' , $heure , ':' , $minute , '<br />';
echo nl2br(htmlentities(trim($data['message'])));
echo '<br /> <hr />' ;
}
}
// on libère l'espace mémoire alloué pour cette requête

mysql_free_result ($req);

// on ferme la connection à la base de données.

mysql_close ();
?>






4 réponses

Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
455
Tu veux donc afficher les dix dernier enregistrement de ta table.
Dans ce cas, modifie ta requête comme suis:
$sql = 'SELECT auteur, email, date_signature, message FROM livre_or ORDER BY id DESC LIMIT 10'; 
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
33
bonjour ,non pas les 10 dernier mais les 10 premiers mais et a chaque fois qu un internaute poste un message il doit remplacer le 1 er et au fur et a mesure des 10.
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
455
Donc si je comprends bien, à chaque fois que tu fais un enregistrement, tu veux que le plus vieux soit supprimé? et ainsi n'en laisser que 10 dans la base de donnée et donc les 10 plus récent enregistrement?
C'est bien ça?
<?php
// On compte le nombre d'enregistrement
$sql = 'SELECT * FROM livre_or ';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

// On enregistre le nouveau
$sql='INSERT INTO livre_or VALUES ( [...] )';
mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
if($nb>=10)
{
$sql = 'SELECT * FROM livre_or ORDER BY id ASC LIMIT 1';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$id = mysql_fetch_array($req);

$sql='DELETE FROM livre_or WHERE id="'.mysql_real_escape_string($id['id']).'"';
}
?>

A chaque fois que tu fais un enregistrement, ce code vérifie que le nombre n'est pas supérieur à 10 et si c'est le cas, il supprime le plus vieux enregistrement.
Remplace [...] par les valeurs que tu veux enregistrer et adapte ce code à celui que tu as déjà pour enregistrer tes données.
J'espère avoir cette fois bien compris ton problème. Si ce n'est pas le cas, essai d'être plus clair dans tes explications.
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
33
non a chaque fois qu il ya un nouveau enregistrement il remplace l ancien mais l ancien reste toujours dans la BD mais n affichera plus si je fais un select id from...
j ai du mal a expliquer ça excuse moi...
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
33
bonsoir merci bien de me venir en aide,je fais un effort:

j enregistre toutes les entrée de mon livre d or dans ma BD .

je veux afficher les 10 première entrées dans ma BD sur ma page.

le problème est que si il ya par exemple 5 autre entrée que 5 parmi les 10 soit remplacer par les nouveau 5 entrée au fur et a mesure que les entrée se fasse .

mon code ci dessus affiche les 10 entree et ignore les nouvelle entree dans la BD ;

je veux que sql les remplace au fur et a mesure.... aider moi




Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
455
que 5 parmi les 10 soit remplacer par les nouveau 5 entrée
Euh... ça reviens pas à afficher les 10 derniers enregistrement?

Si tu affiches les 10 derniers enregistrement (les plus récents) et que tu en rajoutes un nouveau (il sera donc le dernier ou, formulé autrement, le plus récent), le plus vieux (parmi ces 10) ne sera plus afficher (mais sera toujours dans la BDD et le nouveau s'affichera alors.
La requête que j'avais mis affiche justement les derniers enregistrement:
$sql = 'SELECT auteur, email, date_signature, message FROM livre_or ORDER BY id DESC LIMIT 10';


Je vois pas la différence entre ce que je te suggère de faire et ce que tu essaie de m'expliquer...
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
33
merci a toi je pense que tu as raison je vais codé et t informer;;;;bye
Messages postés
441
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
30 avril 2019
33
bonjour arthezius ca marche parfaitement merci une fois de plus....