Requétes MySQL

Résolu
Willem33710 -  
 Willem33710 -
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

  1. Siluni
     
    $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
  2. pjaaar Messages postés 15 Statut Membre 1
     
    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
  3. Willem33710
     
    @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
  4. Steevy
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Willem33710
     
    Exact , c'est $ResIdPartner['Partner_id'] le bonne syntaxe mais le problème n'est pas la
    0
  7. Willem33710
     
    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