TYBMHI Posté 7 Août 2008 Posté 7 Août 2008 Bonjour, Je vais essayer d'être le plus clair possible dans l'explication de mon problème. J'ai créer une page nommé "commentparpseudo.php" avec une pagination automatique pour pouvoir afficher des données (d'une base de donnée) sans créer physiquement plusieurs pages. Lorsqu'on arrive sur ma page tout semble fonctionner correctement. On voit: "Page : 1 2 3...etc " avec exactement le nombre de données par page que j'ai indiqué. Le problème est que lorsqu'on clique sur un numéro de page(peu importe lequel) il ne m'affiche plus aucune données. En fait je crois qu'il perd la variable indiquée ci-dessous en gras. Cela fait longtemps que j'essaie mais ca coince toujours. Merci d'avance. je précise que $_POST['choisirauteur'] est récupérer d'un menu déroulant d'une page nommée "commentpost.php". Je précise encore que j'ai ce même code sans la condition " WHERE pseudodupost='$pseudo' " sur une autre page et là tout fonctionne très bien. Voici mon code ( je suis un ultra débutant en php) : CODE <?php include ('../../repetition/bdd.php'); $_POST['choisirauteur']=$pseudo; // --------------- Etape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 5; // Essayez de changer ce nombre pour voir ) // On récupère le nombre total de messages $retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='$pseudo'"); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages ?> <p class="numeropage6"> <?php echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="commentparpseudo.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <p class=apparition> <?php // --------------- Etape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query("SELECT * FROM commentpost WHERE pseudodupost='$pseudo' ORDER BY id DESC LIMIT $premierMessageAafficher, $nombreDeMessagesParPage"); // Requête SQL $lyricspost=nl2br($lyricspost); // On fait une boucle pour lister tout ce que contient la table : while ($donnees = mysql_fetch_array($reponse) ) { $pseudo=$_POST['choisirauteur']; ?> <strong><span class="fixe">Commentaire fait par : </strong></span><span style="color:darkblue; font-weight:bolder;"> <?php echo $donnees['pseudo']; ?></span><br/> <span class="fixe">concernant le message n° : </span> <?php echo $donnees['numeromsg']; ?><br/><br/> <span class="fixe">Commentaires :</span> <br/><?php echo $donnees['message']; ?><br/><br/> <a href="commentparpseudo.php#haut"> HAUT <img src="image/fleche.gif" style="border:none;"></a><br/> <span class="lignepost"><img src="image/ligne2.gif" alt="separation" style="height:2px; width:15cm; position:absolute; left:0cm;"/></span><br/><br/><?php } mysql_close(); // Déconnexion de MySQL ?></p>
Portekoi Posté 7 Août 2008 Posté 7 Août 2008 Bonjour, Remplace ceci : $_POST['choisirauteur']=$pseudo; Par ceci : $pseudo = $_POST['choisirauteur'];/*Si les données sont transmises dans l'url...*/if ($pseudo==""){$pseudo = $_GET['choisirauteur'];} Remplace ceci : <?phpecho 'Page : ';for ($i = 1; $i <= $nombreDePages; $i++){echo '<a href="commentparpseudo.php?page=' . $i . '">' . $i . '</a> ';}?> Par ceci : <?phpecho 'Page : ';for ($i = 1; $i <= $nombreDePages; $i++){echo '<a href="commentparpseudo.php?page=' . $i . '&choisirauteur='.$pseudo.'">' . $i . '</a> ';}?> Bon courage Portekoi
TYBMHI Posté 7 Août 2008 Auteur Posté 7 Août 2008 Je te remercie vivement de ta réponse car j'étais sur le point d'abandonner. Alors voilà mes résultats avec tes indications : J'ai fais un grand pas en avant mais tout n'est pas résolu. En fait maintenant quand je clique sur un numéro de page il m'affiche bien le nombre de donné voulu mais n'affiche plus les numéro de page ( page : 1 2 3 4). Il marque simplement : "Page :". Donc par exemple je ne peux plus aller sur la page 1 ou 3 ou autre.
TYBMHI Posté 7 Août 2008 Auteur Posté 7 Août 2008 Quand je relis mon deuxieme message je ne suis pas sur d'avoir été assez clair. Les numéros de page apparaissent lorsqu'on arrive pour la première fois sur la page. quand on clique sur un numero il nous affiche effectivement les bonnes donnees mais cette fois les numeros de page ne sont plus là.
Portekoi Posté 8 Août 2008 Posté 8 Août 2008 Bonjour, Franchement, je vois pas trop à moins que $nombreDePages ne vale que '1' quand tu n'es plus sur la première page... Essaie de l'afficher pour voir sa valeur quand tu cliques sur un numéro de page. Portekoi
TYBMHI Posté 8 Août 2008 Auteur Posté 8 Août 2008 Je suis désolé mais ca fait à peine 3 semaines que je me suis mis au PHP et là je ne vois pas vraiment ce que tu veus dire. Comment afficher la valeur de $nombreDePages quand je clique sur un numéro de page. De plus, si j'ai bien compris, si $nombreDePages ne valait que 1 quand je ne suis plus sur la première page il devrait toutefois afficher :"Page : 1 " alors que l'affichage est le suivant après avoir cliqué sur une page : "Page : ". Je pense que le problème doit être dans la boucle qui fait apparaitre les numéros de pages : CODE <?php include ('../../repetition/bdd.php'); $pseudo = $_POST['choisirauteur']; /*Si les données sont transmises dans l'url...*/ if ($pseudo==""){ $pseudo = $_GET['choisirauteur']; } // --------------- Etape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 6; // Essayez de changer ce nombre pour voir ) // On récupère le nombre total de messages $retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='".$_POST['choisirauteur']."'"); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages ?> <p class="numeropage6"> <?php echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="commentparpseudo.php?page=' . $i . '&choisirauteur='.$pseudo.'">' . $i . '</a> '; } ?> </p> c'est vraiment dommage d'être aussi prêt du but et de ne pas pouvoir utiliser une tel fonction PHP. Dans tous les cas merci de ton aide.
Portekoi Posté 8 Août 2008 Posté 8 Août 2008 remplace ceci : echo 'Page : '; Par cela : echo '<br><br>---> <b>Valeur de nombredepages : ' . $nombreDePages . '</b><br><br>';echo 'Page : ';
TYBMHI Posté 8 Août 2008 Auteur Posté 8 Août 2008 Voilà ce que ca m'affiche après avoir cliqué sur un numéro de page : ---> Valeur de nombredepages : 0
Portekoi Posté 8 Août 2008 Posté 8 Août 2008 Ok Remplace ceci : $retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='$pseudo'"); Par cela : $retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='$pseudo'");echo "<br><br> ---> Requete : SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='$pseudo'<br><br>";
TYBMHI Posté 8 Août 2008 Auteur Posté 8 Août 2008 Yeeeeeessssssssssssss ! Merci ! Merci ! Merci ! Merci ! Merci ! Merci ! Ca marche niquel. Depuis le temps, personne ne m'avait trouver la solution. Merci mille fois !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant