[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. 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.
  2. 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 ?
  3. <?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. 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. 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. 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.