Requétes MySQL

Résolu/Fermé
Willem33710 - 22 nov. 2010 à 18:44
 Willem33710 - 23 nov. 2010 à 19:38
Bonjour tout le monde

Bon je vais essayer d'expliqué mon problème de la façon la plus claire possible :p . C'est partie :

Voila je travaille sur un projet somme toute assé simple , il s'agit d'ajouté des clients (ici ils seront appelé "partner") dans un basse de données et de les afficher par la suite dans un tableau avec les divers infos et de pouvoir filtrer les différentes entré dans ce tableau , pour l'instant tout est simple et tout fonctionne , mais c'est dans les filtres que ça ce corse .

Je m'explique , chaque "partner" peut avoir plusieurs matières première à son actif j'ai donc crée un table "partner" avec toutes les infos sur le "partner" puis une table "commodities" ou sont stocké les matières premieres et une table "outputs" pour faire le lien entre les "partners" et les "commodities" . (j'esper que je perd personne :/ ).

Vous l'aurez compris mon probléme survient quand je fait un filtre avec les "commodities" . Pour l'instant j'essaye avec la méthode suivante :

Ma première requête est de sélectionner tout les "Partner_id" dans la table "outputs" ou "Commodity_name" = selection d'un filtre .
La je récupère bien tout mes id . super :p (pour verifier j'affiche le resultat de ma requéte et je voit bien tout les id )

Ensuite je fait donc une boucle ou je selectionne tout les champs dans la table "partners" ou "ID_Partner" est égale aux id renvoyé par la première requêtes , sauf que la c'est le drame il ne prend que le dernier id en compte :/ donc il ne compte qu'une entré et m'affiche qu'un partner ...

Pour info voila la syntaxe de tout ceci .
Code :

$ReqIdPartner=mysql_query("SELECT * FROM outputs WHERE Commodity_name LIKE '%".$commodities."%'"); 
while ($ResIdPartner  = mysql_fetch_array($ReqIdPartner) ) { 

$IdPartner=$ResIdPart['Partner_id'];


$requete = "SELECT * FROM partners WHERE 
    ID_Partner = ".$Idpartner."  and
    Contacted LIKE '%".$contacted."%'  and
    Competitor_Involvement LIKE '%".$comp."%'  and
    Name LIKE '%".$name."%'  and
    CreditScore LIKE '%".$credit."%' and
    Stage LIKE '%".$stage."%' and
    Region LIKE '%".$region."%' and
    Development_ranking LIKE '%".$dev."%'
    ORDER BY name"; 
$resultat = mysql_query($requete); 
 }


Puis ensuite j'affiche résultats dans un tableau . Sauf qu'il me renvoi le dernier résultat à chaque fois a lieu de me renvoyer tout les resultats :/

Ha et les varibables :
$name
$credit
$stage
$region
$commodities
$contacted
$comp

sont celle du formulaire de recherche . Voila j'espere avoir été claire .

Merci d'avance à ceux qui vont m'aider . je suis vraiment perdu

6 réponses

$requete = "SELECT * FROM partners WHERE 
    ID_Partner = ".$Idpartner."  and
    Contacted LIKE '%".$contacted."%'  and
    Competitor_Involvement LIKE '%".$comp."%'  and
    Name LIKE '%".$name."%'  and
    CreditScore LIKE '%".$credit."%' and
    Stage LIKE '%".$stage."%' and
    Region LIKE '%".$region."%' and
    Development_ranking LIKE '%".$dev."%'
    ORDER BY name"; 
while ($resultat = mysql_query($requete)){
   echo implode(' | ', $resultat).'<br/>';
} 
0
pjaaar Messages postés 15 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 17 décembre 2010 1
22 nov. 2010 à 19:36
Si j'ai bien compris tu fais:

- pour chaque ligne, $resultat = mysql_query($requete)

Si tu affiches $resultat une fois sorti de la boucle,... C'est normal que tu n'affiches que la dernière entrée!
0
Willem33710
22 nov. 2010 à 21:30
@pjaaar : Ça je m'en suis bien rendu compte , je cherche du coup la feinte pour que la requête fonctionne avec chaque ID trouvé .

@Siluni pas compris ce que tu à voulu faire
0
salut
ton $ResIdPart['Partner_id']; n'est pas récupérer car ta variable "$ResIdPart" ne correspond à rien du tout d'après ton code
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Willem33710
22 nov. 2010 à 22:27
Exact , c'est $ResIdPartner['Partner_id'] le bonne syntaxe mais le problème n'est pas la
0
Willem33710
23 nov. 2010 à 19:38
La solution était pourtant bien simple :

$requete = "SELECT * FROM partners,outputs WHERE
outputs.Partner_id = partners.ID_Partner and
outputs.Commodity_name LIKE '%".$commodities."' and
partners.Contacted LIKE '%".$contacted."%' and
partners.Competitor_Involvement LIKE '%".$comp."%' and
partners.Name LIKE '%".$name."%' and
partners.CreditScore LIKE '%".$credit."%' and
partners.Stage LIKE '%".$stage."%' and
partners.Region LIKE '%".$region."%' and
partners.Development_ranking LIKE '%".$dev."%'
ORDER BY name";
$resultat = mysql_query($requete);
Voila
0