Requête SELECT imbriquée dans une autre requête...

Eléphanteau du PHP | 25 Messages

04 déc. 2006, 18:16

j'effectue une 1ère requête dans laquelle j'en écris une autre. mais les variables définies dans la seconde ne s'affichent pas. (alors que ma requete est bonne après vérif par affichage). voici mon code:
$requete_loc="SELECT * FROM locations WHERE num_loc='$num_loc'";
$resultat_loc=mysql_query($requete_loc);
if($resultat_loc)
{ //début de if
     while ($donnees=mysql_fetch_array($resultat_loc))
     { //début de while
     $nom_loc=$donnees["nom_loc"];
     $num_client=$donnees["num_client"];

     //seconde requête?
     $coord="SELECT * FROM clients WHERE num_client='$num_client'";
    $resultat_coord=mysql_query($coord);
    if($resultat_coord)
    {//début de if
    $contact_direct=$donnees["contact_direct"];
    $tel_fixe=$donnees["tel_fixe"];
    $portable=$donnees["portable"];
    $civilite=$donnees["civilite"];
    $nom=$donnees["nom"];
    $prenom=$donnees["prenom"];
    $langue1=$donnees["langue1"];
    $langue2=$donnees["langue2"];
    $langue3=$donnees["langue3"];
	if ($contact_direct=='c')
	{
	$contact="$civilite $nom $prenom $tel_fixe $portable";
	}
echo " //les différentes variables";
     }//fin de if
     } //fin de while

}//fin de if
est-ce une histoire de placement de parenthèse ? (j'ai déjà essayé +sieurs trucs...)
merci de votre aide

Mammouth du PHP | 19672 Messages

04 déc. 2006, 18:24

Fais donc voir la structure de tes deux tables, je suis quasiment certain qu'on peut faire ça avec une seule et unique requête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 3607 Messages

04 déc. 2006, 18:27

avant d'essayer de débugger ton histoire, sache que la méthode n'est surement pas la meilleur, tu aurais meilleur temps il me semble de faire un requête jointe, je ne suis malheureusement pas un expert en la matière, donc je te laisse patienter le temps que quelqu'un qui sache se servir de ces bèbètes arrive...;-)
<edit>Damn i'm grilled</edit>

Eléphanteau du PHP | 25 Messages

05 déc. 2006, 09:58

merci de vos réponses. que veux tu savoir sur la structure de mes tables ?

Eléphant du PHP | 445 Messages

05 déc. 2006, 11:54

Montre nous le SQL permettant la création de tes tables, comportant ainsi tous les champs, leurs attributs, bref, tout ce qui peux aider ;)
LLDC
Ulti

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 déc. 2006, 12:49

Le problème vient surtout du fait que tu ne gère absolument pas le résultat de ta seconde requête ($resultat_coord). Tu testes s'il est bien défini, mais tu n'utilise jamais cette variable avec un mysql_fetch* pour récupérer les données rapportées :)

Tu peux effectivement simplifier le traitement en ne jouant qu'une seule requête avec une jointure simple sur le champ num_client qui d'après ton code est le lien entre les deux tables :

Code : Tout sélectionner

SELECT ... FROM locations, clients WHERE locations.num_client = clients.num_client AND ...
Cette dernière solution est effectivement plus optimisée puisque tu ne feras qu'une seule requête quel que soit le nombre de résultats (actuellement si tu avais 1000 locations, tu ferais 1000 requêtes vers la table clients)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...