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

Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
- - Dernière réponse : 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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007
3
Merci
Pareil que précedemment, moi je mettrais :

echo "$i ";

Vince

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 214 internautes nous ont dit merci ce mois-ci

Commenter la réponse de eplanet
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007
0
Merci
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
Commenter la réponse de eplanet
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007
0
Merci
D'ailleurs c'est $_GET['idpage'] ou
$_GET[$idpage] non ?...

Vince
Commenter la réponse de eplanet
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
0
Merci
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...
Commenter la réponse de bedoc
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007
0
Merci
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
Commenter la réponse de eplanet
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
0
Merci
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
Commenter la réponse de bedoc
Messages postés
112
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2007
0
Merci
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
Commenter la réponse de eplanet
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
0
Merci
ç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 ' ]

'; ?>

 
Commenter la réponse de bedoc
Messages postés
10
Date d'inscription
jeudi 26 octobre 2006
Statut
Membre
Dernière intervention
23 novembre 2007
0
Merci
"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)
Commenter la réponse de TestOunet_0
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
0
Merci
merci pour ton aide,
ça fonctionne
Commenter la réponse de bedoc
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011
0
Merci
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)
Commenter la réponse de rethenor
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011
0
Merci
Juste une p'tite correction :
for($n=0; $n<=$nbpages; $n+=$increment) {
...
:o)
Commenter la réponse de rethenor