IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

convertir une requete en objet


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut convertir une requete en objet
    bonjour,
    je débute en php5 et je souhaite résoudre un pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    include('spdo.php'); // classe de connexion
     
    class SearchEngine
    {
      public function search($conditions = array())  
      {
      $query = 'SELECT id FROM search'; // $query est une requete.
      if(sizeof($conditions) > 0)  // si la taille du tableau est > 0
      {
     
      $query.=' WHERE titre = '.implode(' AND titre = ',$conditions); // alors la requete integre le tableau sous forme de chaine.
      }
      // Execution de la requête SQL avec une classe PDO
     
     $result = SPDO::getInstance()->query($query); // on appelle la methode query( ma requete ) pour en faire un objet.
     
       $return = $result->fetchAll(PDO::FETCH_ASSOC);    // retourne un tableau contenant toutes les lignes du jeu d'enregistrements
      return $return;
      } 
     
      // -------- prog ------------------------------
      $mySearchEngine = new SearchEngine();
     
      $mySearchEngine->search(array('champ1' => "phpinfo", 'champ2' => "phpinfo"));
    // ----------------------------------------------
    En fait le but est de retourner les id selon des criteres de recherche (oui, c'est un moteur de recherche)
    Mais le souci c'est l'erreur : Fatal error: Call to a member function fetchAll() on a non-object in C:\Program Files\EasyPHP 3.0\www\php2010\searchengine.php on line 30

    Merci d'avance pour votre soutien ;-)

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu te connecte a quelle moment ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut re:
    ben en fait la connexion se fait ds le fichier spdo.php dont voici le squelette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
    class SPDO
    {  
     
    private $PDOInstance = null;
    private static $instance = null;
     
     
    const DEFAULT_SQL_USER = 'root';
    const DEFAULT_SQL_HOST = 'localhost';
    const DEFAULT_SQL_PASS = 'mysql';
    const DEFAULT_SQL_DTB = 'moteur_rech';
     
    PDO::__construct()   */
    public function __construct()
    {
    $this->PDOInstance = new PDO('mysql:dbname='.self::DEFAULT_SQL_DTB.';host='.self::DEFAULT_SQL_HOST,self::DEFAULT_SQL_USER ,self::DEFAULT_SQL_PASS);
    }
     
     
    public static function getInstance()
     {
    // definition d'une fonction sur une classe, qui n'aura pas acces a $this, ni aux valeurs des variables d'instance,
    // mais qui aura toujours acces aux variables statiques.
     
      if(is_null(self::$instance)) // Si l'attribut prive $instance est nul
    {
      self::$instance = new SPDO();  // Alors $instance sera une instance de la classe SPDO
    }
          return self::$instance; //  On retourne l'objet / l'instance de la classe SPDO.
          }
     
     
     
          public function query($query) // on execute une requete .
          {
            return $this->PDOInstance->query($query);
            }
            }
     
           /* foreach (SPDO::getInstance()->query('SELECT id FROM search') as $membre)  // Foreach permet de parcourir ici une table.
            {
               print_r ($membre); // Affiche des informations lisibles pour une variable
    
            }
            */
     
     
     
          ?>
    Un peu long mais en gros il y a le constructeur, la fonction getInstance et celle pour la requete, rien de sorcier :-)

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    la tu ne montre que des classes, montre ton vrai code

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Restons zen et enquêtons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = SPDO::getInstance()->query($query);  
    $return = $result->fetchAll(PDO::FETCH_ASSOC);
    L'erreur arrive sur la 2ème ligne et nous indique que $result n'est pas un objet.

    Or, le manuel de PDO indique bien que la fonction query() ne retourne pas obligatoirement un objet PDOStatement

    Il faudrait donc... vérifier la valeur de retour de $result

Discussions similaires

  1. Convertir une requete SQL en HQL d'Hibernate
    Par Incinerator dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/11/2008, 12h15
  2. Convertir une requete SQL en HQL d'Hibernate
    Par Incinerator dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/11/2008, 18h00
  3. convertir une requete en une table
    Par marc_calagac dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/06/2007, 18h12
  4. Convertir une Requete vers une Table
    Par salafista dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/06/2007, 00h06
  5. convertir une requete en table
    Par aarlock dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/07/2006, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo