Trying to get property of non-object in jour 3

Par PuLSor24, il y a 13 ans


Salut^^,

au moment ou il faut modifier le view.php dans la video jour 3 28:00min

<h1><?php echo $post->name; ?></h1>
<?php echo $post->content; ?>

j’obtiens cette erreur la

j'ai bau chercher, mais, je ne trouve pas

Merci :)

19 réponses

PuLSor24, il y a 13 ans

...
j'ai modifier mon model.php

public function find($req){
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';

        // Construction de la condition
        public function find($req){
            $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';
            if(isset($req'conditions'])){
                $sql .= 'WHERE '.$req'conditions'];
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.mysql_escape_string($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }
        }
        $pre = $this->db->prepare($sql);
        $pre->execute();
        return $pre->fetchAll(PDO::FETCH_OBJ);
    }

mais sa me met une erreur : Parse error: syntax error, unexpected T_PUBLIC in C:\wamp\www\core\Model.php on line 48

Quelqu'un a une idée ?

Thx

Djiins, il y a 13 ans

peux tu montrer l'integralité de ton fichier Model.php ?

PuLSor24, il y a 13 ans

Salut Djiins
merci de voler à mon second un 2em foi :)

<?php
class Model{

    static $connections = array(); 
    public $conf = 'default';
    public $table = false; 
    public $db; 
    public function __construct(){
        // Jme connecte à la base
        $conf = Conf::$databases$this->conf];
        if(isset(Model::$connections$this->conf])){
            $this->db = Model::$connections$this->conf];
            return true; 
        }
        try{
            $pdo = new PDO(
                'mysql:host='.$conf'host'].';dbname='.$conf'database'].';',
                $conf'login'],
                $conf'password'],
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
            );
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
            Model::$connections$this->conf] = $pdo; 
            $this->db = $pdo; 
        }catch(PDOException $e){
            if(Conf::$debug >= 1){
                die($e->getMessage()); 
            }else{
                die('Impossible de se connecter à la base de donnée'); 
            }
        }

        // J'initialise qques variable
        if($this->table === false){
            $this->table = strtolower(get_class($this)).'s'; 
        }

    }
    public function find($req){
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';

        // Construction de la condition
        public function find($req){
            $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';
            if(isset($req'conditions'])){
                $sql .= 'WHERE '.$req'conditions'];
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.mysql_escape_string($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }
        }
        $pre = $this->db->prepare($sql);
        $pre->execute();
        return $pre->fetchAll(PDO::FETCH_OBJ);
    }
    public function findFirst($req){
        return current($this->find($req)); 
    }

}
Djiins, il y a 13 ans

lol de rien :)

public function find($req){
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';

}<================================================================================ici
        // Construction de la condition
        public function find($req){
            $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';
            if(isset($req'conditions'])){
                $sql .= 'WHERE '.$req'conditions'];
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.mysql_escape_string($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }

        }

il te manque une accolade pour fermer la fonction find :)

PuLSor24, il y a 13 ans

je ne sais pas ce j'ai foutu mais j'ai eu 2 fonction find ^^
Mais j'ai encor le même problème

public function find($req){
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';

        // Construction de la condition
        if(isset($req'conditions'])){
            $sql .= 'WHERE ';
            if(!is_array($req'conditions'])){
                $sql .= $req'conditions']; 
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.mysql_escape_string($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }
        }
        $pre = $this->db->prepare($sql); 
        $pre->execute(); 
        return $pre->fetchAll(PDO::FETCH_OBJ); 
    }
Djiins, il y a 13 ans

tiens je te met le mien qui fonctionne chez moi sans problème regarde si tu as tjrs l'erreur !!

<?php
class Model{
    static $connections=array();
    public $conf ='default';
    public $table =false;
    public $db;
    public function __construct(){
        $conf = Conf::$databases$this->conf];
        if (isset(Model::$connections$this->conf])) {
            $this->db=Model::$connection$this->conf];
            return true;
        }
        try{
        $pdo= new PDO('mysql:host='.$conf'host'].';dbname='.$conf'database'].';',
                    $conf'login'],
                    $conf'password'],
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
                );
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
            Model::$connections$this->conf]=$pdo;
            $this->db=$pdo;
        }catch(PDOException $e){
            if (Conf::$debug>=1) {
                die($e->getMessage());
            }else {
                die('impossible de se connecter a la base de donnée');
            }

        }
            if ($this->table ===false) {
                $this->table =strtolower(get_class($this)).'s';
            }
    }
    public function find($req){
        $sql ='SELECT *FROM '.$this->table.' as ' .get_class($this).' ';
        if (isset($req'conditions'])) {
            $sql.='WHERE ';
            if (!is_array($req'conditions'])) {
                $sql.=$req'conditons'];
            }else{
                $cond=array();
                foreach ($req'conditions'] as $k => $v) {
                    if (!is_numeric($v)) {
                        $v='"'.mysql_escape_string($v).'"';
                    }

                    $cond] = "$k=$v";
                }
                $sql.= implode (' AND ', $cond);
            }
        }

        $pre =$this->db->prepare($sql);
        $pre->execute();
        return $pre->fetchAll(PDO::FETCH_OBJ);
    }

    public function findFirst($req){
        return current($this->find($req));
    }
}

?>
PuLSor24, il y a 13 ans

Oui, sa me met même 2 nouvelles erreur
Notice: Undefined index: conditons in C:\wamp\www\core\Model.php on line 44
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 in C:\wamp\www\core\Model.php on line 62
Notice: Trying to get property of non-object in C:\wamp\www\view\pages\view.php on line 1
Notice: Trying to get property of non-object in C:\wamp\www\view\pages\view.php on line 3

pour mon view.php

<h1><?php echo $post->name; ?></h1>
<?php echo $post->content; ?>

Je ne comprend pas, je met même les sources du prémium, changer pour ma db mais sa ne va pas :s

Djiins, il y a 13 ans

si tu mets toutes les sources prenium ca ne fonctionne pas non plus ?

Djiins, il y a 13 ans

moi dans le view j'ai ca

<?php $title_for_layout =$page->name; ?>

<h1><?php echo $page->name; ?></h1>
<p><?php echo $page->content; ?></p>
luffysan, il y a 13 ans

Généralement on a cette erreur quand on écrit mal la requête SQL.

PuLSor24, il y a 13 ans

Oui, j'ai mis tout les source prenium mais sa ne change rien.
J'ai aussi essayé de changer le view, mais sa ne pas l'aire de venir de la

Djiins, il y a 13 ans

ligne 44 c conditions et pas conditons.... Notice: Undefined index: conditons in C:\wamp\www\core\Model.php on line 44

PuLSor24, il y a 13 ans

Oui mais le condition viens de ton code Djiins :)
Au final je reviens sur les même erreurs du début
c-a-d ceux la
Notice: Trying to get property of non-object in C:\wamp\www\view\pages\view.php on line 1
Notice: Trying to get property of non-object in C:\wamp\www\view\pages\view.php on line 3

et la je suis avec le prémium pour temps. :/

Djiins, il y a 13 ans

tu dois avoir un autre probleme c sur mets toutes les sources prenium normalement ca devrais fonctionner

PuLSor24, il y a 13 ans

bin oui, c'est ce que je fais depuis le début, j'utilise les codes prémium mais sa me rajoute quand même des erreurs ..
je sais pas, je comprend pas.

PuLSor24, il y a 13 ans

Oulala ... j'ai tout installer sur un autre machine et la sa fonctionne :s
je ne comprend plus rien du tout.
Enfin, maintenant que cava, cava ^^

Djiins, il y a 13 ans

et tu as changé le post par page dans ton view ? au pire desinstall et reinstall wamp pour voir si c pas ton server qui deconne mais j'y crois pas :)

affiche ton controller pour voir ainsi que le dispatcher et fait un screen de ton arborescence parce que la a part ne pas trouver page je ne vois pas ce qui cloche :)

PuLSor24, il y a 13 ans

Voilà, je viens de tout réinstaller et la sa fonction :)
je me suis remis en 2.1 sur wamp et la sa fonctionne
J'ai remarquer aussi que mes liens beug sur Mozilla mais que sur internet explorer cava, ex:
si je clique sur ma 1er page, il me dirige vers http://localhost//\/pages/view/1
alors que sur internet explorer cava ^^ bizard
Merci

Djiins, il y a 13 ans

Ravi que ça fonctionne :)