[PHP] Naviguer dans la table

Bonjour,
Je possède une table où toutes les entrées sont numéroté par un champ id en auto_increment.

Ce que je souhaite c'est savoir comment créer un code qui permettra de naviguer dans la table d'entrée en entrée avec deux boutons, suivant et précèdent par exemple.

J'ai d'abord essayé ça
<a href="article.php?id=<?php echo $ID++; ?>">Suivant</a>
et un deuxième lien pour l'entrée précédente. Mais lorsque je supprime un entrée de la table, forcément, ça ne fonctionne plus...

Merci d'avance !

6 réponses

  1. Salut.

    Tu peux créer une fonction qui vérifie si l'enregistrement existe.
    Quand ce n'est pas le cas, alors cette fonction décrémente l'ID et réessaye.
    Il doit y avoir une méthode plus propre, mais c'est la première qui m'est venue à l'esprit.
    1. il te faut faudrait un script qui vérifie si $ID existe bien si il n'existe pas il fait $ID++ et retente et ceux jusqu'à trouvé une id qui existe
      1. une autre solution:

        tu fais une requette sur ta table pour extraire tous les id
        par une boucle while, tu les stockes dans un array par ex $array_id

        et ton lien deviens

        $id_suivant=$ID++;
        if(isset($array_id[$id_suivant])){
          echo '<a href="article.php?id='.$id_suivant.'">Suivant</a>';
        
        }
        
        //meme principe avec precedent
        
        //ainsi tu n'aura le lien que si c'est possible
        
        1. Ah oui j'y ai pas pensé sur le coup très bonne idée
        2. J'ai tenté ça :
          $reponse = mysql_query('SELECT COUNT(*) AS id FROM v1_lecon'); 
          while ($donnees = mysql_fetch_array($reponse)) 
          { 
           $array_id = $donnees['id']; 
          } 
          $id_suivant = $id++; 
          if(isset($array_id[$id_suivant])) 
          { 
           echo '<a href="article.php?id='.$id_suivant.'">Suivant</a>'; 
          } 
          

          mais rien ne s'affiche, pourriez-vous me dire pourquoi ? Je précise que l'ID suivante existe bien.
      2. <?php
        //pourquoi COUNT ??
        //$reponse = mysql_query('SELECT COUNT(*) AS id FROM v1_lecon'); 
        $reponse = mysql_query("SELECT id FROM v1_lecon"); //je suppose que tes id sont dans un champ id de ta table
        //init de l'array
        $array_id=array();
        while ($donnees = mysql_fetch_array($reponse)) 
        { 
         $array_id[] = $donnees['id']; // la il faut des crochets
        } 
        
        // ou recupères tu cette variable $id ??
        
        
        $id_suivant = $id++; 
        if(isset($array_id[$id_suivant])) 
        { 
         echo '<a href="article.php?id='.$id_suivant.'">Suivant</a>'; 
        } 
        1. voilà qq chose de plus complet:
          <?php
          //////  il faut que ce script se nomme article.php  pour que la page s'appelle elle même /////
          //connexion serveur, selection base puis...
          
          $reponse = mysql_query("SELECT id FROM v1_lecon"); //je suppose que tes id sont dans un champ id de ta table
          //init de l'array
          $array_id=array();
          //boucle pour empiler les id dans l'array
          while ($donnees = mysql_fetch_array($reponse)) 
          { 
           $array_id[] = $donnees['id']; // la il faut des crochets, php va automatiquement incrementer les index de l'array
          } 
          
          if(isset($_GET['i'] {$i=$_GET['i'];}else{$i=0;} //recup de l'index de l'array en cours passé par l'url, au départ par defaut sera = 0
          
          //affichage de l'id en cours
          echo 'l\' ID en cours est: '.$array_id[$i].'<br /><br />';
          //tu peux utiliser cette valeur $array_id[$i]  pour faire tes traitements
          
          //liens precedent suivant
          //on passe par l'url, l'index de l'array 
          if(isset($array_id[$i-1])) 
          { 
           echo '<a href="article.php?i='.($i-1).'">Precedent</a>'; 
          } 
           
          if(isset($array_id[$i+1])) 
          { 
           echo '<a href="article.php?i='.($i+1).'">Suivant</a>'; 
          } 
          1. Oh merci beaucoup ! Je teste ça et je passe le post en [résolu] si tout va bien :)
          2. Même en remplaçant la variable $i par la mienne, $voir, ça ne fonctionne par. Pourtant j'ai bien corrigé ta petite erreur de syntaxe (
            if(isset($_GET['i'])) {$i=$_GET['i'];}else{$i=0;}
            ) mais rien ni fait. Le plus étrange c'est que si je fais en dessous
            echo $_GET[voir]; 
            rien ne s'affiche. Que faire ?
        2. ha oui les ) étaient passées à la trappe !

          et tu as bien mis $voir à la place de $i dans cette ligne

          if(isset($_GET['voir'])) {$voir=$_GET['voir'];}else{$voir=0;}


          et dans l'url

          echo '<a href="article.php?voir='.($voir-1).'">Precedent</a>'
          ;

          donnes le code de la partie concernée si tu veux
          1. Zut, j'ai tout supprimé... Je mis remets un peu plus tard et je reviens te donner le script.