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

Langage PHP Discussion :

Remplir un tableau avec 2 tables différentes


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Remplir un tableau avec 2 tables différentes
    Bonjour tout le monde.

    Me revoici avec une nouvelle question :
    Est il possible de remplir un tableau (dans un modèle) avec des données provenant de 2 tables différentes ?
    (1 table et 1 relation porteuse transformée en table).

    Merci d'avance les amis !!

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    est ce que tu va faire une requete pour les deux table ou ta 2 requete chacun pour une table

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Merci de me répondre M4riachi !!
    J'ai 2 requetes différentes (1pour chaque table)
    Je recherche les informations d'un articles et ensuite les informations relatives à l'article dans la commande.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    tu peu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $array = $db->fetchAll($requete1);
     
    $array = $db->fetchAll($requete2);

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Ok !
    je vais tester sa ! (enfin je vais tenter de comprendre et d'appliquer )

    Pour la vue, comment faire ?
    je fais de cette manière pour remplir un tableau avec une seule table :
    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
    // je n'ai pas mis l'entête du tableau pour ne pas surcharger.
    <?php $array = $this->article;
    	for ($i = 0; $i < count($this->article);$i++) 
    	{
    ?>
    	<tr>
    		<td><?php  echo $array[$i]['donnee1_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee2_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee3_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee4_table1'];?></td>
     
    		...
    	</tr>
    <?php	
    	} 
    ?>
    Et je voudrais un tableau dans ce genre la.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	<tr>
    		<td><?php  echo $array[$i]['donnee1_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee2_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee3_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee4_table1'];?></td>
    		<td><?php  echo $array[$i]['donnee1_table2'];?></td>
    		<td><?php  echo $array[$i]['donnee2_table2'];?></td>
    		<td><?php  echo $array[$i]['donnee3_table2'];?></td>
    		<td><?php  echo $array[$i]['donnee4_table2'];?></td>
    		<td><?php  echo $array[$i]['donnee5_table2'];?></td>
    		<td><?php  echo $array[$i]['donnee6_table2'];?></td>
     
    	</tr>
    // toujours pareil, j'ai réduit le code au stricte nécessaire

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    si ta le meme compte sur les deux requete tu poura faire comme ta fé. sinon tu dois faire 2 boucle chacun fé le compte sur un champ de lun des table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for($i = 0; $i <= count($array['champ1_table1']);$ii)
    {
           echo $array[$i]['champ1_table1']);
           echo $array[$i]['champ2_table1']);
    }
     
    for($i = 0; $i <= count($array['champ1_table2']);$ii)
    {
           echo $array[$i]['champ1_table2']);
           echo $array[$i]['champ2_table2']);
    }

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    ce que Je cherche exactement c'est un tableau qui ressemblerait à celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Numéro article |Libellé |	Prix|Quantité|Heure achat|Date achat|Lieu achat|...
       article1       |libelle1| 89 |    30    | 12h30       | 19/01       | Paris 
       article2       |libelle2| 100 | 80    | 17h50       | 20/12       | Lyon 
     
    désolé pour le décalage ... :/
    Sachant que numero article libelle prix viennent de la table article
    et quantité heure d'achat, date achat, lieu achat ... proviennent de la porteuse entre article et facture

    et sachant aussi que toutes les valeurs d'une ligne ont un rapport entre elles.
    Je ne peut retrouver des informations concernant l'article 2 dans la ligne de l'article 1 bien évidement.

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Tu doi faire une jointure dans ta requete et retourner tou

  9. #9
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Aurais tu éventuellement un exemple sous la main ?

    Merci encore

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Bonjour,

    pour la jointure un truc du genre :

    SELECT table1.article, table1.libelle, table2.date, table2.lieu FROM table2 RIGHT JOIN table1 ON table1.id = table2.id_article

    Après faut adapter à ton cas ...

  11. #11
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $db = $this->getAdapter("dbAdapter");
     
    $query = "select * from parent p, enfant e where p.parent_id = e.parent_id";
     
    return $db->fetchAll($query);
    moi je travaile avec les requete parce que c plus facile .

  12. #12
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Héhé !! Merci les gars !! La requete fonctionne impecablement sous PhpMyAdmin
    au niveau du code, j'ai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
     
    $query = "select 'champs à sélectionner' 
    from article a, artdos d, facture f 
    where a.numero_article = d.numero_article 
    AND f.numero_facture =".$id" 
    AND d.numero_facture = f.numero_facture";
     
    return $db->fetchAll($query);
    Mais je dois avoir un problème au niveau du .$id car il me trouve une erreur sur cette ligne la.
    Pour l'erreur, je ne suis absolument pas sur que cela provienne du $id, l'erreur se situerais maintenant la ligne en dessous ...
    Y'a une erreur sa c'est sur mais ou ??
    pour info voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error in C:\wamp\www\XXXXXX\application\models\Artdos.php on line 14
    sachant que la ligne 14 est la dernière ligne de la requête (le dernier AND).

  13. #13
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Problème je pense résolu, enfin je pense, il me manquait un . après le $id ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
     
    $query = "select 'champs à sélectionner' 
    from article a, artdos d, facture f 
    where a.numero_article = d.numero_article 
    AND f.numero_facture =".$id." 
    AND d.numero_facture = f.numero_facture";
     
    return $db->fetchAll($query);
    Le problème est qu'il ne me trouve aucun champs dans aucune table. j'ai une erreur qui m'indique qu'il ne trouve pas par exemple mon numéro d'article.

    Pour info, j'ai mis ce code dans le modèle de la table de la relation porteuse : Artdos (qui est censée faire jointure entre les 2 tables et contenir des données).

  14. #14
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Vérifier t'a requête sur phpMyAdmin s'il ne te retourne aucun enregistrement, alors tu dois faire une jointure externe avec INNER JOIN

  15. #15
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Merci encore de votre aide !

    Ma requête fonctionne parfaitement sur phpMyAdmin, c'est pour cela que je trouve sa étrange...

  16. #16
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Problème résolu !!
    L'erreur était à la fois simple et pas compliquée ... Mais tellement évidente que je ne l'ai pas vue ...

    il suffisait simplement de retirer les ' qui entourent les noms de variables dans le select.

    le code correct est celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
     
    $query = "select a.numero_article, a.libelle_article, d.prix_article //etc ...
    from article a, artdos d, facture f 
    where a.numero_article = d.numero_article 
    AND f.numero_facture =".$id." 
    AND d.numero_facture = f.numero_facture";
     
    return $db->fetchAll($query);
    Merci encore de votre aide c'est génial !!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplir un tableau avec un autre
    Par sandball22 dans le forum C
    Réponses: 28
    Dernier message: 20/04/2007, 16h13
  2. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  3. Réponses: 8
    Dernier message: 11/03/2007, 18h10
  4. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 15h14
  5. Réponses: 8
    Dernier message: 13/03/2006, 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