Aller au contenu

problème de code de pagination en PHP


Sujets conseillés

Posté

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 :o)

// 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>

Posté

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 :

<?php
echo 'Page : ';
for ($i = 1; $i <= $nombreDePages; $i++)
{
echo '<a href="commentparpseudo.php?page=' . $i . '">' . $i . '</a> ';
}
?>

Par ceci :

<?php
echo 'Page : ';
for ($i = 1; $i <= $nombreDePages; $i++)
{
echo '<a href="commentparpseudo.php?page=' . $i . '&choisirauteur='.$pseudo.'">' . $i . '</a> ';
}
?>

Bon courage

Portekoi

Posté

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.

Posté

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à.

Posté

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

Posté

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 :o)

// 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.

Posté

remplace ceci :

echo 'Page : ';

Par cela :

echo '<br><br>---> <b>Valeur de nombredepages : ' . $nombreDePages . '</b><br><br>';
echo 'Page : ';

Posté

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>";

Posté

Yeeeeeessssssssssssss ! Merci ! Merci ! Merci ! Merci ! Merci ! Merci ! Ca marche niquel. Depuis le temps, personne ne m'avait trouver la solution. Merci mille fois !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...