Pb requète sql sur plusieurs pages

Résolu
bedoc Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007 - 18 juil. 2007 à 11:05
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011 - 25 juil. 2007 à 20:59
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

eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 15:07
Pareil que précedemment, moi je mettrais :

echo "$i ";

Vince
3
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 11:30
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
0
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 11:33
D'ailleurs c'est $_GET['idpage'] ou
$_GET[$idpage] non ?...

Vince
0
bedoc Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 11:47
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...
0

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

Posez votre question
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 11:52
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
0
bedoc Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 12:01
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
0
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 12:04
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
0
bedoc Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 13:40
ç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 ' ]

'; ?>

 
0
TestOunet_0 Messages postés 10 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 23 novembre 2007
18 juil. 2007 à 14:22
"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)
0
bedoc Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 15:30
merci pour ton aide,
ça fonctionne
0
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011
25 juil. 2007 à 20:57
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)
0
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011
25 juil. 2007 à 20:59
Juste une p'tite correction :
for($n=0; $n<=$nbpages; $n+=$increment) {
...
:o)
0
Rejoignez-nous