Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2006, 08h45   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 44
Points : 10
Points : 10
Par défaut [Conception] Liste inversée !

Bonjour,

Voilà mon problème :

Je veut afficher les 5 derniers enregistrements de mon fichier.

pour l'exemple metons que mon fichier comporte 10 enregistrements

mais quand je veut afficher, cela me fait :
enregistrement 10 puis 9 puis 8 et 7 et 6

Je voudrais que mes 5 derniers enregistrements s'affichent :
6 puis 7 puis 8 et 9 et 10

Si vous pouvez m'aider a modifier mon code :

Code:
Code :
1
2
3
4
5
6
7
8
9
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,5");
 
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']); 
$datexx = $donnees['Datex'];
echo '<p>Le <strong>'.$datexx. $separ2. '<strong>' .$donnees['Heurex'].$separ. '<strong>' .$donnees['pseudo']. '</strong> : ' .$affiche_message. '</p>';
}
Merci a vous
Bydouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 09h23   #2
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
Bonjour,

c'est normal acr tu fais un tri DESC. solution s'offre a toi. Soit tu met tes resultats dans un array() et puis tu fais un sort() de ton array avant l'affichage. Soit tu connait la longueur de tes resultats et tu fais :
Code :
1
2
 
$reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT ".($longueur - 5).",5");
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 09h35   #3
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
t'as pas testé la solution que BrYs t'a donné ?

logiquement ça doit marcher :

tu déclares un tableau

dans le while après la requête tu enregistres ce que ta requête t'a retourné dans ce tableau

tu l'inverses avec array_reverse

et tu poses ton affichage dans une nouvelle boucle
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 09h49   #4
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 44
Points : 10
Points : 10
Bonjour,

Ok pour le tableau, cela me parait bien mais
je débute en PHP et ça je sais pas faire !

Par contre avec ($longueur - 5).",5")
la liste est toujours a l'enver
Bydouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 09h58   #5
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
Citation:
Envoyé par Bydouille
Bonjour,
Par contre avec ($longueur - 5).",5")
la liste est toujours a l'enver
oui, parce qu'il faut que tu enleves le order by DESC (desole, j'avais oublier de le specifier )
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 10h14   #6
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 44
Points : 10
Points : 10
Super, cela fonctionne

Par contre, j'a mis la longueur manuellement

Comment on peut récupérer cette valeur ?
Bydouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 10h16   #7
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
il faut que tu fasse une premiere requette avec un Count() sur le nombre d'elements et tu auras ta longueur, mais je persiste en disant que le tableau (array()) est une meilleure solution
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 10h19   #8
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 44
Points : 10
Points : 10
Ok, et encore merci

@ +
Bydouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 10h23   #9
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
une autre méthode aurait consisté à construire l'afficha à l'envers
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,5");
 
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']); 
$datexx = $donnees['Datex'];
$affichage = '<p>Le <strong>'.$datexx. $separ2. '<strong>' .$donnees['Heurex'].$separ. '<strong>' .$donnees['pseudo']. '</strong> : ' .$affiche_message. '</p>' .$affichage;
}
echo $affichage;
Mais, pour plus de clarté, le passage par un tableau est mieux surtout que sur 5 éléments ce n'est pas la mort
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,5");
 
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']); 
$datexx = $donnees['Datex'];
$tab[] = '<p>Le <strong>'.$datexx. $separ2. '<strong>' .$donnees['Heurex'].$separ. '<strong>' .$donnees['pseudo']. '</strong> : ' .$affiche_message. '</p>';
}
 
for($i=sizeof($tab);$i>=0;--$i){
echo $tab[$i];
}
echo $affichage;
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h50.


 
 
 
 
Partenaires

Hébergement Web