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
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
A voir également:
- MYSQL relation entre 2 table
- Table ascii - Guide
- Table des matières word - Guide
- Mysql community server - Télécharger - Bases de données
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
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
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:
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";
<?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";
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
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
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);
$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);
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 ?
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 ?
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
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.
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";
$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";
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
$id = $row["c_idprofession"];
De plus il y a plusieurs variables es ce que il va toute les ecrires?
Bien cordialement
Philippe
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
$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
$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
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
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
Modifié par Doctor C le 11/04/2012 à 18:16
Ce qu'il faut que tu comprennes quand tu utilises la boucle:
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:
Ensuite, tu ajoutes chaque éléments trouvé par ta requête dans ton tableau:
Maintenant, tu devrais avoir tous tes ids de professions obtenus par ta requête dans le tableau:
Ensuite, tu pourrais faire une boucle sur ton tableau et exécuter ton autre requête sur chacun de ses éléments:
Bon, j'espère que j'ai pas écrit n'importe quoi!
Bonne chance!
Echo "Lima Mike Alfa";
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";