[PHP] Naviguer dans la table

Fermé
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 2 août 2010 à 11:36
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 4 août 2010 à 17:47
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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 août 2010 à 15:00
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 jeudi 24 mai 2007 Statut Membre Dernière intervention 7 février 2012 15
2 août 2010 à 20:52
Ah oui j'y ai pas pensé sur le coup très bonne idée
0
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
Modifié par crocoscore le 3/08/2010 à 13:40
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 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
2 août 2010 à 13:34
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 jeudi 24 mai 2007 Statut Membre Dernière intervention 7 février 2012 15
2 août 2010 à 13:36
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 août 2010 à 22:15
<?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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 août 2010 à 10:06
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 dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
4 août 2010 à 15:44
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 dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
4 août 2010 à 16:07
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 4/08/2010 à 16:36
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 dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
4 août 2010 à 17:47
Zut, j'ai tout supprimé... Je mis remets un peu plus tard et je reviens te donner le script.
0