Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut je suis un débutant et je veux savoir comment faire la jointure entre les tables;
j'ai 3 tables: organisme(id_organisme,nom,adresse)
offre(id_offre,libellé)
proposition(id_offre,id_organisme)
je veux savoir comment configurer les modèles (organisme.php, offre.php et proposition) et comment afficher les résultats de la table proposition????????
Hors ligne
voilà ce que j'ai:
proposition.php
<?php class Proposer extends Zend_Db_Table_Abstract { protected $_name='proposer'; protected $_primary=array('ID_ORGANISME','ID_OFFRE'); protected $_referenceMap=array( 'ID_ORGANISME'=> array( 'columns'=> 'ID_ORGANISME', 'refTableClass'=> 'Organismes', 'refColumns'=> 'ID_ORGANISME'), 'ID_OFFRE' => array( 'columns' => 'ID_OFFRE', 'refTableClass' => 'Offres', 'refColumns' => 'ID_OFFRE' //facultatif, il s'agit de la PK par défaut )); } ?>
offre.php
<?php class Offres extends Zend_Db_Table { protected $_name = 'offre'; } ?>
organisme.php
<?php class Organismes extends Zend_Db_Table { protected $_name = 'organisme'; } ?>
je veux afficher pour chaque l'offre convenable à chaque organisme
quelqu'un peut m'aider?
Hors ligne
passe par un select
$db->select ->from('table1') ->join('table2', 'table1.id=table2.id') ->join('table3', 'table2.id=table3.id') ->where......
A+JYT
Hors ligne
Salut j'ai fait un truc comme ça:
$proposer = new Proposer(); $select=$proposer->select()->setIntegrityCheck(false); $select->from('proposer') ->joinInnerUsing('organisme', 'ID_ORGANISME') ->joinInnerUsing('offre', 'ID_OFFRE') ->order(array('offre.ID_OFFRE', 'organisme.ID_ORGANISME')); $this->view->proposers = $proposer->fetchAll($select);
et pour ma vue:
<?php foreach($this->proposers as $proposer) : ?> <tr > <td class="odd" width="50"> <input type='checkbox' class='checkbox' name='chkLocID[]' value='USG001' /> </td> <td class="odd" width="250" > <?php echo $this->escape($proposer->ID_ORGANISME);?> </td> <td class="odd" width="400" > <?php echo $this->escape($proposer->ID_OFFRE);?> </td> <td class="odd" width="400" > </td> </tr> <?php endforeach; ?>
Mais rien ne s'affiche?????
Hors ligne
tu n'as pas besoin d'instatencier une table $proposer = new Proposer();
vu que tu ne l'utilise pas fais ton select sur la base
$select = $db->select()->setIntegrityCheck(false); $select->from('proposer') ->joinInnerUsing('organisme', 'ID_ORGANISME') ->joinInnerUsing('offre', 'ID_OFFRE') ->order(array('offre.ID_OFFRE', 'organisme.ID_ORGANISME')); print_r($select->_toString());
ou alors utilise la table mais sans le "from('proposer')" vu que tu fais un select sur la table proposer
$proposer = new Proposer(); $select=$proposer->->select()->setIntegrityCheck(false); $select-> ->joinInnerUsing('organisme', 'ID_ORGANISME') ->joinInnerUsing('offre', 'ID_OFFRE') ->order(array('offre.ID_OFFRE', 'organisme.ID_ORGANISME')); print_r($select->_toString());
cela devrait t'afficher la requête SQL généré et donc te permettre de la jouer avec MySQL et de voir ce qu'il se passe.
A+JYT
Hors ligne
salut merci pour votre aide mais je suis vraiment désolé rien ne s'affiche dans la vue; est ce que la jointure que j'ai fait est correcte??
et est ce que j'ajoute cette méthode au classe Proposer.php??
<?php class Proposer extends Zend_Db_Table_Abstract { protected $_name='proposer'; protected $_primary=array('ID_ORGANISME','ID_OFFRE'); protected $_referenceMap=array( 'ID_ORGANISME'=> array( 'columns'=> 'ID_ORGANISME', 'refTableClass'=> 'Organismes', 'refColumns'=> 'ID_ORGANISME'), 'ID_OFFRE' => array( 'columns' => 'ID_OFFRE', 'refTableClass' => 'Offres', 'refColumns' => 'ID_OFFRE' //facultatif, il s'agit de la PK par défaut )); public function getLibelle() { $select = $this->select (); $select->setIntegrityCheck(false); $select->from('proposer') ->joinInnerUsing('organisme', 'ID_ORGANISME') ->joinInnerUsing('offre', 'ID_OFFRE') ->order(array('offre.ID_OFFRE', 'organisme.ID_ORGANISME')); return $this->fetchAll ( $select ); } } ?>
Merci encore de pouvoir m'aider
Hors ligne
Salut je suis un débutant et je veux savoir comment faire la jointure entre les tables
sonnerie portable gratuite
Hors ligne