Problème MySQL : Nbre d'enregistrements

WRInaute passionné
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:
// 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:
	// 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 :(
 
WRInaute discret
kmenslow a dit:
UsagiYojimbo a dit:
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.
 
WRInaute accro
kmenslow a dit:
Code:
// 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 dit:
Code:
	// 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.
 
Discussions similaires
Haut