IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

select dans un foreach


Sujet :

Zend_Db PHP

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Par défaut select dans un foreach
    Bonjour, j'ai une table de produit et une autre table de produit associé à un produit. Exemple :
    • p1 p2
    • p1 p3
    si j'ai p1 je pourrai prendre p2 et/ou p3. Je veux donc recuperer les id p2 et p3 de la table produit associé et faire un requete sur la table produit pour recuperer leurs descriptions.($idproduit=p1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $produitassoc = new ProduitA();
    		$rowset = $produitassoc->fetchAll("idproduit = '$idproduit'");
     
    		$liste = new Produits();
     
    		foreach($rowset as $row){
    			$this->view->liste = $liste->fetchAll("idproduit = '$row->idpassoc'");
    		}
    le $this->view->liste me renvoi que le dernier enregistrement. J'ai essayé avec une jointure mais ça plante (requete vide). Je m'y suis mit hier donc je comprend pas encore tout^^

  2. #2
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Par défaut
    Citation Envoyé par xclam Voir le message
    Bonjour, j'ai une table de produit et une autre table de produit associé à un produit. Exemple :
    • p1 p2
    • p1 p3
    si j'ai p1 je pourrai prendre p2 et/ou p3. Je veux donc recuperer les id p2 et p3 de la table produit associé et faire un requete sur la table produit pour recuperer leurs descriptions.($idproduit=p1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $produitassoc = new ProduitA();
    		$rowset = $produitassoc->fetchAll("idproduit = '$idproduit'");
     
    		$liste = new Produits();
     
    		foreach($rowset as $row){
    			$this->view->liste = $liste->fetchAll("idproduit = '$row->idpassoc'");
    		}
    le $this->view->liste me renvoi que le dernier enregistrement. J'ai essayé avec une jointure mais ça plante (requete vide). Je m'y suis mit hier donc je comprend pas encore tout^^
    Bonsoir !

    Alors, j'ai pas tout compris .. Mais je pense savoir pourquoi ton truc 'plante'
    Essaye un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this -> view -> liste = Array( );
    foreach($rowset as $row)
    	$this->view->liste[] = $liste->fetchAll("idproduit = '$row->idpassoc'");
    Mais, si j'ai compris, tu as deux tables, avec l'une ( produitA ) qui a pour clef étrangère la clef primaire de l'autre ( Produit )
    Parce qu'à ce moment, au lieu du fetchAll( ... ) il existe sur Zend_Db_Table_Row_Abstract ( le type de ta variable $row dans le foreach ) un raccourci : $row -> findProduits( );
    Pour peu que tes liens entre les tables soient bien définis comme il faut, ça marchera !

    Si tu tiens vraiment à tout charger, effectivement c'est aussi simple comme ca, sinon en requete ...
    $produitassoc -> getAdapter( ) -> fetchAssoc( <<<SQL
    SELECT Produits.idproduit
    FROM Produits, ProduitA
    WHERE idproduit = '{$idproduit}'
    AND Produits.idproduit = ProduitA.idpassoc
    SQL
    );

    Et ca c'est sensé te renvoyer les id de touts les produits de la table Produits qui correspondent, mais pour avoir le reste, faut faire un find, et compagnie ... bref, la galère

    Voili, j'espère que ça va t'aider !

    Bonne chance !

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 60
    Par défaut
    Citation Envoyé par xclam Voir le message
    Bonjour, j'ai une table de produit et une autre table de produit associé à un produit. Exemple :
    • p1 p2
    • p1 p3
    si j'ai p1 je pourrai prendre p2 et/ou p3. Je veux donc recuperer les id p2 et p3 de la table produit associé et faire un requete sur la table produit pour recuperer leurs descriptions.($idproduit=p1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $produitassoc = new ProduitA();
    		$rowset = $produitassoc->fetchAll("idproduit = '$idproduit'");
     
    		$liste = new Produits();
     
    		foreach($rowset as $row){
    			$this->view->liste = $liste->fetchAll("idproduit = '$row->idpassoc'");
    		}
    le $this->view->liste me renvoi que le dernier enregistrement. J'ai essayé avec une jointure mais ça plante (requete vide). Je m'y suis mit hier donc je comprend pas encore tout^^

    C'est normal que tu ait le dernier enregistrement, car dans ton foreach tu écrase la valeur de $this->view->liste à chaque $row.
    Je pense que utilisant un tableau d'objet, tu pourras donc rejoudre le problème.
    $this->view->liste[] = $liste->fetchAll("idproduit = '$row->idpassoc'");

  4. #4
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Et si tu utilisé l'objet zend_db_select pour faire une jointure entre tes 2 tables, au lieu de faire une requête pour chaque element de ta requete precedentes

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [PHP 5.3] SELECT(avec jointure) dans un foreach de checkbox
    Par NuDub dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2010, 14h42
  3. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  4. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo