Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-04-2009 19:50:22

zantetsu
Membre
Date d'inscription: 05-01-2009
Messages: 15

requete SQL / checkbox [Résolu]

bonjour,

dans le cadre d'un petit projet dont un des objectifs est la transformation de fiche (remplis avec des données contenu dans une bdd) en pdf. je rencontre un petit problème avec une requête.

en gros, j'ai 2 tables "fiche",  "outils" et une table outils_fiche

bref, ma requête est par exemple la suivante:


SELECT libelle FROM outils JOIN outils_fiche ON idoutils = outils.id JOIN fiche ON outils_fiche.idfiche = fiche.id
WHERE fiche.id = 1


cette requête fonctionne car elle me retourne bien les 2libelle correspondant (php et mysql)


dans mon formulaire, voici comment j'ai traduit ma requete:
$registry = Zend_Registry::getInstance();   
$db = $registry->get('db');

$select = $db->select()
            ->from('outils',('libelle'))
        ->join ('outils_fiche','outils_fiche.idoutils=outils.id')
        ->join ('fiche', 'outils_fiche.idfiche=fiche.id')   
         ->where('fiche.id =?', 1);

echo "test : ".$select;

et voila ce que me donne mon echo $select :

SELECT `outils`.`libelle`, `outils_fiche`.*, `fiche`.* FROM `outils` INNER JOIN `outils_fiche` ON outils_fiche.idoutils=outils.id INNER JOIN `fiche` ON outils_fiche.idfiche=fiche.id WHERE (fiche.id =1)

il ne me retourne donc pas que le libelle comme je le voudrais hmm

je ne vois pas ou est l'erreur dans mon code, j'ai essayer de suivre les exemples que j'ai trouver à travers d'autre topic ^^ dc si quelqu'un vois ou je "merde" merci de m'aider smile
c'est surement bête comme erreur, mais je patauge depuis un pti moment déjà sans trouver l'erreur ...

Dernière modification par zantetsu (19-04-2009 23:43:45)

Hors ligne

 

#2 16-04-2009 22:26:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: requete SQL / checkbox [Résolu]

Hello,

Code:

$select = $db->select()
            ->from('outils',array('libelle'))
        ->join ('outils_fiche','outils_fiche.idoutils=outils.id', null)
        ->join ('fiche', 'outils_fiche.idfiche=fiche.id',null)   
         ->where('fiche.id =?', 1);

En 3ème paramètre, tu mets les colonnes à null sinon c'est * par défaut.

A+

Dernière modification par mikaelkael (16-04-2009 22:27:21)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 18-04-2009 18:29:22

zantetsu
Membre
Date d'inscription: 05-01-2009
Messages: 15

Re: requete SQL / checkbox [Résolu]

c'est parfais, c'était ca, j'aurais du chercher un peu plus hmm

j'ai encore une question ^^"

pour mon formulaire, j'ai besoin de récupérer des valeur dans ma bdd et de les afficher dans un multi checkbox.
mon collègue a penser à utiliser un tableau associatif pour avoir l'id  et la valeur correspondante.
le but étant d'avoir quelque chose comme ca:

->setMultiOptions(array('1'=>'maison', '2'=>'entreprise'));

1/2 correspondant a l'id dans ma table et maison/entreprise au libelle de cette table

        $select = $db->select()
            ->from('lieu');
           $l= $db->fetchpairs($select);

       $lieu = new Zend_Form_Element_Multicheckbox('lieu');
       $lieu->setLabel('lieu de conception :')
          ->setRequired(true);
   
       foreach($l as $key=>$value){
       $lieu->addMultiOption($key, $value);

//        print_r($obj);
//        echo " clef - ".$key." / valeur - ".$value."";       
    }

cela m'affiche bien le multi checkbox avec les différentes valeur (maison, entreprise...) par contre coté traitement je n'arrive pas à récupérer l'id correspondant à maison ou autre... or j'ai besoin de récupérer cette id pour l'enregistrer dans une autre table hmm


bref, si quelqu'un vois un truc affreux dans mon code, ou  sais comment résoudre mon problème, ou même, a une autre méthode plus simple, je prend ^^

Dernière modification par zantetsu (18-04-2009 19:53:05)

Hors ligne

 

#4 18-04-2009 20:56:14

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: requete SQL / checkbox [Résolu]

Hello,

Et:

Code:

 $select = $db->select()->from('lieu', array('id_lieu', nom_lieu'));
$l= $db->fetchpairs($select);

$lieu = new Zend_Form_Element_Multicheckbox('lieu');
$lieu->setLabel('lieu de conception :');
$lieu->setRequired(true);
$lieu->setMultiOptions($l);

A+

Dernière modification par mikaelkael (18-04-2009 20:57:00)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 19-04-2009 01:53:18

zantetsu
Membre
Date d'inscription: 05-01-2009
Messages: 15

Re: requete SQL / checkbox [Résolu]

j'ai mis le code mais je bug tjrs au niveau de la récupération de la valeur

print_r($l); m'affiche bien :
Array ( [1] => Maison [2] => lycée [3] => entreprise )

au niveau de la recuperation de ma valeur, j'ai ca

    $lieufiche =new lieufiche();
    $rowf=$lieufiche->createRow();
    $rowf->idfiche = $row->id;
    $rowf->idlieu=$form->getValue('lieu');
    $rowf->save();


bref, quand je valide mon formulaire, ca me sort:
SQLSTATE[HY000]: General error: 1452 Cannot add or update a child row: a foreign key constraint fails (`pdf/lieu_fiche`, CONSTRAINT `lieu_fiche_ibfk_1` FOREIGN KEY (`idlieu`) REFERENCES `lieu` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)

dans mon traitement je fait: $this->view->lieuu= $form->getValue('lieu');

dans ma vue

foreach($this->lieuu as $li){
             echo $li;
        }

ca m'affiche bien 2 dc la bonne valeur.


donc j'ai du foiré un truc ds ma base ou autre hmm
un peu d'aide est encore la bienvenue

merci d'aider le bon noob que je suis smile

Dernière modification par zantetsu (19-04-2009 23:13:31)

Hors ligne

 

#6 19-04-2009 23:43:11

zantetsu
Membre
Date d'inscription: 05-01-2009
Messages: 15

Re: requete SQL / checkbox [Résolu]

bon, ba j'ai finis par trouvé tout seul (enfin avec l'aide de mon collègue surtout xD ), je suis un peu autiste en faite hmm
quand je faisait getValue('lieu') je récupérais un Array ce qui est logique hmm

dc suffit juste de faire ca :

    $tab2 = $form->getValue('lieu');
                for ($a=0;$a<count($tab2);$a++){
                $lieufiche =new lieufiche();
                $rowf=$lieufiche->createRow();
                $rowf->idfiche = $row->id;
                $rowf->idlieu = $tab2[$a];
                $rowf->save();
                }

c'était pas compliqué mais en tant que bon noob, j'y avais pas pensé smile

si ya une autre méthode plus simple ou plus approprié je prend smile

merci mikaelkael pour l'aide wink

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