Problème avec rowCount

TheMexsios

TheMexsios Le 5 juin 2017 à 16:30 (Édité le 25 janvier 2019 à 17:53)

Salut a tous, je suis en train de créer un site et j'ai utilisé le code de PrimFx pour créer une barre de recherche.Seulement j'ai un problème puisque quand je vais sur mon site cela me met : Fatal error: call to member function rowCount() on boolean in.......on line 10.
Voici ce qu'il y a a la ligne 10:
if($articles->rowCount() == 0) {



(dsl si je suis un galérien ???? )
Pouvez vous me dire pourquoi cela affiche ce message d'erreur ?


TheOldNoob

TheOldNoob Le 5 juin 2017 à 17:24

Salut, 

montre nous l'ensemble de ton code
TheMexsios

TheMexsios Le 5 juin 2017 à 19:16

Voici mon code : barre de recherche.php

1    <meta charset="utf-8" />
    <?php

    $bdd = new PDO('mysql:host=127.0.0.1;dbname=u532172745_free;charset=utf8','u532172745_damie','Db85012345');
5
     $articles = $bdd->query('SELECT titre FROM articles ORDER BY id DESC');
    if(isset($_GET['q']) AND !empty($_GET['q'])) {
     $q = htmlspecialchars($_GET['q']);
     $articles = $bdd->query('SELECT titre FROM articles WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
10   if($articles->rowCount() == 0) {
      $articles = $bdd->query('SELECT titre FROM articles WHERE CONCAT(titre, contenu) LIKE "%'.$q.'%" ORDER BY id DESC');
      }
     }
     ?>
15    <form method="GET">
      <input type="search" name="q" placeholder="Recherche..." />
      <input type="submit" value="Valider" />
     </form>
     <?php if($articles->rowCount() > 0) { ?>
20     <ul>
     <?php while($a = $articles->fetch()) { ?>
      <li><?= $a['titre'] ?></li>
      <?php } ?>
      </ul>
25    <?php } else { ?>
       Aucun résultat pour: <?= $q ?>...
       <?php } ?>

Et voici l'erreur que cela m'affiche:
Fatal error: Call to a member function rowCount() on boolean in /home/u532172745/public_html/Free-Music-Copyright/core/barre de recherche.php on line 19
et de temps en temps j'ai la meme erreur mais a la ligne 10. 
TheOldNoob

TheOldNoob Le 5 juin 2017 à 20:34

je pense qu'il manque un bindValue et un execute() entre les lignes 9 et 10
TheMexsios

TheMexsios Le 5 juin 2017 à 21:19

Étant débutant en PHP, je voudrais savoir qu'est qu'un bindValue et comment utilise t_on le bindValue et l'exécute.
TheOldNoob

TheOldNoob Le 5 juin 2017 à 21:36

non, mais en plus je dis de la merde, t'a besoin de ni l'un ni l'autre pour un requete query 😋

Je viens de regardé mon code pour mes recherches et j'utilise une requete prepare c'est pour ça. Du coup, j'ai pas lu la totalité de ton code ^^

Je te met mon code, que j'ai utilisé pour une recherche sur le site d'un resto 

if(!empty($_GET) && isset($_GET['search']) && !empty($_GET['search'])) { // Si recherche on affiche le résultat // on recherche les paramètres
   $resultatSearch = trim(strip_tags($_GET['search']));
   //var_dump($resultatSearch);
   $res = $pdo->prepare('SELECT nickname, title, content, link, date_publish FROM users RIGHT JOIN recipes ON users.id = recipes.id_user WHERE (title LIKE :maRecherche) OR (content LIKE :maRecherche) ORDER BY date_publish ASC');
   $res->bindValue(':maRecherche', '%'.$resultatSearch.'%');
   $res->execute();
   $recipes = $res->fetchAll(PDO::FETCH_ASSOC);
   
   if(empty($recipes)){
      $error = 'Aucun résultat à votre recherche !';
   }
   $resultatSearchReplace = '<span style="background:yellow">'.$resultatSearch.'</span>';
   $resultatSearchRegex = '/'.$resultatSearch.'/';
} 
else if(isset($_GET['id']) && !empty($_GET['id'])) { /*Si on veux voir une recette en particulier */
   $idRecipe = $_GET['id'];
   if(!is_numeric($idRecipe)){
      $error = 'Aucun résultat ne correspond !';
   }
   else {
      $res = $pdo->prepare('SELECT nickname, title, content, link, date_publish FROM users RIGHT JOIN recipes ON users.id = recipes.id_user WHERE recipes.id = :idRecipe');
      $res->bindValue(':idRecipe', intval($idRecipe), PDO::PARAM_INT);
      if($res->execute()) {
         $recette = $res->fetch(PDO::FETCH_ASSOC);
         $viewRecipe = true;
         //Si aucune recette n'a été trouvée
         if(empty($recette)) {
            $error = 'Aucun résultat ne correspond !';   
         }
      } else {
         die(var_dump($res->errorInfo()));
      }
   }
}
/*******************************   AFFICHER TOUTES LES RECETTES AVEC AUTEUR   ***********************/
else { // sinon on liste toutes les recettes
   $res = $pdo->prepare('SELECT nickname, title, content, link, date_publish FROM users RIGHT JOIN recipes ON users.id = recipes.id_user ORDER BY date_publish ASC');
   $res->execute();
   // Retourne toutes les entrées de la table "recipe" sous forme de array()
   $recipes = $res->fetchAll(PDO::FETCH_ASSOC);
}
TheMexsios

TheMexsios Le 5 juin 2017 à 21:44

On merci, je testerai demain puis je te dis si cela fonctionne
ViverticProg

ViverticProg Le 11 juin 2017 à 22:02

Yo TeMaxsios,
je sais pas si tu as trouvé la solution mais si ce n'est pas le cas essaye de mettre ton rowCount() dans une variable que tu définis juste au dessus peu être que ça te réglera ton erreur.
;D 
Balatharas

Balatharas Le 13 juin 2017 à 18:04

@ViverticProg non mais ça revient exactement au même
Le problème vient de la variable $articles
x_codeur

x_codeur Le 20 juillet 2023 à 17:19

@ViverticProg puis-je te demander qu'est ce que tu entend par l'erreur vient de $articles. Et comment le resoudre

fuxeur

fuxeur Le 22 juillet 2023 à 18:34

euh @themexsios t'as literalement donner ta base de donnes dans "mysql:host=127.0.0.1;dbname=u532172745_free;charset=utf8','u532172745_damie','Db85012345'"

Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte