probleme avec les classes

Eléphant du PHP | 86 Messages

26 avr. 2006, 18:37

j est fait se petit script pour tester une fonction :
01<?php
02    include "BDD.php5";
03
04   
05    class test
06    {
07        private $bdd;
08        
09        function construct()
10        {
11            $this->bdd = new BDD();
12        }
13        function TrouverInfo()
14        {
15            $trame = "SELECT * FROM materiel";
16            $rep = $this->bdd->Rechercher($trame);
17            return $rep;
18        }
19                                         
20    }
21    
22    $test = new test();
23
24    $rep = $test->TrouverInfo();
25    echo("il y a $rep[0] reponse");
26?>
et la classe BDD.php5 est la suivante :
<?php

class BDD
{
    private $option;
    private $test;
    private $result;
    private $select;
    private $cte = 0;

//***********Constructeur***********//
    
    function __construct()
    {
        mysql_connect("localhost","root","toto");
        mysql_select_db("log");
    }

    
//***********Envoi de n'importe quel requette a la base (SELECT, SHOW, DESCRIBE, ...)**********//

    function Query($option)
    {
        $this->option = $option;
        $this->test = mysql_query($this->option);
        return $this->test;
    }
    
//**********Recupere le nombre de ligne d'un jeu de résultat*********//
    
    function NumRows($option)
    {
        $this->option = $option;
        $this->test = mysql_num_rows($this->option);
        return $this->test;
    }
    
//**********Retourne les info d un champ*********//

    function FetchRow($option)
    {
        $this->option = $option;
        $this->test = mysql_fetch_row($this->option);
        return $this->test;
    }

//**********Recherche ds la bdd renvoi en $att[0] le nombre de rep et en $att[n] n != 0 toute les reponses**********//
    
        function Rechercher($id)
    {      
        $this->option = $id;
        $retour = $this->Query($this->option);
        if($retour == FALSE)
            return FALSE;
        else
        {
            $nb = $this->NumRows($retour);
            if($nb == FALSE)
                return FALSE;
            else
            {
                $att[0] = $nb;
                for($i = 1 ; $i <= $nb; $i++)
                {
                    $att[$i] = $this->FetchRow($retour);
                }
                return $att;
            }
        }       
    }    
}
?>
le probleme c est que sa me renvoi l erreur suivante :

Code : Tout sélectionner

Fatal error: Call to a member function Rechercher() on a non-object in c:\program files\easyphp1-8\www\index.php5 on line 16
je ne voi pas se que j est fai de traver si vous pouviez m aider sa serai vraimen cool...

ant
Eléphant du PHP | 161 Messages

26 avr. 2006, 19:07

T'as oublié les 2 underscore (traits de soulignements) avant construct dans ta classe test:
function construct() 
Du coup, pas de constructeur donc ton objet BDD n'est jamais initialisé à la création de l'objet "test," d'ou l'erreur :

Code : Tout sélectionner

Fatal error: Call to a member function Rechercher() on a non-object (Appel à une Méthode rechercher() sur un non objet)