Listing PHP sur plusieurs pages.???

Résolu/Fermé
willybaby Messages postés 104 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 20 mars 2011 - 11 mars 2009 à 14:59
 le père - 11 mars 2009 à 15:21
Bonjour,
J'ai un petit soucis voila j'ai une page qui va chercher des données dans ma base mysql et je fais un listing sur 2 ou plusieurs pages en faisant afficher que 5 réponses par pages, voici mon code :


mysql_connect("localhost", "root", "");
mysql_select_db("monde");
$query=mysql_query("select code_categorie from categorie where lib_categorie='".$choixlibcat."'");
while ($result=mysql_fetch_array($query))
{
$codecat=$result['code_categorie'];
}


$messagesParPage=5; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(code_idee) AS total FROM IDEE where code_categorie="'.$codecat.'"'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.


//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);

if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

// La requête sql pour récupérer les messages de la page actuelle.


$retour_messages=mysql_query('select code_idee, comm_idee, pseudo_user, date_idee, cool_idee, moyen_idee, nul_idee, code_categorie from IDEE where code_categorie="'.$codecat.'" ORDER BY code_idee ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'')or die(mysql_error());
echo '<div style="position: absolute; left: 170; top:110">';
while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{

$code_idee = $donnees_messages['code_idee'];
$code_categorie = $donnees_messages['code_categorie'];
$comm_idee = $donnees_messages['comm_idee'];
$pseudo_user = $donnees_messages['pseudo_user'];
$date_idee = $donnees_messages['date_idee'];
$cool_idee = $donnees_messages['cool_idee'];
$moyen_idee = $donnees_messages['moyen_idee'];
$nul_idee = $donnees_messages['nul_idee'];


//Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.

echo 'ce que j'affiche c'est pas important...';

//J'ai rajouté des sauts à la ligne pour espacer les messages.
}
echo '</div>';
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo '<form id="php" method="post" action="choixcat.php?page='.$i.'"><input type="hidden" name="pseudo" value="'.$uti_pseudo.'"><input type="hidden" name="mdp" value="'.$uti_mdp.'"><input type="submit" value='.$i.'></form>';

}
}
echo '</p>';


Bon je récupére bien les données d'une autre page et la premiére page avec les données récupéré dans la base fonctionne bien mais dès que je clique sur le bouton de la page 2 ben la ca m'affiche le message suivant:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-5, 5' at line 1

je suppose qu'il y a un soucis dans le calcul car je comprends pas le -5 mais je n'avance pas la

merci de m'aider...

1 réponse

Bonjour

si $total vaut 0, alors $nombreDePages vaut 0, alors $pageActuelle vaut aussi 0 et $premiereEntree vaut -5.

Reste à comprendre pourquoi $total=0.
Si la table dont tu comptes les lignes est vide, c'est normal.
0