Problème multi classe PHP

Fermé
Shauken - Modifié par Shauken le 19/09/2011 à 09:51
 Shauken - 19 sept. 2011 à 13:25
Bonjour,

je commence un site orienté Objet mais quelques notion me manque:

voila mon problème:

j'ai 2 classe et ma page index:

- "MyBase" qui fait le lien entre ma base de données et mon site

<?php 

class MyBase { 
    private $ip; 
    private $login; 
    private $pass; 
    private $database; 
    private $id_connection; 
    private $erreur; 

    public function __construct($ip,$login,$pass,$database) 
    { 
        $this->ip=$ip; 
        $this->login=$login; 
        $this->pass=$pass; 
        $this->database=$database; 
        $this->id_connection=NULL; 
        $this->erreur="Aucune Erreur";   
    } 

    public function connection() 
    { 
        $this->id_connection=mysql_connect($this->ip,$this->login,$this->pass); 
        if(!$this->id_connection) 
                $this->erreur="Impossible d'établir la connexion"; 
        else 
        { 
                if(!mysql_select_db($this->database)) 
                        $this->erreur="Impossible de trouver la database.)"; 
        } 
    } 

    public function deconnection() 
    { 
        if(!mysql_close($this->id_connection)) 
                $this->erreur="Erreur de deconnexion"; 
    } 

    public function geterreur() 
    { 
        return $this->erreur; 
    } 

    public function query($requete) 
    { 
        $i=0; 
        $tab=array(); 
        $retour=mysql_query($requete); 
        if(!$retour) 
        { 
            $this->erreur="Impossible d'executer la requète."; 
            return false; 
        } 
        else 
        { 
            while($ligne=mysql_fetch_array($retour)) 
            { 
                    $tab[$i]=$ligne; 
                    $i++; 
            } 
            return $tab;    
        }     
    } 
     
    public function execute($requete) 
    { 
        $retour=mysql_query($requete);         
        if(!$retour) 
        { 
            $this->erreur="Impossible d'executer la requète."; 
            return FALSE; 
        } 
        else 
            return true; 
    } 
} 

?> 


- "Config_general" une classe composée de fonction pour modifier les parametres du site.

<?php 

include_once("em-class/MyBase.class.php"); 
include_once("em-class/Parametre.php"); 
class Config_general  
{ 

    private $MaBase; 
     
    function __construct() 
    { 
        $this->Mabase = new MyBase(ip,login,pass,database); 
        $this->Mabase->connection(); 
    }   
    public function getTitle() 
    { 
        $test = $this->MaBase->query("Select * FROM ".path."options WHERE op_name='Title'"); 
    } 
     
    public function setTitle($Title) 
    { 
        $test = $this->MaBase->execute("UPDATE ". path. "options SET op_value='".$Title."' WHERE op_name='Title'"); 
    } 
} 
?>


- Ma page Index

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title></title> 
    </head> 
    <body> 
        <?php 
            include("em-class/em-admin/Config_general.php"); 
            $test = new config_general();             
            $test->setTitle("Toto"); 
            $test->getTitle(); 
        ?> 
    </body> 
</html>


A l'execution j'ai l'erreur:

Fatal error: Call to a member function execute() on a non-object in C:\Users\vvasseur\Documents\Dev Web\EasyManga\em-class\em-admin\Config_general.php on line 22

Pouvez vous m'expliquer d'ou vient le problème.

Merci pour vos réponse.
A voir également:

4 réponses

rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
19 sept. 2011 à 11:41
dans ton construcuteur, tu passe

$this->Mabase = new MyBase(ip,login,pass,database);

les parametre sont passés sous forme de variable ou tu les met directement en dur dans le script ?

sinon quand tu appel ton construcuteur dans

$test = new config_general();

PHP ne serait pas sensible à la casse ?

$test = new Config_general();
1
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
19 sept. 2011 à 11:19
La fonction __construct n'est disponible que sur les version php > 5 il me semble

si tu remplace dans mybase

public function __construct($ip,$login,$pass,$database) 


par

function MyBase($ip,$login,$pass,$database) 


et dans le ficheir Config_Generale.php

function __construct() 


a remplacer par

function Config_general() 


est ce que cela corrige tes problèmes ?
0
Non toujours le même problème mais merci pour la réponse
0
Et oui, merci Rodoplop.

Le probleme vient bien des majuscules.
0