MYSQL relation entre 2 table

philzik -  
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis toujours une nouille en php ^^

Voila je voudrais faire une relation avec 2 table et sortir plusieurs variable je m'explique:

j'ai une table T_prescripteur avec des numéro de profession colonne profession.
Ces professions sont regroupé dans une autre table t_profession ou dedans j'ai c_idprof ou on peu trouver les mémé variable possible que la demande idcat avec une colonne c_idprofession qui elle regroupe toute les variable qui il y a dans t_prescripteur.

Idcat et une variable qui viens d'une page php


include("../connection.php");
$idcat=$_GET["idcat"];
echo $idcat;
$requete1="select * from t_profession where c_idprof=$idcat ";
$result1=mysql_query($requete1);
echo $result1["c_idprofession"]; // ca marche pas si j'enléve ["c_idprofession"] il me dit resource id#3

$requete="select * from t_prescripteurs where profession=$result1 ORDER BY nom";
$result=mysql_query($requete);

il peu y avoir plusieurs nombre dans $result1 mais pour l'instant ça ne me sort rien du tout ...

Si vous pouvez m'aider je suis complètement bloqué

Merci du temps que vous pouvez passer sur mon cas ^^

Bien cordialement

Philippe

A voir également:

9 réponses

Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
Il semble te manquer l'utilisation de la fonction mysql_fetch_array qui te permettrait te récupérer tes données dans un tableau et de traiter chaque ligne obtenue une par une, de la manière suivante:

<?php 
mysql_connect("localhost", "mysql_user", "mysql_password") or 
die("Impossible de se connecter : " . mysql_error()); 
mysql_select_db("mydb"); 

$result = mysql_query("SELECT id, name FROM mytable"); 

while ($row = mysql_fetch_array($result)) { 
   printf ("ID : %s  Nom : %s", $row["id"], $row["name"]); 
} 

mysql_free_result($result); 
?> 


Le problème est sans doute dans ton utilisation de la variable $result1.

Et tu pourrais sûrement effectuer ce traitement en 1 seule requête SQL. Si tu pouvais nous donner les champs de tes 2 tables en question, on pourrait peut-être trouver une manière plus efficace.

Echo "Lima Mike Alfa";
0
philzik
 
Bonjour, j'ai chercher la solution mais j'arrive pas.

Les 2 tables à mettre en relation sont:

Table prescripteur: t_prescripteur

id ; c_idcontact; nom; prenom; raisonsociale ; profession; autrep ; telephone; telecopie; mobile; email; web; num; voie ;complement; cp; ville; prive; public; villa; com; log; ter; autre ; journaissance; moisnaissance; idprofession;

Table prescripteur: t_profession

c_idprof; c_idprofession; c_profession;


c_idprofession et idprofession ont les même variable

Quand je clic sur mon lien il me donne un $idcat qui est dans c_idprof et je veux qu'il me donne toute les variables qui ont c_idprofession.

Exemple $idcat = 2 je veux qu'il me donne toute les variables de c_idprofession quand c_idprof = c_idcat

et je veux bien sur qu'a la fin il m'affiche toutes les variables dans t-prescripteur qui on comme c_idprofession en relation avec idcat

Merci du temps que vous y consacré

Bien cordialement

Philippe
0
philzik
 
Ca serai un truc dans le genre:

$result = mysql_query("SELECT c_idprofession FROM t_profession where c_idprof=$idcat ");

while ($row = mysql_fetch_array($result)) {
printf (" id : %s ", $row["c_idprofession"]);
}

mysql_free_result($result);

$requete="select * from t_prescripteurs where profession=$result ORDER BY nom";
$result=mysql_query($requete);
0
philzik
 
j'arrive à récupérer déjà les variables quand je fait ça:

include("../connection.php");
$idcat=$_GET["idcat"];


$result = mysql_query("SELECT c_idprofession FROM t_profession where c_idprof=$idcat ");

while ($row = mysql_fetch_array($result)) {
printf (" , %s ", $row["c_idprofession"]);
}

mysql_free_result($result);

$requete1="select * from t_prescripteurs where profession=$result ORDER BY nom";
$result1=mysql_query($requete1);
echo $requete1
;


Comment je fait a récupérer print F pour mettre dans ma $requete1 ?
0

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

Posez votre question
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
En fait, étant donné que tu n'as pas besoin de boucle (tu n'as qu'un "row" qui t'es retourné), tu pourrais utiliser la fonction mysql_fetch_assoc qui ne te retourne qu'une seule ligne.

$result = mysql_query("SELECT c_idprofession FROM t_profession where c_idprof=$idcat ");  

$row = mysql_fetch_assoc($result)  

$id = $row["c_idprofession"]; 
     
$requete1="select * from t_prescripteurs where profession=$id ORDER BY nom";  
$result1=mysql_query($requete1);  
     
print_r($result1); 

mysql_free_result($result); 


Bon, c'est pas du tout optimal mais ça devrait marcher (je peux pas tester malheureusement).

Tu pourrais sans doute effectuer le tout en une seule requête SQL qui suivrait ce format:

SELECT t1.id, t2.id FROM t1, t2
WHERE t1.id = t2.id AND t1 = $identifiant

Ou tu peux explorer les JOIN : https://www.commentcamarche.net/contents/1063-sql-jointures

Bonne chance!


Echo "Lima Mike Alfa";
0
philzik
 
Merci de la réponse mais il me dit qu'il y a une erreur de syntax dans cette ligne:

$id = $row["c_idprofession"];

De plus il y a plusieurs variables es ce que il va toute les ecrires?

Bien cordialement

Philippe
0
philzik
 
Personnelement je suis arrivé a ca:

$result = mysql_query("SELECT c_idprofession FROM t_profession where c_idprof=$idcat ");

while ($row = mysql_fetch_array($result)) {
printf ("profession= %s AND ", $row["c_idprofession"]);
}

mysql_free_result($result);

//la j'arrive a récupérer les variables
//Maintenant il faut que j'arrive a metre ces variable avec des OR ou AND je sais //pas ...

$requete1="select * from t_prescripteurs where profession ORDER BY nom";
$result1=mysql_query($requete1);
echo $requete1
0
philzik
 
$result = mysql_query("SELECT c_idprofession FROM t_profession where c_idprof=$idcat ");

while ($row = mysql_fetch_array($result)) {
printf ("profession= %s OR ", $row["c_idprofession"]);
}


mysql_free_result($result);


$requete1="select * from t_prescripteurs where profession=$id ORDER BY nom";
$result1=mysql_query($requete1);
echo $requete1
;

J'ai essayé ca mais ca marche pas non plus ... :s
0
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   399
 
Ce qu'il faut que tu comprennes quand tu utilises la boucle:

while ($row = mysql_fetch_array($result)) {  
printf ("profession= %s AND ", $row["c_idprofession"]);  
}


C'est que si tu veux traiter tes infos, il faut que tu fasses l'une des deux choses suivantes:
- Traiter l'information au fur et à mesure que tu boucles (donc le traitement se fait dans la boucle).
- Garder les informations dans un tableau afin de pouvoir les utiliser une fois hors de la boucle.

Par exemple, tu t'initialises un tableau vide avant d'entrer dans ta boucle:

$arr_professions = array();


Ensuite, tu ajoutes chaque éléments trouvé par ta requête dans ton tableau:

while ($row = mysql_fetch_array($result)) { 
array_push($arr_professions, $row["c_idprofession"]); 
}


Maintenant, tu devrais avoir tous tes ids de professions obtenus par ta requête dans le tableau:

print_r($arr_professions);


Ensuite, tu pourrais faire une boucle sur ton tableau et exécuter ton autre requête sur chacun de ses éléments:

foreach ($arr_professions as $id_profession) { 
  $requete1="select * from t_prescripteurs where profession=$id_profession ORDER BY nom";  
  $result1=mysql_query($requete1);  
  echo $requete1;  
   
  //traiter les donner... 
} 

Bon, j'espère que j'ai pas écrit n'importe quoi!
Bonne chance!

Echo "Lima Mike Alfa";
0