MYSQL relation entre 2 table

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

9 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. $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
                  1. 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