Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 12h09   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
Par défaut Faire des requetes SQL avec Zend

Bonjour je débute sous Zend et je voudrais faire des requetes SQL, mais je ne sais pas trop comment faire

Exemple de requete que je souhaite faire:
Code :
1
2
3
4
 
SELECT offre_contrat, offre_activite, offre_dep 
FROM offre
WHERE offre_contrat=.... AND offre_activité=... AND offre_dep=...
Les "..." sont des variable récupéré d'un formulaire

Merci de votre aide!
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 15h40   #2
Candidat au titre de Membre du Club
 
Homme
Inscription : octobre 2006
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 11
Points : 11
Points : 11
Code :
1
2
3
4
5
6
$db = Zend_Registry::get("dbAdapter");
$select = $db->select();
$select->from('offre', array('offre_contrat', 'offre_activite', 'offre_dep'));
$select->where('offre_contrat= ?', $offre_contrat);
$select->where('offre_activite= ?', $offre_activite);
$select->where('offre_dep= ?', $offre_dep);
dans ce cas ci-dessus, c'est une clause AND par défaut. Si par exemple tu aurai voulu faire une clause OR, tu aurai du écrire :

Code :
1
2
3
$select->where('offre_contrat= ?', $offre_contrat);
$select->where('offre_activite= ?', $offre_activite);
$select->orWhere('offre_dep= ?', $offre_dep);
en espérant que ça t'aidera.
byc_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h00   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
comment faire pour afficher le resultat dans la vue correspondante, car cette requete est effectuée dans le controller, et que je veux afficher les résultats dans une vue

Merci
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h19   #4
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Citation:
car cette requete est effectuée dans le controller
Pas bien... Tu devrais lire quelques tutos en plus
__________________
HADOPI : black-out du net!
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h28   #5
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
dans la vue rech j'ai un formulaire, et dans le controller, je test si le formulaire a bien été rempli, je recupère les valeurs, puis j'effectu la requete...

Ce n'est pas comme cela qu'il faut faire ? quelqu'un peut me filer des tuto a ce sujet ?
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h31   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Tu as ce qu'il te faut ici : http://zend-framework.developpez.com/
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h34   #7
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
En fait, normalement tu dois faire tes requêtes SQL dans le modèle, si tu souhaite suivre une architecture MVC. Bon, ceci dit, les gros porcs (comme moi) en mettent aussi quelques unes dans les controllers.
Pour répondre à ta 1ère question, moi je fais comme ça pour faire passer des variables à ma vue:
Code :
1
2
3
 
$texteAAfficher='qsdf';
$this->view->texte=$texteAAfficher;
Et dans la vue :
Code :
1
2
 
echo $this->texte;
__________________
HADOPI : black-out du net!
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 16h44   #8
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
Désolé, c'est moi me suis mal exprimé. Ma requete est ecrite dans le model Offre
donc dans le controleur je fais:
Code :
1
2
3
4
5
6
 
$offre = new Offre();
$result = $offre->recherche();
$data = $result->fetchAll();
 
$this->view->offres = $data;
et dans la vue:
Code :
1
2
3
4
 
foreach ($this->offres as $offre):
   echo $offre->offre_nom;
endforeach;
Mais ca ne marche pas...
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 10h09   #9
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
fetchAll ne retourne pas un objet. C'est un tableau donc tu dois faire comme ça:

Code :
1
2
3
foreach ($this->offres as $offre):
    echo $offre['offre_nom'];
endforeach;
Edit: tu peux aussi modifier la valeur de retour avec setFetchMode()

Code :
$db->setFetchMode(Zend_Db::FETCH_OBJ);
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 10h25   #10
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
Merci beaucoup, j'ai bien mieu compris!!

Dernière question:
j'affiche le résultat de la requete en dessous de mon formulaire, comment faire pour que le resultat ne soit afficher seulement si le formulaire a été soumis ?

Merci
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 10h29   #11
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Ben tu dois faire un test dans le controller puis passé une valeur boolean à ta vue et si true tu affiche la requête et sinon pas...
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 10h35   #12
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 156
Points : 34
Points : 34
Encore merci, c'était tout bete et j'y ai meme pas pensé...
C'est tout bon.
leroidje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2012, 11h48   #13
Invité de passage
 
Femme
Inscription : avril 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations forums :
Inscription : avril 2012
Messages : 25
Points : 3
Points : 3
Par défaut comparaison

Bonjour, je veux comparer 2 valeurs de 2 tables différente pour l'affichage de mon résulta, autrement je veux faire :
"select *
from fournisseur F, frn_contact C
where F.code_clt = C.code_clt

Comment puis-je le faire SVP ? Merci d'avance
hooouuta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2012, 17h52   #14
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 686
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 686
Points : 1 052
Points : 1 052
Attention la mise en forme d'une requête sous Zend énoncé plus haut ne respecte pas tout, en outre les quotes qui changent d'un SGBD à l'autre.

Donc si la requête est faite dans le modèle au lieu de faire :
Code :
$select->where('offre_contrat= ?', $offre_contrat);
il faudrait faire :
Code :
$select->where($this->_db->quoteIdentifier('offre_contrat') . ' = ?', $offre_contrat);
Pour la requête de comparaison tu peux faire une jointure, où encore garder ta syntaxe, je te dirais que cela dépend fortement de la volumétrie mais étalements des index de tes tables.

Petite astuce pour voir ce que ta requête Zend donne en SQL :
Code :
Zend_Debug::dump($select->__toString());
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2012, 01h57   #15
Invité de passage
 
Femme
Inscription : avril 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Tunisie

Informations forums :
Inscription : avril 2012
Messages : 25
Points : 3
Points : 3
salut tout le monde
j'ai 2 tables :
1. Une table client avec en clé primaire code_client
2. Une table cntct_clt avec en clé étrangère code_client
Mon problème que quand je clique afficher contacts d'un fournisseur donnée on m'affiche touts les contact de tous les fournisseur hors que j'ai besoin d'afficher que les contacts d'un fournisseur tel !
Merci pour votre aide, j'en ai tellement besoin
le code que j'ai :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
class Library_Model_ListeContact {
    public function listeContact($CODE_FRN = null) {
if($CODE_FRN){
        $db = Zend_Db_Table::getDefaultAdapter();
           $selectCntcFRN= $db->fetchAll($db->select()
                                        ->from(array('F' => 'fournisseur'))
                                        ->joinLeft(array('Fn' => 'frn_contact'),
                                                    'F.fournisseur = Fn.frn_contact',
                                                    array())
                                        ->where('F.fournisseur= ?', $CODE_FRN));
        return(sizeof($selectCntctFRN) > 0 ? $selectCntctFRN : false);
    }
}
hooouuta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web