Afficher les 10 première entrer dans BD

Résolu/Fermé
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 - 27 sept. 2011 à 19:18
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 - 29 sept. 2011 à 12:14
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

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
27 sept. 2011 à 20:25
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'; 
0
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 40
28 sept. 2011 à 11:16
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.
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
28 sept. 2011 à 14:26
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.
0
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 40
28 sept. 2011 à 18:46
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...
0
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 40
28 sept. 2011 à 18:58
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




0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
28 sept. 2011 à 19:19
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...
0
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 40
Modifié par aaronnapster le 28/09/2011 à 19:35
merci a toi je pense que tu as raison je vais codé et t informer;;;;bye
0
aaronnapster Messages postés 441 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 30 avril 2019 40
29 sept. 2011 à 12:14
bonjour arthezius ca marche parfaitement merci une fois de plus....
0