bervellearnaud

04 Avril 2021 à 18:59 (Édité)

71

Problème barre de recherche PHP/AJAX

Bonjour,

J'aurai besoin d'aide concernant la barre de recherche PHP/AJAX.

J'ai suivi le tutoriel jusqu'a la fin et aucune problème.

Par la suite j'ai essayer de l'adapter à mon site mais à ce moment là, je rencontre un probleme 😟


Voici les erreurs qui s'affichent :


Notice: Undefined variable: db in C:\xampp\htdocs\www\boutique\fonction\recherche_produit.php on line 8


Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\www\boutique\fonction\recherche_produit.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\www\boutique\fonction\recherche_produit.php on line 8


connexionDB.php

<?php
 // Déclaration d'une nouvelle classe
 class connexionDB {
  private $host  = 'localhost';  // nom de l'host
  private $name  = 'mode_homme';   // nom de la base de donnée
  private $user  = 'root';    // utilisateur
  private $pass  = '';    // mot de passe
  //private $pass  = '';     // Ne rien mettre si on est sous windows
  private $connexion;
           
  function __construct($host = null, $name = null, $user = null, $pass = null){
   if($host != null){
    $this->host = $host;      
    $this->name = $name;      
    $this->user = $user;      
    $this->pass = $pass;
   }
   try{
    $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
     $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
     PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
   }catch (PDOException $e){
    echo 'Erreur : Impossible de se connecter à la BDD !';
    die();
   }
  }
   
  public function query($sql, $data = array()){
   $req = $this->connexion->prepare($sql);
   $req->execute($data);
   return $req;
  }
   
  public function insert($sql, $data = array()){
   $req = $this->connexion->prepare($sql);
   $req->execute($data);
  }
 }
  
 // Faire une connexion à votre fonction
 $DB = new connexionDB();
?>


recherche_produit.php

<?php
 require_once('../bd/connexionDB.php');
 
 if(isset($_GET['user'])){
  $user = (String) trim($_GET['user']);
 
  $req = $DB->query("SELECT *
   FROM produit
   WHERE titre LIKE ?
   LIMIT 10",
   array("$user%"));
 
  $req = $req->fetchALL();
  
  foreach($req as $r){
   ?>  
    <div style="margin-top: 20px 0; border-bottom: 2px solid #ccc"><?= $r['titre']?></div><?php   
  }
 } 
?>


Merci à vous 😀

Cette pub permet au site de vivre ...

9 commentaires

Tu veux participer ?
Alors connecte toi ou inscris toi et viens participer !

Re @bervellearnaud :


As-tu créer la table produit dans ta base de données ?

Re @bervellearnaud :


Ton problème est-il résolu ?

Re @bervellearnaud :


À tous les coups, tu n'as même pas créer la base de donnée sur PhpMyAdmin 😅

Normal donc qu'il te mettes:

Call to a member function query() on null


Je ne pense pas qu'il s'agisse de la variable $DB car tu l'as bien initialisée..

<?php
  require_once('../bd/connexionDB.php');
 
  if(isset($_GET['user'])){
    $user = (String) trim($_GET['user']);
 
    $req = $DB->query("SELECT *
      FROM produit
      WHERE titre LIKE ?
      LIMIT 10",
      array("$user%"));
 
    $req = $req->fetchALL();
  
    foreach($req as $r){
      ?>   
        <div style="margin-top: 20px 0; border-bottom: 2px solid #ccc"><?= $r['titre']?></div><?php    
    }
  } 
?>
voici ma page recherche_produit @space001

Bonsoir @bervellearnaud,


Prends le temps de rédiger ton commentaire en utilisant les balises de l'éditeur (cf. ce topic) afin que ça soit plus agréable à lire.

Pour les balises de code, tu dois utiliser la première balise </> 😉

D'autre part, je viens d'ajouter ton code sur le topic 😉


Concernant ton problème, pourrais-tu nous envoyer le code de ton fichier recherche_produit.php ? 🤔


Merci à toi 😁

j'ai une nouvelle erreur svp Parse error: syntax error, unexpected ' ' (T_STRING) on line 3

elle se trouve dans ma page connexion

j'utilise xampp donc je n'ai pas de mot de passe


<?php

 // Déclaration d'une nouvelle classe

 class connexionDB {

  private $host  = 'localhost';  // nom de l'host

  private $name  = 'mode_homme';   // nom de la base de donnée

  private $user  = 'root';    // utilisateur

  private $pass  = '';    // mot de passe

  //private $pass  = '';     // Ne rien mettre si on est sous windows

  private $connexion;

           

  function __construct($host = null, $name = null, $user = null, $pass = null){

   if($host != null){

    $this->host = $host;      

    $this->name = $name;      

    $this->user = $user;      

    $this->pass = $pass;

   }

   try{

    $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,

     $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 

     PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

   }catch (PDOException $e){

    echo 'Erreur : Impossible de se connecter à la BDD !';

    die();

   }

  }

   

  public function query($sql, $data = array()){

   $req = $this->connexion->prepare($sql);

   $req->execute($data);

   return $req;

  }

   

  public function insert($sql, $data = array()){

   $req = $this->connexion->prepare($sql);

   $req->execute($data);

  }

 }

  

 // Faire une connexion à votre fonction

 $DB = new connexionDB();

?>

excusez moi je ne sais pas comment numerote les lignes

je n'avais pas le code de la page de connexion a la base de donnee

je vais l'essayer pour voir si cela fonctionne

merci Flomir.

Re @bervellearnaud :


Ou alors c'est un soucis avec ta variable de la connexion à la base de donnée,

=>Undefined variable: db


Si tu pourrais nous envoyer ton code de cette page, et de la page de la connexion à la Base de données, afin que l'on éclaircisse ton soucis.

Salut @bervellearnaud 😁,


As-tu bien ce code-ci dans ta page de connexion à la base de données ?:

<?php
  // Déclaration d'une nouvelle classe
  class connexionDB {
    private $host    = 'localhost';   // nom de l'host
    private $name    = 'monsite';     // nom de la base de donnée
    private $user    = 'root';        // utilisateur
    private $pass    = 'root';        // mot de passe
    //private $pass    = '';          // Ne rien mettre si on est sous windows
    private $connexion;
                    
    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    
    public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }
    
    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  }
  
  // Faire une connexion à votre fonction
  $DB = new connexionDB();
?>

Si ce n'est pas le cas il faudra que tu remplaces ce code par le tiens.


Bon courage,

@Flomir 😄

Cette pub permet au site de vivre ...