Bonjour a tous,
Je reviens a vous car j'ai un autre petit probleme.
J'ai deux requetes qui me permettent de recuperer l'id_Prot dune table OCC_DC (occurrence connue) pour la 1ere requete et dune table OCC_NVDC_PAR_DC (nouvelle occurrence) pour la 2eme requete:
je classe les id_Proteine de la table OCC_DC et OCC_NVDC_PAR_DC en fonction de l'organisme (cela c'est fait).
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 //Requete pour les occurrences connues $req_Dom_Gen = $db->query(("SELECT DISTINCT PROTEINE.organisme, OCC_DC.id_Prot FROM PROTEINE, OCC_DC WHERE OCC_DC.id_Dom = '$domaine' AND PROTEINE.id_Prot=OCC_DC.id_Prot ORDER BY PROTEINE.organisme ASC")); //Requete pour les nouvelles occurences certifiees par les domaines connus $req_Dom_Gen1 = $db->query(("SELECT DISTINCT PROTEINE.organisme, OCC_NVDC_PAR_DC.id_Prot FROM PROTEINE, OCC_NVDC_PAR_DC WHERE OCC_NVDC_PAR_DC.id_Dom = '$domaine' AND OCC_NVDC_PAR_DC.FDR <='$FDR' AND PROTEINE.id_Prot=OCC_NVDC_PAR_DC.id_Prot ORDER BY PROTEINE.organisme ASC")); //On va regrouper les requetes selon la cle organisme dans un tableau que l'on va trier $res = $req_Dom_Gen->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP); $res1 = $req_Dom_Gen1->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);
Le truc, c'est qu'un id_Prot de la table OCC_DC peut aussi appartenir a la table OCC_NVDC_PAR_DC.
Donc en plus, je dois faire un test pour chaque id_Prot de la table OCC_DC, a savoir s'il appartient aussi a la table OCC_NVDC_PAR_DC.
Pour cela pas de probleme, la requete marche tres bien.
Donc si l'id_Prot appartient aux 2 tables, je fais un lien vers une page html (pour cela pas de pb non plus)
Par contre si l'id_Prot appartient que a la table OCC_DC, je fais une requete en fonction de l'organisme a laquelle il appartient pour afficher un autre lien que je recupere de la table WEB_ORGANISM et la je n'arrive a afficher que le lien du 1er organisme et pas les autres (decidement j'ai toujours le meme probleme).
Voici mon code php:
Donc, pour chaque $v (=l'id_Prot) qui n'appartient pas aux 2 tables, j'affiche le lien $adresseOrg correspondant a l'organisme ($k) a laquel appartient $v mais j'ai du mal.
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
37
38
39
40
41 foreach($res as $k=>$a) { //$k est l'organisme printf ('<h1>%s</h1>','<center><div style="color:#FF0000;">'.$k.'</center></div>'); echo '<h2><center><div style="color:#0000FF;">Known Occurrences:</h2></center></div>'; //On recupere le lien de chaque organisme $lienOrg = $db->query(("SELECT DISTINCT WEB_ORGANISM.adresseWebOrg_debut, WEB_ORGANISM.adresseWebOrg_fin FROM WEB_ORGANISM WHERE WEB_ORGANISM.organisme= '$k'")); foreach ($lienOrg as $lien) { $adresseDebutOrg=$lien['adresseWebOrg_debut']; $adresseFinOrg=$lien['adresseWebOrg_fin']; } foreach ($a as $v) { //$v est l'id_Proteine //On teste si l'id proteine que l'on recupere contient des nouvelles occurrences $testProtC = $db->query(("SELECT * FROM OCC_NVDC_PAR_DC WHERE id_Prot= '$v'")); $nbRowC= $testProtC->rowCount(); //Si aucune occurrence, on affiche le lien de l'organisme if ($nbRowC == 0) { $adresseOrg =$adresseDebutOrg.$v.$adresseFinOrg; printf('<li>%s</li>',"<center><"."<a href=\"$adresseOrg\">$v</a>"."></center>"); }//Sinon on affiche la page html des Nouvelles Occurrences else printf ('<li>%s</li>',"<center><"."<a href=\"http://www.lirmm.fr/~terrapon/coddDB/$v.html\">$v</a>"."></center>"); } }
Donc a votre avis comment j'affecte la bonne adresseOrg correspondant au bon $v selon son organisme?
Merci pour tout.
Partager