Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

jointure des tables

  1. #1
    Futur Membre du Club
    jointure des tables
    bonjour MKDO,
    après avoir créer mon site, j'ai du mal à joindre les tables

  2. #2
    Membre confirmé
    Salut,

    Dans ton modèle tu as un truc du genre :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    protected $sTable='test_maTable';
    protected $sConfig='pdoMysqlMaBDD';


    Rien ne t'empêche de compléter ton modèle de la sorte :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected $sTable='test_maTable';
    protected $sTable2='test_maTable2';
    protected $sTable3='test_maTable3';
    protected $sConfig='pdoMysqlMaBDD';



    Puis ensuite créer ta requête :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function findInfoInMyTables($sMaVariable){
                return $this->findOne('SELECT table1.valueName,table3.valueCoord, table2.valueExpression FROM '.$this->sTable.' as table1
                            INNER JOIN '.$this->sTable2.' as table2 on table2.Id=table1.Expression_id
                            INNER JOIN '.$this->sTable3.' as table 3 on table3.id=table1.Coord_id
                            WHERE table2.Condition=?',$sMaVariable);
            }


    Au plaisir,
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  3. ###raw>post.musername###
    Futur Membre du Club
    Merci pour les codes. maos j'ai essayé et ça me donne un message d'erreur à la ligne31.
    //voici le contenu d'une page modèle sur la quelle je travaille


    <?php
    class model_atmaster extends abstract_model{


    protected $sClassRow='row_atmaster';

    protected $sTable='atmaster';
    protected $sTable2='bo';
    protected $sTable3='postillon';
    protected $sConfig='pdoMysqlExple';


    protected $tId=array('id_atmaster');

    public static function getInstance(){
    return self::_getInstance(__CLASS__);
    }

    public function findById($uId){
    return $this->findOne('SELECT * FROM '.$this->sTable.' WHERE id_atmaster=?',$uId );
    }
    public function findByp_key($uKey){
    return $this->findOne('SELECT * FROM '.$this->sTable.' WHERE authorization_id=?',$uKey );
    }
    public function findAll(){
    return $this->findMany('SELECT * FROM '.$this->sTable);
    }

    //jointure
    public function findRef($sMavariable){
    return $this->findOne('SELECT atmaster.authorization_id, bo.trn_ref_no, bo.txn_amt, postillon.auth_id_rsp FROM'.$this->.' as bo
    INNER JOIN'.$this->sTable2.' as bo on bo.id=id_bo
    INNER JOIN' .$this->sTable3.' as postillon on postillon.id=id_.postillon
    WHERE bo.rrn=?',$sMavariable);

    }



    }

    class row_atmaster extends abstract_row{

    protected $sClassModel='model_atmaster';

    /*exemple jointure
    public function findAuteur(){
    return model_auteur::getInstance()->findById($this->auteur_id);
    }
    */
    /*exemple test validation*/
    private function getCheck(){
    $oPluginValid=new plugin_valid($this->getTab());


    /* renseigner vos check ici
    $oPluginValid->isEqual('champ','valeurB','Le champ n\est pas &eacute;gal &agrave; '.$valeurB);
    $oPluginValid->isNotEqual('champ','valeurB','Le champ est &eacute;gal &agrave; '.$valeurB);
    $oPluginValid->isUpperThan('champ','valeurB','Le champ n\est pas sup&eacute; &agrave; '.$valeurB);
    $oPluginValid->isUpperOrEqualThan('champ','valeurB','Le champ n\est pas sup&eacute; ou &eacute;gal &agrave; '.$valeurB);
    $oPluginValid->isLowerThan('champ','valeurB','Le champ n\est pas inf&eacute;rieur &agrave; '.$valeurB);
    $oPluginValid->isLowerOrEqualThan('champ','valeurB','Le champ n\est pas inf&eacute;rieur ou &eacute;gal &agrave; '.$valeurB);
    $oPluginValid->isEmpty('champ','Le champ n\'est pas vide');
    $oPluginValid->isNotEmpty('champ','Le champ ne doit pas &ecirc;tre vide');
    $oPluginValid->isEmailValid('champ','L\email est invalide');
    $oPluginValid->matchExpression('champ','/[0-9]/','Le champ n\'est pas au bon format');
    $oPluginValid->notMatchExpression('champ','/[a-zA-Z]/','Le champ ne doit pas &ecirc;tre a ce format');
    */

    return $oPluginValid;
    }

    public function isValid(){
    return $this->getCheck()->isValid();
    }
    public function getListError(){
    return $this->getCheck()->getListError();
    }
    public function save(){
    if(!$this->isValid()){
    return false;
    }
    parent::save();
    return true;
    }

    }
      0  0

  4. #4
    Membre confirmé
    Pour le prochain post pense à bien utiliser les balises CODE c'est le # dans le menu d'édition du forum. (Tu dois pouvoir encore modifier ton Post)

    pour ton code il s'agit d'un oublie de ta part et d'un faute de déclaration :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public function findRef($sMavariable){
    return $this->findOne('SELECT atmaster.authorization_id, bo.trn_ref_no, bo.txn_amt, postillon.auth_id_rsp FROM'.$this->sTable.' as bo
    INNER JOIN'.$this->sTable2.' as bo2 on bo2.id=id_bo
    INNER JOIN' .$this->sTable3.' as postillon on postillon.id=id_.postillon
    WHERE bo.rrn=?',$sMavariable);
    
    }
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  5. #5
    Futur Membre du Club
    jointure
    MERCI beaucoup.
    le code passe, et l'erreur a disparu.
    bizarrement le tri n'est pas effectué et toutes les données insérées dans la base sont affichées. je ne veux obtenir que les champs sélectionnés si possible.

    cordialement

  6. #6
    Membre confirmé
    De rien,

    Il s'agit certainement d'une erreur dans les jointures de ta requête SQL.

    Là je ne peux rien pour toi, si ce n'est t'orienter vers les différents tutos que tu trouves sur la toiles et qui traitent de ce sujet.

    A+
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

###raw>template_hook.ano_emploi###