Page 1 sur 1

Pb pour étendre mysqli...

Posté : 28 févr. 2014, 18:55
par FrancoisSauterey
Qui peux me dire pourquoi ceci ne fonctionne pas, étant entendu, que tout ce passe bien coté connexion.
En fait, si une requête ne renvoie qu'une ligne, tout va bien, mais si elle en renvoie plusieurs, nada :
le $this->liste n'est même pas créé [affichage avec print_r] !
Et pourtant, le même print_r me permet de vérifier que le $oTmp est bien rempli, et parcours bien la table...
J'utilisais le même principe sans difficulté avec les mysql_fonctions... :-(
Je coince dessus depuis plusieurs jours, sans comprendre où est le soucis ! HELP!!!
class maRequete extends mysqli{
    private function connexion($dsn) {
        if (!$this->connecte) {
            $this->mysqli($dsn->serveur,$dsn->utilisateur,$dsn->mdp,$dsn->base);
            if ($this->connect_error) die('Erreur de connexion (' . $this->connect_errno . ') '. $this->connect_error);
            $this->connecte = true;
        }
    }

    function maRequete($requete){
        $this->connexion($dsn);
        $resultat       = $this->query($requete) or die("Myrequete:$requete:: erreur:" . $this->error);
        if ( ($this->nombre = $resultat->num_rows) == 1) {
            foreach ($resultat->fetch_object() as $k=>$v)
                $this->$k       = $v;
        } elseif ($this->nombre) {
            $this->liste    = array();
            while ($oTmp    = $resultat->fetch_object())
                $this->liste[]  = $oTmp;
    }
}

Re: Pb pour étendre mysqli...

Posté : 28 févr. 2014, 21:39
par moogli
Salut,


Peu être parce qu'il faut lui demander poliment ?
Comme dur forum quoi ....

@+

Re: Pb pour étendre mysqli...

Posté : 02 mars 2014, 10:49
par FrancoisSauterey
Comme ça peut servir à d'autres, contrairement à la réponse précédente (!), je vous donne 'ma' réponse (il y en sûrement d'autres!!!)
J'ai contourné le problème avec:
class maRequete {
    function maRequete($requete){
        global $dsn;
        $this->mysqli = new mysqli($dsn->serveur,$dsn->utilisateur,$dsn->mdp,$dsn->base);
        $resultat       = $this->mysqli->query($requete) or die("Myrequete:$requete:: erreur:" . $this->mysqli->error);
        if ( ($this->nombre = $resultat->num_rows) == 1) {
            foreach ($resultat->fetch_object() as $k=>$v)
                $this->$k       = $v;
        } elseif ($this->nombre) {
            $this->liste    = array();
            while ($oTmp    = $resultat->fetch_object())
                $this->liste[]  = $oTmp;
    }
}

Re: [RESOLU] Pb pour étendre mysqli...

Posté : 03 mars 2014, 10:39
par zeus
ça n'a aucun sens ce que tu fais ...

L'héritage permet d'étendre le comportement d'une classe, en lui ajoutant des fonctionnalité.
Toi, tu veux faire de l'accès aux données en utilisant mysqli.

Il faudrait que l'instance de mysqli soit un attribut de ta classe, pas un parent