Pb requète sql sur plusieurs pages [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
-
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011
-
hello à tous

je sais que ce problème doit revenir assez régulièrement, mais j'ai un petit soucis avec un code trouvé sur ce site, ici

je l'ai intégré dans ma page, il m'affiche bien le nombre de pages  (j'ai choisi 30 lignes par pages), j'ai 50 entrées dans ma base et il m'affiche 2 pages, donc jusque là ça va. mais par contre impossible d'afficher les résultats en question ! et j'ai beau regarder le code, je ne trouve pas ce qui cloche.

----------------------------
<!-- Nous allons afficher les résultats dans les cellules suivantes -->
<?

// on initialise les variables
$msg_page= 30; // donne le nombre de ligne a lister avant de passer a la page suivante
$page=1;
$ref=0;

// on compte le nombre d'enregistrement dans la table
$reponsesql=mysql_query("SELECT * FROM audio WHERE nav='$navaudio'");
$nbmsg = mysql_num_rows($reponsesql);

// on cherche a obtenir le nombre de page que l'on va devoir afficher
$nbpage=$nbmsg/$msg_page;
$nbpage=ceil($nbpage);

//on demarre la variable qui va contenir la chaine complete des liens vers les pages
$aff_gestion_page = "Page : ";

// on cree les liens pour chaque pages
while ($page<=$nbpage)
{
// si la page pour laquel on cree le lien est la page sur laquel on est, alors on ne cree pas de lien pour cette page
if($page==($_GET[idpage]/$msg_page)+1) $aff_gestion_page .= " $page
";
else $aff_gestion_page . = " [fiche_bootleg.php?id=<? echo $ligne['id']; ?> <? echo $ligne["date"];?>]</td>
<td width="12%"><? echo stripslashes($ligne["ville"]); ?></td>
<td width="5%"><? echo $ligne["source"]; ?></td>
<td width="5%"><? echo $ligne["son"]; ?></td>
<td width="5%"><? echo $ligne["support"]; ?></td>
<td width="26%" align="left"><? echo $ligne["genealogie"]; ?></td>
<td width="37%" align="left" class="texte"><? if ($ligne["matos"] != "") {
?> <? echo nl2br (stripslashes($ligne["matos"])); ?>
<? }

else {
?> <? echo (stripslashes($ligne["titre"])); ?>
<? }
?>
</td>
<?php echo'</tr>';
$i=1-$i;
}
?> 
-----------------------------------

il m'indique le message "Problème de sélection" (j'ai mis en gras) et ne me retourne pas les résultats... je sais pas si ça a un rapport avec le code pour l'alternance des couleurs des lignes de mon tableau, mais si jamais vous voyez ce qui cloche, ça m'aiderai fortement.

merci d'avance pour votre aide

12 réponses

Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007

Pareil que précedemment, moi je mettrais :

echo "$i ";

Vince
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007

Ca semble être un problème au niveau de ta requête SQL... je ne sais plus si c'est possible de passer la valeur d'un tableau comme tu le fais dans une chaine de caractères...

Essaie ca :

$query="SELECT * FROM audio WHERE nav='$navaudio' ORDER BY date LIMIT ".$_GET[idpage].",$msg_page";

Si ca ne marche toujours pas, vérifie que toutes tes variables dans la requête sont correctes ainsi que le nom de la table et des champs.

Vince
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007

D'ailleurs c'est $_GET['idpage'] ou
$_GET[$idpage] non ?...

Vince
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007

merci pour la réponse mais malheureusement, ça ne change rien
j'ai tout vérifié au niveau de mes variables et de ma table et il n'y a pas d'erreur

d'ailleurs, lorsque j'enlève  LIMIT '.$_GET[idpage].',$msg_page dans ma requète, il m'affiche bien toutes mes lignes...
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007

Tiens, j'avais pas fait gaffe mais pourquoi tu as deux arguments après LIMIT ?... (peut-être que c'est une possibilité que je ne connaissais pas...)

Vince
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007

euh ben c'est une bonne question !

c'est un code que j'ai repris sur ce site (j'ai mis le lien plus haut) donc je t'avoue que je ne sais pas si c'est par là que ça cloche. mais d'après les commentaires qu'il y avait, ça marchait normalement
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007

Essaie

$query="SELECT * FROM audio WHERE nav='$navaudio' ORDER BY date LIMIT ".$_GET['idpage'].",$msg_page";

au lieu de

$query="SELECT * FROM audio WHERE nav='$navaudio' ORDER BY date LIMIT '.$_GET[idpage].',$msg_page";

Vince
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007

ça ne fonctionne pas mieux...

j'ai réussi à trouver un autre code qui fonctionne, sauf que j'ai un problème pour les liens des paginations
j'aimerai qu'il me récupère une variable dans le lien, mais je n'arrive à l'insérer sans avoir un message d'erreur

<? }

/* Nb d'enregistrement total */
$nb_total = mysql_query("SELECT COUNT(*) AS nb_total FROM audio WHERE nav='$navaudio'");
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];

/* Pagination */
$nb_pages = ceil($nb_total / $pagination);
echo '[ Page :';

/* Boucle sur les pages */
for ($i = 1 ; $i <= $nb_pages ; $i++) {
if ($i == $page )
echo " $i";
else
echo "$i ";

}
echo ' ]

'; ?>

 
Messages postés
10
Date d'inscription
jeudi 26 octobre 2006
Statut
Membre
Dernière intervention
23 novembre 2007

"j'ai réussi à trouver un autre code qui fonctionne mais ..."

Pour moi c'est reculer pour mieux sauter, et par expérience, je pense pouvoir te dire que passer sur un autre code ne règle pas toujours le problème (même des fois pas du tout :o)
Si tu ne comprends pas tout dans un code,tu retrouvera d'autres problèmes dans un autre, chacun ayant "SA" syntaxe propre.
Le mieux est de se baser sur un seul, et de le bosser à fond, et comme tu le fait poster sur les forums pour demander de l'aide !
(le cas présent je ne peux t'aider faute de temps)
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007

merci pour ton aide,
ça fonctionne
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011

Il me semble avoir déjà eu ce cas à traiter...
Si le nombre de lignes que tu fixes par page est 30, je partirais avec une variable $debut égale à 0 et je créerais une variable incrément égale à 30 et à chaque appel de la page, j'incrémente... (par ex, la page s'appelle show.php. 1er appel: http://.....show.php)


<?php
$increment = 30;
if(!$debut) { $debut = 0; }
$fin = $debut + $increment;
//... construction de la requete
$requete = "..... LIMIT $debut, $fin;";
// exécution, affichage des lignes
// puis affichage d'un bouton ou d'un lien vers la page suivante
avec show.php?debut=$fin; // le début suivant est égal à cette fin ici
...




Si tu veux aller à une page quelqconque (le nombre total de pages possibles ayant été préalablement calculé et rangé dans une variable $nbpages), tu peux faire une liste déroulante pour aller de la page 1 à la page $nbpages. Les values de la liste démarrant à 0 et allant de $increment en $increment.


$page = 1;
for($n=0; $n<=$nbpages; $n+=30) {
   echo "<option value='$n'>$page";
   $page++;
}


La value selectionnée est à passer en paramètre à ta page :
show.php?debut=[valeur-selectionnée-dans-la-liste]


Je sais pas si ça te convient comme ça... ?
Si tu veux un exemple en action:
http://www.ruedescollectionneurs.com
rubrique: Boutique
Choisir un thème d'affiche => listage page/page ($increment=10. Réglable)
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011

Juste une p'tite correction :
for($n=0; $n<=$nbpages; $n+=$increment) {
...
:o)