Liste générée a partir de champs contenus dans 2 tables

Signaler
Messages postés
1
Date d'inscription
jeudi 26 mai 2005
Statut
Membre
Dernière intervention
25 juillet 2005
-
Messages postés
285
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2006
-
Bonjour,

Voici mon probleme: je dois générer une liste d'ingénieur dans un fichier Excel.
Cette liste contient des données issues de 2 (voir 3) tables différentes:


Code :

<LI>table formulaire_bd
<LI>table formulaire_gap
<LI>table formulaire_rrh</LI>



J'arrive a generer ce fichier excel, mais les données sont melangées; je m'explique:

Je veux récupérer:
"nom", "prenom" et "codeing" dans la table fomulaire_bd.
"date_entree" dans la table formulaire_gap


Il faut savoir qu'un ingénieur a un codeing unique.
les premières données saisies sont celles du formulaire_bd, puis le formulaire_gap est alors rempli.
Cependant, les données d'un ingénieur n'ont as nécessairement été saisies dans le formulaire_gap. --> mais il faut cependant que je puisse inclure dans la liste les ingnieurs dont le formulaire_gap n'a pas encore été saisi.
Ainsi, je veux pouvoir générer une liste de tous les ingénieurs contenus dans ces 2 tables (qui ont toutes 2 le champ "codeing" propre à 1 seul ingénieur).

J'espère avoir été suffisemment clair...

Voici le tableau que j'obtiens:
les 5 1eres lignes sont correcte, elles correspondent à la requete "req", les dates ne sont pas melangées.
Les lignes suivantes quant à elles, recuperent les infos des requete "req2" et "req3", et là c le bordel.. tout se melange...


Code :

<LI>BD NOM PRENOM DATE D'ENTREE
<LI>
<LI>
<LI>OMEGA DURAND Alfred 2005-05-28
<LI>OMEGA LAVALLE Philippe 0000-00-00
<LI>OMEGA BIDEUL Truc 2005-07-15
<LI>OMEGA COSATI Sophie 2002-06-20
<LI>OMEGA DUPONT Jean-paul 2002-05-20
<LI>OMEGA 0000-00-00
<LI>
<LI>OMEGA DUPONT Jean-paul 2002-09-20
<LI>OMEGA DURAND Alfred 2002-09-20
<LI>OMEGA BIDEUL Truc 2002-09-20
<LI>OMEGA LAVALLE Philippe 2002-09-20
<LI>OMEGA COSATI Sophie 2002-09-20
<LI>OMEGA MARSO Marc 2002-09-20
<LI>OMEGA 111 111 2002-09-20
<LI>OMEGA 777 777 2002-09-20
<LI>OMEGA 888 888 2002-09-20
<LI>OMEGA 999 999 2002-09-20
<LI>OMEGA 34 545 2002-09-20
<LI>OMEGA 5454 54654 2002-09-20
<LI>OMEGA 2002-09-20
<LI>OMEGA 55 656 2002-09-20
<LI>OMEGA 465 456 2002-09-20
<LI>OMEGA 1 1 2002-09-20
<LI>OMEGA 456 123 2002-09-20
<LI>OMEGA 132 132 2002-09-20
<LI>OMEGA toto 301 2002-09-20
<LI>OMEGA 258 258 2002-09-20
<LI>OMEGA 7788 7788 2002-09-20</LI>


Voilà le code:



Code :

<LI>//requete pour aller chercher les informations des champs
<LI>$req = mysql_query("
<LI>SELECT *
<LI>FROM formulaire_bd f_bd INNER JOIN formulaire_gap f_gap ON f_bd.codeing=f_gap.codeing
<LI>WHERE f_bd.bd ='OMEGA'
<LI>");
<LI>$result = mysql_fetch_array($req);
<LI>
<LI>//requete pour aller chercher les informations des champs
<LI>$req2 = mysql_query("
<LI>SELECT *
<LI>FROM formulaire_bd
<LI>WHERE bd ='OMEGA'
<LI>");
<LI>$result2 = mysql_fetch_array($req2);
<LI>
<LI>//requete pour aller chercher les informations des champs
<LI>$req3 = mysql_query("
<LI>SELECT date_entree
<LI>FROM formulaire_gap f_gap INNER JOIN formulaire_bd f_bd ON f_bd.codeing=f_gap.codeing
<LI>
<LI>");
<LI>$result3 = mysql_fetch_array($req3);
<LI>
<LI>?>
<LI><html xmlns:o="urn:schemas-microsoft-com:office:office"
<LI>xmlns:x="urn:schemas-microsoft-com:office:excel"
<LI>xmlns="www.w3.org/TR/REC-html40&...
<LI><head>
<LI><meta http-equiv="Content-Type" content="text/html; charset=iso-latin-1" />
<LI><meta name="ProgId" content="Excel.Sheet" />
<LI><meta name="Generator" content="Microsoft Excel 9" />
<LI><style>
<LI>
<LI>
<LI></style>
<LI></head>
<LI>
<LI>
<LI><table x:str="true" border="1" cellpadding="0" cellspacing="0">
<LI>
<LI> ----

<LI>, BD</td>
<LI> NOM,
<LI> PRENOM,
<LI> DATE D'ENTREE,
<LI>
<LI>
<LI> <? do { ?>
<LI>----

<LI> <? echo $result['bd'] ?>,
<LI> <? echo $result['nom'] ?>,
<LI> <? echo $result['prenom'] ?>,
<LI> <? echo $result['date_entree'] ?>,
<LI>
<LI> <? } while ($result=mysql_fetch_array($req)); ?>
<LI>
<LI>
<LI> <? do { ?>
<LI>----

<LI> <? echo $result2['bd'] ?>,
<LI> <? echo $result2['nom'] ?>,
<LI> <? echo $result2['prenom'] ?>,
<LI> <? echo $result3['date_entree'] ?>,
<LI>
<LI> <? } while ($result2=mysql_fetch_array($req2)); ?>
<LI>
<LI>
</LI></TD></TR></TBODY></TABLE>


(A noter que ce code html sera converti en fichier Excel)

Je précise un truc:

en faisant ça

SELECT *
FROM formulaire_bd f_bd INNER JOIN formulaire_gap f_gap ON f_bd.codeing=f_gap.codeing
WHERE f_bd.bd ='OMEGA'
");

la condition " ON f_bd.codeing=f_gap.codeing " va limiter la liste aux ingés qui se trouvent dans les 2 tables... or je souhaite pouvoir recupérer TOUS les ingés qui appartiennent à la BD 'OMEGA'., y compris ceux qui ne se trouvent pas encore dans la table formulaire_gap


Ma question: quelle requete sql dois-je faire pour pouvoir récupérer les données propres a un ingénieur dans les tables, sans que tout se melange, et sans avoir de doublons dans ma liste?

1 réponse

Messages postés
285
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2006
1
Pour moi la solution est bidon...

Plutot que de te faire chier à faire 1 requete tu en fais 2 tout simplement...

Pour éviter de faire des accès de merde à ta bd tu fais en premier une
requete qui sélectionne tous les n-uplets de ta table truc_bd tu les
batch dans un premier tableau (à la walegen [je sais pas comment ça
s'écrit]) que tu appelles resultatsBd;

Ensuite tu fais ta deuxième requete pour avoir les résultats de l'autre
tables et tu les mets dans un tableau que tu appelles resultatsGap mais
là tu fais gaffe quand tu remplis la clé de la table seras l'id de ton
ingé

Cad que dans ta boucle tu mets $resultatsGap[$ligne['id']] = $ligne; par exmple pour remplir ton tableau correctement....



Pour finir tu écris le simple code suivant :

foreach($resultatsBd as $inge){ // $inge représente une ligne de la bd



}

donc dans cette boucle tu peux avoir les infos de la bd truc_bd et de
l'autre en faisant $resultatsGap[$inge['id']] et là tu as une ligne de
la table truc_gap donc tu peux avoir toutes tes infos....



Moi je préfère écrire plein de code plutot que de faire des supers requetes...