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

5 réponses

  1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    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
    1. 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
  2. lasngc
     
    Jeff a raison c'est de loin la meilleure méthode
    0
  3. 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
  4. HASSINE
     
    Vous savez pas comment revenir à l'enregistrement précédent en php?? (le contraire de fetch). Merci d'avance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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