Bonjour a touts et toutes.
Aujourd'hui je me suis attaquer a la partie POO pourvoir un peut le fonctionnement de la programmation orienter objets, mais dans le tutoriel je tombe sur une petite erreur j'ai chercher pendant une grosse demi heure en changent quelque chose mais je n'arrive pas a trouver.
Alors je vous affiche mon code pourriez-vous jeter un œil pour voir si ce n'est pas moi qui fait une erreur merci d'avance Paphio-King.
Voici le code de la page model/category.php

<?php
class Category{
    public $id;

    function read($fields=null){
        if($fields==null){
            $fields = "*";
        }
        $sql = "SELECT $fields FROM categories WHERE id=" . $this->id;
        $req = mysql_query($sql) or die(mysql_error());
        $data = mysql_fetch_assoc($req);
        return $data;

        foreach($data as $k=>$v){
            $this->$k = $v;
        }
    }
}
$Category = new Category();
?>

voici le code de la page core.php

<?php
    mysql_connect('localhost','root','');
    mysql_select_db('poo_mysql');
    mysql_query("SET NAMES 'utf8'");

    require("model/category.php");
?>

voici le code de la page index.php

<?php
    require "core.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="" content="">
</head>
<body>
<p>
    <?php
    $Category->id=2;
    $Category->read();
    echo $Category->name;
    ?>
</p>
</body>
</html>

Alors quand j'essaie d'afficher $Category->name; sur l'index il me donne se message d'erreur a l'affichage.

Notice: Undefined property: Category::$name in C:\xampp\htdocs\poo_mysql\index.php on line 15

Voila merci d'avance si vous avez des questions n'hésiter pas.
Paphio-King

3 réponses


Arnaud Mcho Scott
Réponse acceptée

essaye déjà de faire un var_dump($Category->read()) qui te retournera $data .

Autre point tu fais un return $data avant ton foreach or cela veut dire que ton code n'ira jamais exécuter le foreach qu'il y a en dessous

Tout est dans l'erreur.

Tu n'as définit nul part : $Category->name

Si c'est le code ci-dessous (model/category.php - ligne 15) qui définit la variable $Category->name alors tu dois mettre le return (ligne 13) après le foreach.

foreach($data as $k=>$v){
            $this->$k = $v;
        }

Un grand merci à vous deux, j'ai trouvé grâce a vos explications c'était bien juste mettre le return $data; en dessous du foreach.

Ce qui est logique d'ailleurs dans le code nom orienter objet.

Je vous jure c'était la Belgique qui jouait hier mais, je n'avais pas encore bu.
Aller un grand merci a vous deux a bientôt au tour d'un autre post.
Bonne semaine Paphio-King.