Problème MySQL : Nbre d'enregistrements


kmenslow
WRInaute passionné
WRInaute passionné
 
Messages: 2078
Inscription: 7 Aoû 2006

Problème MySQL : Nbre d'enregistrements

Message le Mer Nov 28, 2007 13:23

Bonjour,

Je me lance dans l'apprentissage du PHP / MySQL et je rencontre un petit problème. Voici ma situation :

J'ai une table comportant 3 colonnes :
- colonne 1 : "NUM" c'est un entier qui s'auto-incrémente à chaque nouvel enregistrement.
- colonne 2 et 3 : Ceux des données provenant d'un formulaire.

J'ai 40 enregistrements dans cette table donc j'ai le "NUM" qui s'est incrémenté de 1 jusqu'à 40.
Je viens de supprimer l'enregistrement 35, il me reste donc 39 enregistrements.
Au prochain enregistrement, mon NUM va passer à 41 et mon nombre d'enregistrements va passer à 40.

Sur l'index de mon site, j'affiche les 10 derniers enregistrements. Pour cela j'utilise la formule suivante :
Code: Tout sélectionner
// Détermnation du nombre d'enregistrement
   $select = 'SELECT num FROM texte';
   $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
   $total = mysql_num_rows($result);


donc $total = 40

Ensuite je fais une boucle

Code: Tout sélectionner
   // initialisation des variables
   $x = $total;
   $z = 0;
   
   // Listage de toute la table
   while ($x >= $total -10 )
   { $req_texte_infos = "SELECT num, texte1, texte2 valide FROM texte WHERE num=$x";
   $dataset_texte_infos
......... ........ ....... ....



        $z = $x - 1;
   $x = $z;
   
   }



Mon problème c'est que $total est différent de ma dernière valeur de NUM.
Donc la boucle ne me donne pas l'enregistrement 41 car $total = 40.

Voila je bloque la dessus.

Comment puis-je faire pour remettre le nombre d'enregistrement = à la valeur de NUM ?



Merci de votre aide :(


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Message le Mer Nov 28, 2007 13:29

SELECT num, texte1, texte2 valide FROM texte ORDER BY num DESC LIMIT 0,10 ?


kmenslow
WRInaute passionné
WRInaute passionné
 
Messages: 2078
Inscription: 7 Aoû 2006

Message le Mer Nov 28, 2007 13:51

UsagiYojimbo a écrit:SELECT num, texte1, texte2 valide FROM texte ORDER BY num DESC LIMIT 0,10 ?


Cela va m'afficher les 10 premiers enregistrements de ma table ? non ?

Je souhaite afficher les 10 derniers :D


kmenslow
WRInaute passionné
WRInaute passionné
 
Messages: 2078
Inscription: 7 Aoû 2006

Message le Mer Nov 28, 2007 14:03

Ma solution serai de connaitre la valeur maxi de NUM dans ma table.

lefou
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 7 Juin 2005

Message le Mer Nov 28, 2007 14:05

kmenslow a écrit:
UsagiYojimbo a écrit:SELECT num, texte1, texte2 valide FROM texte ORDER BY num DESC LIMIT 0,10 ?


Cela va m'afficher les 10 premiers enregistrements de ma table ? non ?

Je souhaite afficher les 10 derniers :D


Le fait de mettre DESC permet de lire la table dans le sens décroissant donc du dernier jusqu'au premier. Bref cela affichera bien les 10 derniers résultats enregistrés.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Problème MySQL : Nbre d'enregistrements

Message le Mer Nov 28, 2007 14:55

kmenslow a écrit:
Code: Tout sélectionner
// Détermnation du nombre d'enregistrement
   $select = 'SELECT num FROM texte';
   $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
   $total = mysql_num_rows($result);


Tu ferais mieux d'utiliser un SELECT count(*) FROM texte. Là tu te trimbales un paquet de données pour rien.

kmenslow a écrit:
Code: Tout sélectionner
   // initialisation des variables
   $x = $total;
   $z = 0;
   
   // Listage de toute la table
   while ($x >= $total -10 )
   { $req_texte_infos = "SELECT num, texte1, texte2 valide FROM texte WHERE num=$x";
   $dataset_texte_infos
......... ........ ....... ....
        $z = $x - 1;
   $x = $z;
   
   }


Ouh là.
Comem déjà dit, récupère la liste de tous les enregistrements que tu veux afficher d'un coup:
SELECT num,texte1,texte2 FROM texte ORDER BY num DESC LIMIT 10
Ensuite fais une boucle sur le résultat pour afficher tout ça.

Ca ira nettement plus vite, et en plus ça marchera :-)

Au passage, rien n'empêche d'écrire $x = $x -1 (c'est une affectation, pas une égalité mathématique), ou encore $x -= 1 ou encore $x-- (la plus lisible...).

Jacques.


kmenslow
WRInaute passionné
WRInaute passionné
 
Messages: 2078
Inscription: 7 Aoû 2006

Message le Mer Nov 28, 2007 15:01

Grand merci pour votre aide :D je vais appliquer vos conseils immédiatement


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités