afficher les 5 derniers enregistrement d'une table

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2010, 11:13

Bonjour,

Voila je voudrai faire une requête et faire afficher les 5 derniers enregistrements d'une table, le souci c'est que je ne peux pas faire order by monchamp desc limit 5 car je veux qu'il les affiche dans l'ordre croissant. Auriez vous une idée sur une autre commande ?

merci d'avance

Eléphanteau du PHP | 15 Messages

29 janv. 2010, 11:18

Et pourquoi tu ne ferai pas effectivement un ORDER BY DESC, que coté PHP tu enregistres le résultat dans un tableau que tu parcours de la fin vers le début ?

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2010, 11:23

ou la, en faite je pensais faire plus simple, je pensais qu'il y aurai une fonction. je maitrise pas trop les tableau, comment doit-je procéder ?
merci

ViPHP
ViPHP | 5462 Messages

29 janv. 2010, 11:40

tu creer une vue, sur la quelle du fera un order dans l'autre sens

Eléphanteau du PHP | 15 Messages

29 janv. 2010, 12:21

LA vue est une bonne solution sinon tu peux t'amuser aussi avec un curseur

Eléphanteau du PHP | 16 Messages

29 janv. 2010, 12:59

Salut,

Heu pourquoi tu fait DESC si tu cherche l'ordre croissant ?

Prenant un order by ASC le tour est joué ?? #-o

Eléphanteau du PHP | 15 Messages

29 janv. 2010, 16:23

Parceque quand tu utilises la syntaxe avec "Select * from table LIMIT X", il prends les X premiers enregistrements.

Si tu veux les X derniers, tu fais un order by DESC.

ViPHP
AB
ViPHP | 5818 Messages

29 janv. 2010, 16:26

ou la, en faite je pensais faire plus simple, je pensais qu'il y aurai une fonction. je maitrise pas trop les tableau, comment doit-je procéder ?
merci
Ben faudra t'y mettre un peu aux tableaux sinon t'iras pas loin en php :)

Surtout que là c'est quand même pas compliqué :
Tu liste la ressource de ta requête dans un tableau puis tu inverse l'ordre du tableau.
$requete = "SELECT ...";

$ressource = mysql_query($requete);

$donnees = array();

while($ligne = mysql_fetch_assoc($ressource)) $donnees[] = $ligne;

$donnees = array_reverse($donnees);

//vérification
echo '<pre>';
print_r($donnees);
echo '</pre>';
Ensuite lu liste ton tableau $donnees pour afficher les données.

Eléphanteau du PHP | 16 Messages

29 janv. 2010, 16:33

Parceque quand tu utilises la syntaxe avec "Select * from table LIMIT X", il prends les X premiers enregistrements.

Si tu veux les X derniers, tu fais un order by DESC.
Au temps pour moi j'ai vu l'odre croissant avec un DESC je me suis dit 8-| lol

Le dernier exemple est une bonne solution :pouce:

ViPHP
ViPHP | 5462 Messages

29 janv. 2010, 16:42

ouai, mais le mieux etant d'utilisé une view, ca optimise des 2 cotés (php, mysql)

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2010, 17:35

donc je suis en trein d'essayer avec les tableau, le souci c'est que j'essaie de faire afficher les enregistrements docn j'ai saisi echo $donnees[dat]; dat étant mon nom de champ que je souhaite faire afficher. Et rien ne s'affiche.

merci

ViPHP
ViPHP | 5462 Messages

29 janv. 2010, 17:39

donc je suis en trein d'essayer avec les tableau, le souci c'est que j'essaie de faire afficher les enregistrements docn j'ai saisi echo $donnees[dat]; dat étant mon nom de champ que je souhaite faire afficher. Et rien ne s'affiche.

merci
$donnees[0]['dat'];

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2010, 17:43

cela m'affiche aussi array

merci

ViPHP
ViPHP | 5462 Messages

29 janv. 2010, 17:44

cela m'affiche aussi array

merci
fais un :
print_r($donnees);

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2010, 17:47

voici se que cela me renvoi :
Array ( [0] => Array ( [dat] => 2009-09-01 ) ) Array ( [0] => Array ( [dat] => 2009-06-01 ) [1] => Array ( [dat] => 2009-08-01 ) ) .......