Bonjour je suis débutant en PHP et j'aimerais savoir pourquoi j'ai le message suivant :

Parse error: parse error in C:\wamp\www\Nouveau dossier\include\partners.php on line 14

J'essaie actuellement de réaliser un système de pagination en suivant le tutoriel video traitant du sujet.
Mon code est le suivant :

<?php $page_title = "<title>A</title>"; ?>
<div class="wrap">
    <ul class="partnerlist">
        <?php
        $retour = $bdd->query('SELECT COUNT(id) as nbPartner FROM partner');
        $donnees = $retour->fetch();

        $nbPArtner = $donnees'nbPartner'];
        $perPage = 12;
        $cPage = 1;

        $retour->closeCursor(); // Fermeture requête

        $retour = $bdd->query('SELECT titre, logo FROM partner ORDER BY id DESC LIMIT '.(($cPage-1)*$perPage).',$perPage';
        // On affiche les entrées
        while ($donnees = $retour->fetch())
        {
        ?>
            <li><a style="background: url('img/partner/<?php echo $donnees'logo']; ?>') no-repeat center center white;" href="index.php?p=partner"><?php echo $donnees'titre']; ?></a></li>
        <?php
        }
        $retour->closeCursor(); // Fermeture requête
        ?>
        <div class="clear"></div>
    </ul>
</div>

Cela fonctionnait avant que je n'ajoute les variables dans le DESC LIMIT de ma requête SQL.

Merci d'avance à celles et/ou ceux qui prendront un peu de temps pour m'aider à résoudre ce problème. =)

6 réponses


Archetyp
Auteur
Réponse acceptée

J'y suis enfin arrivé ! =D

$retour = $bdd->query("SELECT titre, logo FROM partner ORDER BY id DESC LIMIT ".(($cPage-1)*$perPage).",".$perPage);

Encore merci à toi Csbilouze de t'êtres penché sur mon problème. ^^

salut,

il ne te manque pas une parenthèse ligne 14?

++

Archetyp
Auteur

Merci Csbilouze, effectivement il en manque une à la ligne 14, j'ai donc corrigé :

$retour = $bdd->query('SELECT titre, logo FROM partner ORDER BY id DESC LIMIT '.(($cPage-1)*$perPage).',$perPage');

J'obtiens maintenant ce message :

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 '$perPage' at line 1' in C:\wamp\www\Nouveau dossier\include\partners.php:14 Stack trace:
#0 C:\wamp\www\Nouveau dossier\include\partners.php(14): PDO->query('SELECT titre, l...') 
#1 C:\wamp\www\Nouveau dossier\index.php(18): include('C:\wamp\www\Nou...')
#2 {main} thrown in C:\wamp\www\Nouveau dossier\include\partners.php on line 14

Je me penche dessus un peu plus tard car je n'est pas le temps de suite, j'espère que je pourrais gérer seul ce problème car pour le moment je ne comprend pas bien le message d'erreur.

$retour = $bdd->query('SELECT titre, logo FROM partner ORDER BY id DESC LIMIT '.(($cPage-1)*$perPage).',$perPage');

je crois que ton erreur vient de la, il te manquerait une quote et une concaténation, attention les simples quote n’interprète pas le contenu d'une variable, seule les doubles quotes le fond. Ta requete est mal "quoté".

Dans une requete sql, je te conseille d'utiliser les doubles quotes, essai de faire ceci, copie/colle simplement

$retour = $retour = $bdd->query("SELECT titre, logo FROM partner ORDER BY id DESC LIMIT '".(($cPage-1)*$perPage)."','".$perPage."'");
Archetyp
Auteur

J'ai copié/collé le code est j'obtiens cela :

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','12'' at line 1' in C:\wamp\www\Nouveau dossier\include\partners.php:14 Stack trace: 
#0 C:\wamp\www\Nouveau dossier\include\partners.php(14): PDO->query('SELECT titre, l...') 
#1 C:\wamp\www\Nouveau dossier\index.php(18): include('C:\wamp\www\Nou...') 
#2 {main} thrown in C:\wamp\www\Nouveau dossier\include\partners.php on line 14

J'avais aussi pensé à une erreur dans la concaténation et c'est d'ailleurs en essayant de la modifier que j'avais retiré la parenthèse il me semble. Bref d'après ce que je comprend du message d'erreur la requête SQL est encore mal écrite et je vais réessayer de la modifier.
Merci du conseil dorénavant j'utiliserais la double quote dans mes requêtes SQL. =)

c'est cool que tu y sois parvenu, bonne continuation a toi :)