Page 1 sur 1

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

Posté : 04 déc. 2006, 18:16
par bibi85
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

Posté : 04 déc. 2006, 18:24
par Cyrano
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.

Posté : 04 déc. 2006, 18:27
par jojolapine
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>

Posté : 05 déc. 2006, 09:58
par bibi85
merci de vos réponses. que veux tu savoir sur la structure de mes tables ?

Posté : 05 déc. 2006, 11:54
par Ultim4T0m
Montre nous le SQL permettant la création de tes tables, comportant ainsi tous les champs, leurs attributs, bref, tout ce qui peux aider ;)

Posté : 05 déc. 2006, 12:49
par Ryle
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)