Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete préparée avec LIMIT

problème de variable

Sujet résolu
    9 novembre 2010 à 2:05:11

    Bonjour, je suis débutant et me lance dans la fabrication d'un forum pour mon site internet.

    J'ais le problème suivant concernant la pagination sur ma page theme.php:

    Ma requete ne marche pas pour l'affichage des sujet a cause des valeur limit.

    Mon code pour la requete est le suivant:
    <?php 
    $req = $bdd->prepare('SELECT * FROM forum_sujets WHERE theme = ? ORDER BY date_derniere_reponse DESC LIMIT ?, ?');
    $req->execute(array($_GET['theme'], $lim_aff_min, $lim_aff_max) ) or die(print_r($req->errorInfo()));
    ?>
    


    Mes variables sont issues des calculs suivants:
    <?php
    $aff_page = 0;
    $nb_suj_par_page = 20;
    $lim_aff_min = ($_GET['page']-1)*$nb_suj_par_page;
    $lim_aff_max = ($_GET['page']-1)*$nb_suj_par_page + $nb_suj_par_page;
    $nb_page = ceil ($nb_sujets / $nb_suj_par_page);
    ?>
    


    avec pour l'affichage des liens vers les pages 1,2,3....ect:
    <?php
    while ($aff_page < $nb_page)
       {
         $aff_page ++;						
         ?> <a href="theme.php?page=<?php echo $aff_page ?>&amp;theme=<?php echo $_GET['theme'] ?>"><?php echo $aff_page ?></a><?php	
       }
    ?>
    


    Enfin mon code d'erreur est le suivant lorsque je lance la requete:

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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', '20'' at line 1' in C:\wamp\www\tir\forum\theme.php:85 Stack trace: #0 C:\wamp\www\tir\forum\theme.php(85): PDOStatement->execute(Array) #1 {main} thrown in C:\wamp\www\tir\forum\theme.php on line 85

    Merci de bien vouloir m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      9 novembre 2010 à 4:24:40

      Mysql pense que tes chifres sont des chaines de caracteres!
      Voici un exemple (comme je suis gentil :p )
      <?php
      $req = $bdd->prepare('SELECT * FROM forum_sujets WHERE theme = ? ORDER BY date_derniere_reponse DESC LIMIT ?, ?');
      $req->bindValue(1, $_GET['theme'], PDO::PARAM_STR);
      $req->bindValue(2, $lim_aff_min, PDO::PARAM_INT);
      $req->bindValue(3, $lim_aff_max, PDO::PARAM_INT);
      $req->execute() or die(print_r($req->errorInfo()));
      ?>
      

      Copier ... Coller
      PS: les prochaines fois, pense a aller chercher dans la doc php :D
      • Partager sur Facebook
      • Partager sur Twitter
      Je Suis Uniquement Humain - JSUH - IAOH
        11 novembre 2010 à 2:07:16

        Merci beaucoup réponse claire et efficace! Ca marche
        • Partager sur Facebook
        • Partager sur Twitter

        requete préparée avec LIMIT

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown