Bah tout est dans le titre, ma fonction findFirst me retourne toujours le même article même en changeant l'id

Apparemment cela vient du current($this->find($req))
Mon Model.php

<?php
/**
* Permet de faire le lien entre le serveur et une base de données
*/
class Model
{
    /**
     * @var string Le nom de la base de donnée
     */
    public $conf = 'default';
    /**
     * @var string le nom de la table utilisée
     */
    public $table = false;
    /**
     * @var array Les connections à la base de de donnée
     */
    static $connections = array();
    public $db ;
    function __construct()
    {
        // Connection à la base de donnée
        $conf = Configurations::get('databases',$this->conf);
        if (isset(Model::$connections$this->conf])) {
            $this->db = Model::$connections$this->conf] ;
            return true;
        }else{
            // On se connecte à la base de donnée
            try {
                $pdo = new PDO('mysql:host='.$conf->host.';dbname='.$conf->database.';',
                    $conf->login,
                    $conf->password,
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => ' SET NAMES utf8')
                    );
                Model::$connections$this->db] = $pdo ;
                $this->db = $pdo;
            } catch (PDOException $e) {
                if (Configurations::get('mode') != 'developpement') {
                    die( "Une erreur s'est produite lors de l'accès à la base de donnée veuillez réessayer plus tard.");
                } else {
                    die($e->getMessage());
                };
            }
        }
        // Initialisation des variables
        if ($this->table === false ) {
            $this->table = strtolower(get_class($this)).'s';
        }
    }
    public function find($req)
    {
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).' ';
        $pre = $this->db->prepare($sql);
        if (isset($req'conditions'])) {
            $sql .= ' WHERE '.$req'conditions'];
            var_dump($sql);
        }
        $pre->execute();
        return $pre->fetchAll(PDO::FETCH_OBJ);
    }
    public function findFirst($req)
    {
        return current($this->find($req));
    }
}

5 réponses


Tackacoder
Réponse acceptée

Re,
je viens de voir une erreur, tu prépares ta requete ici $pre = $this->db->prepare($sql); et ensuite tu ajoutes tes conditions, donc elles ne sont pas prises en compte.

Ça vient plutôt de ton PageController.php, où tu dois avoir dans le tableau de requête, un 'id=1' qui se balade, si tu avais regardé le tutoriel jusqu'au bout, tu aurais vu que Graphikart change ensuite pour un 'id='.$id

JowRick
Auteur

non j'ai bien fait

'conditions'=>'id='.$id

et j'ai regardé le tutoriel au moins cinq fois

Bonjour,
et tu as essayé d'afficher ta req SQL ?

JowRick
Auteur

Merci je ne l'avais pas vu