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 :

Concaténer résultats SQL.


Sujet :

Zend_Db PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut Concaténer résultats SQL.
    Bonjour,

    J'ai repris le projet d'un collégue qui est développer avec Zend.

    J'ai une requête sur une table qui me retourne des photos en fonction d'un thème.

    Le problème c'est que ma requête ce trouve dans une boucle for et je n'arrive pas à concaténer les résultats.

    Voici le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
     
    // Recherche des id des thèmes associés  -- Le tableau retourné est OK
    $tab_th_associe = $this->searchCarteByThemeAssocie($id);
     
    $tailletableau = sizeof($tab_th_associe);
     
            if (Zend_Registry::get('session')->theme && $id == 0)
                $id = Zend_Registry::get('session')->theme;
     
     
    		$datas_sql = array();
    		 for($i=0; $i<$tailletableau; $i++){
     
    			$select = $this->_db->select()->from(array('ct' => 'Carte_Theme'), array('CT_CARTE'));
    			$select->join(array('c' => 'Carte'), "c.CA_COMPTEUR=ct.CT_CARTE", array('CA_COMPTEUR'));
     
     
    			if ($pays != NULL) {
    				$select->where("c.CA_PAYS=?", $pays);
    			}
     
    			if ($departement != NULL) {
    				$select->where("c.CA_DEPARTEMENT=?", $departement);
    			}
     
    			// Where en fonction de l id du théme
    			$select->where("ct.CT_THEME=?",$tab_th_associe[$i] );
     
    			$select->order('CA_ORDRE_FORMAT');
     
                            // Concaténation qui pose problème !!!
    			$datas_sql .= $this->_db->fetchAll($select);		
     
    		}//END FOREACH
    Si je remplace "$tab_th_associe[$i]" directement par id ça fonctionne.
    Le problème vient de cette ligne : $datas_sql .= $this->_db->fetchAll($select);

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    As-tu essayé en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datas_sql .= $this->_db->fetchAll($select);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datas_sql[] = $this->_db->fetchAll($select);
    En ligne 13 $datas_sql est déclaré comme étant un tableau

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Merci de ta réponse le problème c'est qu'il me recrée des sous-tableau vide.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Array ( [0] => 120612 [1] => 110453 [2] => 113136 [3] => 93825 [4] => 110642 [5] => 38539 [6] => 50787   ...   [78] => 139622 [79] => 256993 [80] => Array [81] => Array [82] => Array [83] => Array [84] => Array [85] => Array [86] => Array [87] => Array [88] => Array [89] => Array [90] => Array [91] => Array [92] => Array [93] => Array [94] => Array [95] => Array [96] => Array [97] => Array [98] => Array [99] => Array [100] => Array [101] => Array )
    Alors que moi je veux juste qu'il me met les résultats à la suite des autres tableau.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Bah il suffit de faire un test avant de rajouter les données et d'éjecter les résultats ne renvoyant rien, quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $data = $this->_db->fetchAll($select);
    if ( ! empty($data)) {
       $datas_sql[] = $data;
    }

  5. #5
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Cette réponse est presque parfaite.

    Il veut juste les données et pas toutes les métadonnées donc un toArray() sur le result

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data = $this->_db->fetchAll($select);
    if ( ! empty($data)) {
       $datas_sql[] = $data->toArray();
    }

Discussions similaires

  1. Perl Et Récuperation Résultat Sql
    Par GOTRUNK dans le forum SGBD
    Réponses: 4
    Dernier message: 09/06/2006, 11h36
  2. Réponses: 7
    Dernier message: 24/05/2006, 11h52
  3. [Oracle] Tableau résultat Sql et casse
    Par cbroissa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/04/2006, 23h44
  4. Comment enregistrer un résultat SQL en format TXT ...
    Par Jamal_71 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 30/01/2006, 14h23
  5. Affecter résultat SQL d'une requête à une variable
    Par bozolozo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/01/2005, 17h37

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