Se deplacer dans les enregistrements d'une db

Seb -  
Bobinours Messages postés 2903 Statut Membre -
J'ai un serveur apache avec un module PHP et un serveur MySql

J'ai réalisé une table ayant une clef primaire qui s'auto incrémente

Je lis dans ma base de donnée avec
$query = "SELECT * FROM $table WHERE id_table = ID ";

Je souhaite pouvoir passer à l'enregistrement suivant.

Je souhaite aussi avoir des informations comme le dernier ID de ma table, le nombre d'enregistrement.

Seulement, je ne veux pas lire ma table en entier et certains ID peuvent avoir été effacé.

Cela est-il faisable (et comment)

Merci
A voir également:

5 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 279
 
Oui c'est tout à fait faisable.

Tu fais un

$result = mysql_query($query);

Puis pour parcourir les enregistrements :

while ($row = mysql_fetch_row($result)) {
$row[0] = "champ1";
...

}

Pour compter le nombre de résultats:
$nombre = mysql_count($result);

0
Bobinours Messages postés 2903 Statut Membre 504
 
Rooo lala ! J'ose pas poster après Jeff, mais t'as fumé là :oD

Ce n'est pas les champs suivant d'un enregistrement qu'il veut mais les enregistrements suivant ;-)
0
lasngc
 
Jeff a raison c'est de loin la meilleure méthode
0
Seb
 
Si je comprends bien ton post Jeff, cela m'oblige à lire la table en entier.

Est il possible, lorsque l'on fait:
$query = "SELECT * FROM table ";
de rajouter un parametre (WHERE ...)pour qu'il ne sorte que les n premieres réponses avec:
$result = mysql_query($query);
(toujour dans l'objectif de ne pas sortir toute la table)

Sinon, j'ai trouvé une fonction qui pourrait me donner la valeur max de ma clef primaire, mais j'arrive pas à m'en servir:
SELECT MAX(ID) FROM $table;
Quelqu'un la déjà utilisé?

Merci
0
Bobinours Messages postés 2903 Statut Membre 504
 
Il y a la clause LIMIT dans un SELECT. Je ne sais pas si c'est vraiment ce que tu cherches ça permet de ne prendre que les X premiers résultats qui auront été trouvé (même sans WHERE)

Voir : http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#SELECT
0
HASSINE
 
Vous savez pas comment revenir à l'enregistrement précédent en php?? (le contraire de fetch). Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bobinours Messages postés 2903 Statut Membre 504
 
Sache tout d'abord qu'une Base de Donées n'est pas une liste chaînée. Pour faire cela, il faudrait que tu gères deux champs PRECEDENT et SUIVANT dans chaque enregistrement (et que tu les mettes à jour lors d'un ajout et d'une suppression...

Ceci dit, MySQL y a pensé, et je crois que tu trouveras ton bonheur là : http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#HANDLER

;-)

(Attention, je ne te garanti pas que l'ordre affiché soit le même que celui des ID. Ce sera l'ordre de stockage. Si tu as 3 enregistrements ID = 1, 2 et 3 que tu supprimes le 2 et ajoute le 4, tu risques fort d'avoir l'ordre final : 1, 4, 3... A vérifier.)
0