Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-04-2009 01:23:12

souna22
Nouveau membre
Date d'inscription: 22-03-2009
Messages: 4

jointure entre les tables

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

 

#2 20-04-2009 16:59:44

souna22
Nouveau membre
Date d'inscription: 22-03-2009
Messages: 4

Re: jointure entre les tables

voilà ce que j'ai:
proposition.php

Code:

<?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

Code:

<?php
class Offres extends Zend_Db_Table
{
protected $_name = 'offre';

}
?>

organisme.php

Code:

<?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

 

#3 20-04-2009 17:26:40

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: jointure entre les tables

passe par un select

Code:

$db->select
->from('table1')
->join('table2', 'table1.id=table2.id')
->join('table3', 'table2.id=table3.id')
->where......

A+JYT

Hors ligne

 

#4 21-04-2009 01:04:01

souna22
Nouveau membre
Date d'inscription: 22-03-2009
Messages: 4

Re: jointure entre les tables

Salut j'ai fait un truc comme ça:

Code:

$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:

Code:

             <?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" >&nbsp;</td>
             </tr>
             <?php endforeach; ?>

Mais rien ne s'affiche?????

Hors ligne

 

#5 21-04-2009 09:24:03

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: jointure entre les tables

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

Code:

$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

Code:

$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

 

#6 21-04-2009 15:28:56

souna22
Nouveau membre
Date d'inscription: 22-03-2009
Messages: 4

Re: jointure entre les tables

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??

Code:

<?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

 

#7 16-07-2009 04:56:46

manola
Banni
Date d'inscription: 16-07-2009
Messages: 1

Re: jointure entre les tables

Salut je suis un débutant et je veux savoir comment faire la jointure entre les tables
sonnerie portable gratuite

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages