Le 02/07/2017 à 10:04

j'ai remplacer la variable $query par $reponse et voici le message du log d'erreur que je recoit:

Fatal error: Uncaught Error: Call to a member function bindValue() on boolean in /var/www/n3dmo/forum/index.php:100 Stack trace: #0 {main} thrown in /var/www/n3dmo/forum/index.php on line 100

en lisant le manuel php sur: http://php.net/manual/fr/pdostatement.bindvalue.php j'arrive pas a corriger cet erreur.

Le 02/07/2017 à 12:30

En fait sa m'affichait cet erreur car j'avais aussi remplacé $reponse=$db->prepare("code sql");
par $reponse=$db->query("code sql");. une fois corrigé, je rmarque que:

1 est bien la bonne valeur pour "lvl" ;j'ai bien regardé comment fonctionne la methode execute() et bindvalue sur le site de php manual.
j'ai regardé bien la log d'erreur il n'y a rien comme erreur.

la base de donnée conitent bien les informations recherché

Le 02/07/2017 à 16:05

Non c'est

$reponse=$bd->prepare('requete sql');
$reponse->execute(array('lvl' => 1));

Pas besoin de bindValue. La méthode execute concerne l'objet $reponse, pas $bd.
Cette signature utilise du bbcode. Vous pouvez apprendre ici !

Le 02/07/2017 à 17:36

Sa me renvoi ce message: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Le 02/07/2017 à 17:45

pour edité ce code j'ai suivis le tutoriel disponible sur openclassrooms "créer son forum de toute pièce"

Le 03/07/2017 à 16:57

Quel est le code (juste la partie intéressante, pas tout pitié) ? Si la requête contient un "?" il faut un "array($lvl)" et si la requête contient un ":lvl" alors il faut un "array('lvl' => $lvl).
Cette signature utilise du bbcode. Vous pouvez apprendre ici !

Le 03/07/2017 à 21:18

bonsoir voici la partie interessante du code:

$reponse=$db->prepare('SELECT cat_id, cat_nom,
forum_forum.forum_id, forum_name, forum_desc, forum_post,
forum_topic, auth_view, forum_topic.topic_id,
forum_topic.topic_post, post_id, post_time, post_createur,
membre_pseudo,
membre_id
FROM forum_categorie
LEFT JOIN forum_forum ON forum_categorie.cat_id =
forum_forum.forum_cat_id
LEFT JOIN forum_post ON forum_post.post_id =
forum_forum.forum_last_post_id
LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_membres ON forum_membres.membre_id =
forum_post.post_createur
WHERE auth_view <= :lvl
ORDER BY cat_ordre, forum_ordre DESC');
$reponse->bindvalue(:lvl, $lvl, PDO::PARAM_INT);
$reponse->execute();
?>

Le 04/07/2017 à 23:23

Bonsoir moi je pense que le probleme vient soit du SELECT soit de execute() car j'éssaye d'afficher le contenu de $reponse et sa me met ceci:

PDOStatement Object ( [queryString] => SELECT cat_id, cat_nom, forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, forum_topic.topic_post, post_id, post_time, post_createur, membre_pseudo, membre_id FROM forum_categorie LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_id LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur WHERE auth_view <= :lvl ORDER BY cat_ordre, forum_ordre DESC )

ce qui est absurde d'après moi.

Le 05/07/2017 à 00:00

Je suis vraiment depasé en local sa donne super bien. voici le resultat de print_r($data); exécuté en local:

Array ( [cat_id] => 3 [0] => 3 [cat_nom] => Animation 3D [1] => Animation 3D [forum_id] => 6 [2] => 6 [forum_name] => Animer vos personnages avec physique [3] => Animer vos personnages avec physique [forum_desc] => Comment animer un personnages en appliquant le modificateur physique dans 3ds max 2014 [4] => Comment animer un personnages en appliquant le modificateur physique dans 3ds max 2014 [forum_post] => 0 [5] => 0 [forum_topic] => 0 [6] => 0 [auth_view] => 0 [7] => 0 [topic_id] => [8] => [topic_post] => [9] => [post_id] => [10] => [post_time] => [11] => [post_createur] => [12] => [membre_pseudo] => [13] => [membre_id] => [14] => .............


Le 05/07/2017 à 00:02

Il faut des guillemets autour de :lvl dans le bindValue.
Cette signature utilise du bbcode. Vous pouvez apprendre ici !