Probleme avec mon systeme de pages

Probleme avec mon systeme de pages - PHP - Programmation

Marsh Posté le 15-08-2005 à 23:46:12    

Salut,
 
J'essaye de faire un systeme de pages mais j'ai cette erreur lorsque j'execute le script ci-dessous :
 

Citation :


Warning: Division by zero in /var/www/free.fr/1/f/trichkreu/livredor.php on line 131
Page : 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 '' . 0 . ', ' .' at line 1


 

Code :
  1. $nbmpp = 3;
  2. $nb_post = mysql_query("SELECT COUNT(*) AS nb_entrees FROM r_comments" );
  3. $nombre = mysql_fetch_array($nb_post);
  4. $nbm = $nombre['nb_entrees'];
  5. echo 'Il y a <b>' . $nbm . '</b> post(s) sur le Livre d\'Or.&nbsp;<a href="all.php" target="blank">Afficher tous les posts</a><br /><br />';
  6. $nbp = ceil($nbm / $nbmpp);
  7. echo 'Page : ';
  8. for ($i = 1 ; $i <= $nbp ; $i++)
  9. {
  10.    echo '<a href="livredor.php?page=' . $i . '">' . $i . '</a><br /><br /> ';
  11. }
  12. if (isset($_GET['page']))
  13. {
  14.    $page = intval($_GET['page']);
  15. }
  16. else
  17. {
  18.    $page = 1;
  19. }
  20. $pma = ($page - 1) * $nbmpp;
  21. if ($nbm != NULL)
  22. {
  23. $recup = mysql_query("SELECT * FROM r_comments ORDER BY id DESC LIMIT ' . $pma . ', ' . $nbmpp" ) or die(mysql_error());
  24. while ($affposts = mysql_fetch_array($recup))
  25. {
  26. ?>
  27. /* Affichage du post */
  28. <?php
  29. }
  30. }
  31. ?>


 
 
je pense que le chiffre trouvé donne zéro et que ca fait tout planter mais je ne suis pas sur...
 
Merci d'avance :jap:


---------------
Feaks Forum
Reply

Marsh Posté le 15-08-2005 à 23:46:12   

Reply

Marsh Posté le 15-08-2005 à 23:55:39    

La deuxième, c'est surtout que la requête veut rien dire (tips : colle ta requête dans une variable et affiche la variable en question dans le die quand tu débug). Là, ça donne : SELECT * FROM r_comments ORDER BY id DESC LIMIT '.0.','.3. A part les points et ', c'est syntaxiquement correct :D

Reply

Marsh Posté le 16-08-2005 à 03:10:51    

Merci de la réponse :hello:
 
Mais euh... j'suis surement tordu, mais j'ai pas compris comment t'arrives à une requete du type SELECT * FROM r_comments ORDER BY id DESC LIMIT '.0.','.3 ?
 
J'ai tenté d'afficher ma requete dans le die, mais ca me laisse du vide... (ca n'est pas signe que ca fonctionne puisque si je remet le mysql_error() l'erreur réapparaît :d)
 
En fin de compte ça ne marche toujours pas http://bigoizo.free.fr/style_emoticons/default/allergik.gif
 
Tu pourrais approfondir stp? :)


Message édité par Multinickname le 16-08-2005 à 03:34:11

---------------
Feaks Forum
Reply

Marsh Posté le 16-08-2005 à 07:21:38    

Reflechi pas, virre les ' et les . qui servent a rien


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-08-2005 à 12:59:41    

C'est bien ce que j'ai essayé de faire mais ca me plante la même erreur mais avec les variables cette fois :  
 

Citation :


Warning: Division by zero in /var/www/free.fr/1/f/trichkreu/livredor.php on line 131
Page : 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 '$pma, $nbmpp' at line 1


 
:spamafote:


---------------
Feaks Forum
Reply

Marsh Posté le 16-08-2005 à 13:41:23    

Et la ligne 131 c'est quoi?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-08-2005 à 13:48:43    

Code :
  1. $nbp = ceil($nbm / $nbmpp);


 
Apparement il me dit que $nbmpp vaut 0? :heink: Non?


---------------
Feaks Forum
Reply

Marsh Posté le 16-08-2005 à 14:02:16    

Multinickname a écrit :

Code :
  1. $nbp = ceil($nbm / $nbmpp);


 
Apparement il me dit que $nbmpp vaut 0? :heink: Non?


oui, mais apprends à debugger tu trouveras ton erreur tout seul : mets des echo de tes variables de compte de pages aux bons endroits pour déterminer leur valeur
 
 
de plus  
- s'amuser à verifier $_GET['page'] dans un for{} c'est pas bien propre
- $nbm ne peut etre égal à NULL : c'est soit 0, soit > 0
 
 

Reply

Marsh Posté le 16-08-2005 à 14:29:52    

Bah non lorsque je met un echo dans mon die, ca me provoque une erreur, c'est ça que je comprends pas :/
J'dois mal comprendre...
 
Pour le reste, c'est corrigé :jap:


---------------
Feaks Forum
Reply

Marsh Posté le 16-08-2005 à 14:48:37    

J'ai finalement trouvé, ma variable $nbmpp était mal placée  
 
et les variables dans la requete devaient etre entourées de {}
 
Merci pour l'aide quand même :hello:


---------------
Feaks Forum
Reply

Marsh Posté le 16-08-2005 à 14:48:37   

Reply

Marsh Posté le 16-08-2005 à 16:01:36    

Multinickname a écrit :

Merci de la réponse :hello:
 
Mais euh... j'suis surement tordu, mais j'ai pas compris comment t'arrives à une requete du type SELECT * FROM r_comments ORDER BY id DESC LIMIT '.0.','.3 ?
 
J'ai tenté d'afficher ma requete dans le die, mais ca me laisse du vide... (ca n'est pas signe que ca fonctionne puisque si je remet le mysql_error() l'erreur réapparaît :d)
 
En fin de compte ça ne marche toujours pas http://bigoizo.free.fr/style_emoti [...] lergik.gif
 
Tu pourrais approfondir stp? :)


 
je vais approfondir parce que le reste de la conversation (y compris le "j'ai finalement trouvé" ) montrent que la solution tient plus du bidonage que d'une compréhension quelconque :D
 
1. En php, tu sais probablement qu'une chaine se met entre " (à l'intérieur desquels une variable est interpretée) ou à l'intérieur de ' (ou rien n'est interpreté). L'un ou l'autre. Mais une chaine que tu débutes avec " doit se finir avec " (et la même chose pour '). Pas question donc d'écrire "bonjour j'essaye de créer une chaine en php'.
 
2. Le point est un symbole de concaténation entre chaines. Des chaines complètes, avec le " ou ' à chaque extrémité. Si tu le case à l'intérieur d'une chaine, c'est un symbole de ponctuation on ne peut plus classique.
 
Conclusion, les variables de ta requête ne devaient pas être entourée de {} (elles ne sont mêmes utilisées que dans des cas très particuliers) mais par une simple correction de la manière dont tu avais écrit ta requête (c'est les bases en plus).

Reply

Marsh Posté le 17-08-2005 à 20:42:30    

En effet ouais c'était une erreur con, avec du recul :d
 
Merci pour l'explication :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed