Un foreach qui n'affiche qu'un seul resultat
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:
Code:
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); |
je classe les id_Proteine de la table OCC_DC et OCC_NVDC_PAR_DC en fonction de l'organisme (cela c'est fait).
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:
Code:
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, 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.
Donc a votre avis comment j'affecte la bonne adresseOrg correspondant au bon $v selon son organisme?
Merci pour tout.