Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
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
Hello,
$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)
Hors ligne
c'est parfais, c'était ca, j'aurais du chercher un peu plus
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
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
Hello,
Et:
$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)
Hors ligne
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
un peu d'aide est encore la bienvenue
merci d'aider le bon noob que je suis
Dernière modification par zantetsu (19-04-2009 23:13:31)
Hors ligne
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
quand je faisait getValue('lieu') je récupérais un Array ce qui est logique
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é
si ya une autre méthode plus simple ou plus approprié je prend
merci mikaelkael pour l'aide
Hors ligne