requete SQL -> Array : perfectionnement du code !!

requete SQL -> Array : perfectionnement du code !! - PHP - Programmation

Marsh Posté le 16-06-2005 à 18:42:17    

Salut à tous,
voila mon code marche très bien mais je sais que le code n'est vraiment pas beau !!!
je voudrais savoir comment faire pour éxecuter le type de requete !!
relation comme un arbre généalogique cousin etc...
 
la table :  
 

Code :
  1. `relations` (
  2.   `id_r` int(10) NOT NULL auto_increment,
  3.   `r_id1` int(10) NOT NULL default '0',   // id sur laquelle on voit la fiche
  4.   `r_id2` int(10) NOT NULL default '0',  // id des personnes en relation direct frere et soeur
  5.   `r_type` int(5) NOT NULL default '0',   // si cousin
  6.   `r_etat` int(3) NOT NULL default '0',   // mort ou pas  
  7.   `r_date` int(15) NOT NULL default '0', 
  8.   PRIMARY KEY  (`id_r`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=22 ;


 
explication du fonctionnemnt de la requete voulu !
r_id1 et r_id2 correpondent aux id des membres, chaque membres a plusieurs relation ( frere et soeur) et en fait je voudrais  
sortir les r_id2 des personnes de r_id1 mais aussi les r_id2 des r_id2 !!!!
 
 
voila comment je fais mais c'est pas beau !!
 
 

Code :
  1. $db = mysql_connect("$serveur", "$identifiant", "$mdp" );
  2. mysql_select_db("$bdd",$db) or die("$erreur1" );
  3. $req = mysql_query("SELECT r_id1,r_id2 FROM $table_relation WHERE ( r_id1='$id_m' or r_id2='$id_m') and r_etat='2' LIMIT $debut, $fin" );
  4. $res = mysql_num_rows($req);
  5. $ii=0;
  6. $recherche1="r_id1=''";
  7. $recherche11="r_id2=''";
  8. WHILE($res!=$ii)
  9.   {
  10.    $r_id1 = mysql_result($req,$ii,"r_id1" );
  11.    $r_id2 = mysql_result($req,$ii,"r_id2" );
  12.      if($r_id1=="$id_m" )
  13.       { $recherche1.=" or r_id1='$r_id2'";
  14.     $recherche11.=" or r_id2='$r_id2'"; }
  15.    elseif($r_id2=="$id_m" )
  16.       { $recherche1.=" or r_id1='$r_id1'";
  17.     $recherche11.=" or r_id2='$r_id1'"; }
  18.    $ii++;
  19.     }
  20. $sql="SELECT r_id1,r_id2 FROM $table_relations WHERE ( $recherche1 or $recherche11) and r_etat='2' LIMIT $debut, $fin";
  21. $req = mysql_query($sql);
  22. $res = mysql_num_rows($req);
  23. $ii=0;
  24. // id_m correspond a l'id de la fiche de la personne
  25. $recherche2="id_m=''";
  26. WHILE($res!=$ii)
  27.   {
  28.    $r_id1 = mysql_result($req,$ii,"r_id1" );
  29.    $r_id2 = mysql_result($req,$ii,"r_id2" );
  30.    $recherche2.="or id_m='$r_id2'";
  31.    $recherche2.="or id_m='$r_id1'";
  32.    $ii++;
  33.     }
  34. $sql_affc="SELECT * FROM $table_membre Where $recherche2 Limit $debut, $fin";
  35. $reqc = mysql_query($sql_affc);


 
 
 
 
comment peut on faire ????
avec des array ??
 
mais le pb c'est que je ne sais pas comment faire pour faire des requetes avec des requetes !
si quelqu'un pouvait m'aider a changer mon code ( meme s'il marche ) pour que je m'améliore !!
merci
 
 
PS: n'hésitez pas à écrire ou poser des questions


Message édité par - janfy - le 16-06-2005 à 20:15:52
Reply

Marsh Posté le 16-06-2005 à 18:42:17   

Reply

Marsh Posté le 16-06-2005 à 18:53:12    

Citation :

r_id1 et r_id2 correpondent aux id des membres, chaque membres a plusieurs relation ( frere et soeur) et en fait je voudrais  
sortir les r_id2 des personnes de r_id1 mais aussi les r_id2 des r_id2 !!!!
 


 
 [:alph-one]  
 
avec des explications comme ça ... sur on a tout compris  [:maverick10]

Reply

Marsh Posté le 16-06-2005 à 18:57:08    

r_id1 contient le numéro de la fiche que tu regardes  
r_id2 contient les numéro des fiches en relation avec le numéro que tu regardes  
 
en fait le but c'est de faire la liste des r_id2 mais aussi les fiches des personnes en relation avec les personnes en relations avec la fiche que tu regardes !
je sais c un peu compliké mais c compréhensible !

Reply

Marsh Posté le 16-06-2005 à 18:58:44    

ouais, y'a plein de trucs en double.
un petit tableau et hop.

Reply

Marsh Posté le 16-06-2005 à 18:59:35    

ritzle a écrit :

ouais, y'a plein de trucs en double.
un petit tableau et hop.


 
 
est ce que tu pourrais me faire un début de tableau pour que je sache comment m'y prendre ( genre sur la premiére boucle )???

Reply

Marsh Posté le 16-06-2005 à 19:26:10    

avec les tableaux ca donne ca  
 

Code :
  1. $db = mysql_connect("$serveur", "$identifiant", "$mdp" );
  2. mysql_select_db("$bdd",$db) or die("$erreur1" );
  3. $req = mysql_query("SELECT r_id1,r_id2 FROM $table_relation WHERE ( r_id1='$id_m' or r_id2='$id_m') and r_etat='2' LIMIT $debut, $fin" );
  4. $res = mysql_num_rows($req);
  5. $ii=0;
  6. $recherche1 = array();
  7. WHILE($res!=$ii)
  8.   {
  9.    $r_id1 = mysql_result($req,$ii,"r_id1" );
  10.    $r_id2 = mysql_result($req,$ii,"r_id2" );
  11.      if($r_id1=="$id_m" )
  12.       { $recherche1[] = mysql_result($req,$i,"id_m2" );
  13.                           }
  14.    elseif($r_id2=="$id_m" )
  15.       { $recherche1[] = mysql_result($req,$i,"id_m1" );
  16.      }
  17.    $ii++;
  18.     }


 
 
donc dans le tableau $recherche1 ya tout les fiches des r_id2 mais je ne pas comment faire une requete apres ?
de l'aide ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed