MYSQL relation entre 2 table

Fermé
philzik - 3 avril 2012 à 17:39
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 - 11 avril 2012 à 18:16
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 mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
Modifié par Doctor C le 3/04/2012 à 18:32
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
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
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
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 mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
Modifié par Doctor C le 5/04/2012 à 22:38
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
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
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
$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 mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
Modifié par Doctor C le 11/04/2012 à 18:16
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