[PHP] Naviguer dans la table

crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   -  
crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

6 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
Ah oui j'y ai pas pensé sur le coup très bonne idée
0
crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   5
 
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.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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.
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
<?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>'; 
} 
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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>'; 
} 
0
crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   5
 
Oh merci beaucoup ! Je teste ça et je passe le post en [résolu] si tout va bien :)
0
crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   5
 
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 ?
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
0
crocoscore Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   5
 
Zut, j'ai tout supprimé... Je mis remets un peu plus tard et je reviens te donner le script.
0