While ... avec plusieurs requetes simultanées...

While ... avec plusieurs requetes simultanées... - PHP - Programmation

Marsh Posté le 06-01-2004 à 15:45:24    

Voila je veux faire une boucle qui va chercher des infos dans 3 tables differentes...
 
j'ai procedé de cette maniere là... (en resumé !)
 

Code :
  1. mysql_select_db("$bddname", $connect);
  2.        $req = "SELECT * FROM devis1 WHERE id='$id_test'";
  3.          $result=MYSQL_QUERY($req) or die(mysql_error());
  4.          $total_reponses=mysql_num_rows($result);
  5.          mysql_select_db("$bddname", $connect);
  6.          $req2 = "SELECT * FROM enlevement WHERE devisnum='$devisnum'";
  7.          $result2=MYSQL_QUERY($req2) or die(mysql_error());
  8.          mysql_select_db("$bddname", $connect);
  9.          $req3 = "SELECT * FROM livraison WHERE devisnum='$devisnum'";
  10.      $result3=MYSQL_QUERY($req3) or die(mysql_error());
  11. [...]
  12. while ($data=mysql_fetch_array($result);$data2=mysql_fetch_array($result2);$data3=mysql_fetch_array($result3)){ [...] }


 
Mais bon... apparment c pas comme ça que ça marche ! lol ! comment feriez vous ??
 
PS : je sais ce que vous allez me dire... d'aller voir les tutoriaux etc etc ! lol ! mais bon j'ai rien trouvé pour les requetes multiples avec une boucle!
 
Freed

Reply

Marsh Posté le 06-01-2004 à 15:45:24   

Reply

Marsh Posté le 06-01-2004 à 15:46:20    

t'as surtout rien trouvé sur les boucles...

Reply

Marsh Posté le 06-01-2004 à 15:50:49    

.. vous pensez qu'une requete du genre serait mieux ?
 
"SELECT * FROM devis1 ,enlevement,livraison WHERE id='$id_test' AND devisnum='$devisnum'"  
 
(je connais pas la synthaxe exacte... mais je sais qu'on peut faire des trucs comme ça... c'est à dire interroger plusieurs tables en même temps !)


Message édité par freed102 le 06-01-2004 à 15:51:24
Reply

Marsh Posté le 06-01-2004 à 17:07:25    

lol
 
essaie ceci
 
 

Code :
  1. while (1)
  2.     {
  3. $data=mysql_fetch_array($result);
  4. $data2=mysql_fetch_array($result2);
  5. $data3=mysql_fetch_array($result3);
  6.     }


 
pis à l'occase, regarde la doc sur les boucles
 

Reply

Marsh Posté le 06-01-2004 à 17:33:02    

non mais en fait c plus compliqué que ça ! lol ! je vais vous montrer le code général !
 

Code :
  1. <?
  2. mysql_select_db("$bddname", $connect);
  3. $req = "SELECT * FROM devis1 WHERE id='$id_test'";
  4. $result=MYSQL_QUERY($req) or die(mysql_error());
  5. $total_reponses=mysql_num_rows($result);
  6. ?>
  7. <tr class="tabtextegras">
  8. <td colspan="3" class="tabfond1">Vous avez <? echo $total_reponses; ?> devis enregistrés.</td>
  9. </tr>
  10. <? while ($data=mysql_fetch_array($result)){ ?>
  11. <tr valign="top" class="tabfond2">
  12. <td width="100" align="left" class="txt">
  13. <div align="left"><span class="tabtextegras">N&deg;
  14.                                             de Devis :</span><br><?
  15. //recuperation des données de chaque devis
  16. $devisnum=$data['devisnum'];
  17. echo $devisnum;
  18. $nb_pages = $data['nb_pages'];
  19. $format_papier= $data['format_papier'];
  20. $nb_pages_nb = $data['nb_pages_nb'];
  21. $nb_pages_coul = $data['nb_pages_coul'];
  22. $nb_ex = $data['nb_ex'];
  23. $rv = $data['rv'];
  24. $tarifs_finitions = $data['finitions'];
  25. $type_envoi = $data['type_envoi'];
  26. $date = $data['date'];
  27. if ($type_envoi!="type1" )
  28. {
  29. mysql_select_db("$bddname", $connect);
  30. $req2 = "SELECT * FROM enlevement WHERE devisnum='$devisnum'";
  31. $result2=MYSQL_QUERY($req2) or die(mysql_error());
  32. mysql_select_db("$bddname", $connect);
  33. $req3 = "SELECT * FROM livraison WHERE devisnum='$devisnum'";
  34. $result3=MYSQL_QUERY($req3) or die(mysql_error());
  35. while ($data2=mysql_fetch_array($result2))
  36.   {
  37.   $sqlraison_sociale1= $data2['raison_sociale'] ;
  38.   $sqlnom1= $data2['nom'] ;
  39.   $sqlprenom1= $data2['prenom'] ;
  40.   $sqladresse1= $data2['adresse'] ;
  41.   $sqlsecteur1= $data2['secteur'] ;
  42.   $sqlville1= $data2['ville'] ;
  43.   $sqltelephone1= $data2['telephone'] ;
  44.   }
  45.   while ($data3=mysql_fetch_array($result3))
  46.   {
  47.   $sqlraison_sociale2= $data3['raison_sociale'] ;
  48.   $sqlnom2= $data3['nom']  ;
  49.   $sqlprenom2= $data3['prenom']  ;
  50.   $sqladresse2= $data3['adresse']  ;
  51.   $sqlsecteur2= $data3['secteur']  ;
  52.   $sqlville2= $data3['ville']  ;
  53.   $sqltelephone2= $data3['telephone']  ;
  54.   }
  55.  }
  56.  else
  57.  {
  58.   mysql_select_db("$bddname", $connect);
  59.   $req3 = "SELECT * FROM livraison WHERE devisnum='$devisnum'";
  60.   $result3=MYSQL_QUERY($req3) or die(mysql_error());
  61.   while ($data3=mysql_fetch_array($result3))
  62.   {
  63.   $_SESSION['envoi1']="Téléchargement";
  64.   $sqlraison_sociale2= $data2['raison_sociale']  ;
  65.   $sqlnom2= $data2['nom']  ;
  66.   $sqlprenom2= $data2['prenom']  ;
  67.   $sqladresse2= $data2['adresse']  ;
  68.   $sqlsecteur2= $data2['secteur']  ;
  69.   $sqlville2= $data2['ville']  ;
  70.   $sqltelephone2= $data2['telephone']  ;
  71.   }
  72.  }
  73.  include("calcul_devis.php" );
  74.  ?>
  75. <br>
  76. <br>
  77. <span class="tabtextegras"> Date du devis :</span><br>
  78. <? echo $data['date']; ?> </div></td>
  79. <td width="250" class="txt"><span class="tabtextegras">Description du devis :</span>
  80. <br>
  81. <? echo $data['nb_pages']." pages ".$data['format_papier']."<br>en ".$data['rv']."<br>à ".$data['nb_ex']." exemplaires ..."; ?>
  82. <br>
  83. <br>
  84. <? echo "<span class=tabtextegras>Secteur d'enlevement :</span> ".$sqlsecteur1."<br><span class=tabtextegras>Secteur de livraison : </span>".$sqlsecteur2; ?>
  85. </td>
  86. <td align="right" class="tabtextegras"><div align="right">Montant:
  87. <br>
  88. <? echo $total_ttc; ?> &euro;</div></td>
  89. </tr>
  90. <tr class="tabtextegras">
  91. <td height="4" colspan="3" class="tabfond1">Temps total de r&eacute;alisation : <? echo $total_temps_formate; ?>
  92. | Temps de livraison : <? echo $temps_livr_formate; ?></td>
  93. </tr>
  94. <tr bgcolor="#999999" class="tabtextegras">
  95. <td height="4" colspan="3" ><img src="<?=$PathImages?>/spacer.gif" width="1" height="4"></td></tr>
  96. <? } ?>


Message édité par freed102 le 06-01-2004 à 17:38:23
Reply

Marsh Posté le 06-01-2004 à 18:07:25    

au lieu de faire ca:
 

Code :
  1. mysql_select_db("$bddname", $connect);
  2. $req2 = "SELECT * FROM enlevement WHERE devisnum='$devisnum'";
  3.             $result2=MYSQL_QUERY($req2) or die(mysql_error());
  4.            
  5. mysql_select_db("$bddname", $connect);         
  6. $req3 = "SELECT * FROM livraison WHERE devisnum='$devisnum'";
  7.         $result3=MYSQL_QUERY($req3) or die(mysql_error());


Tu peux réduire en une seule requête:
 

Code :
  1. $req = "SELECT e.*,l.* FROM enlevement e,livraison l WHERE e.devisnum='$devisnum' AND e.devisnum=l.devisnum";


Et pas besoin de resélectionner la base et de refaire la connection a chque requête.


Message édité par Ayuget le 06-01-2004 à 18:07:46
Reply

Marsh Posté le 06-01-2004 à 19:13:13    

j'ai fait des while imbriqués... j'arrive à peu pres à etre satisfait... je sais pas si c t la meilleure methode mais je recupere les variables qu'il me faut.. donc tout va bien ! (j'ai juste peur que ça se melange un peu les crayons à force !!! c un peu complexe là ce que je lui demande à mon programme !! :)))

Reply

Marsh Posté le 06-01-2004 à 19:21:10    

complexe :heink: ?


Message édité par Ayuget le 06-01-2004 à 19:21:18
Reply

Marsh Posté le 06-01-2004 à 19:23:37    

oui pour moi... debutant que je suis.. c complexe !! ya des calculs de prix et de temps, en même temps d'afficher une multitude de variables et de requetes dans plusieurs tables différentes avec des conditions dans tous les sens.... etc etc etc... un vrai casse tete chinois ! lol!

Reply

Marsh Posté le 06-01-2004 à 20:22:53    

freed102 a écrit :

j'ai fait des while imbriqués... j'arrive à peu pres à etre satisfait... je sais pas si c t la meilleure methode mais je recupere les variables qu'il me faut.. donc tout va bien ! (j'ai juste peur que ça se melange un peu les crayons à force !!! c un peu complexe là ce que je lui demande à mon programme !! :)))  

c'est jamais le programme qui se mélange les pinceaux, mais le programmeur :D  
 
2-3 remarques :
- pas la peine de faire un mysql_select_db() avant chaque requête. Tu le fais une fois au début du script et c'est tout
- dans le dernier while(), j'imagine que c'est le tableau $data3[] que tu dois utiliser, pas $data2[]
- le dernier while ressemble fortement à celui d'avant, il doit y avoir moyen de regrouper [:figti]


Message édité par mrbebert le 06-01-2004 à 20:23:34
Reply

Marsh Posté le 06-01-2004 à 20:22:53   

Reply

Marsh Posté le 06-01-2004 à 20:24:39    

freed102 a écrit :

oui pour moi... debutant que je suis.. c complexe !! ya des calculs de prix et de temps, en même temps d'afficher une multitude de variables et de requetes dans plusieurs tables différentes avec des conditions dans tous les sens.... etc etc etc... un vrai casse tete chinois ! lol!  


C'est vrai que c'est pas forcément facile quand on débute :)

Reply

Marsh Posté le 06-01-2004 à 20:28:43    

mrbebert a écrit :

c'est jamais le programme qui se mélange les pinceaux, mais le programmeur :D  
 
2-3 remarques :
- pas la peine de faire un mysql_select_db() avant chaque requête. Tu le fais une fois au début du script et c'est tout
- dans le dernier while(), j'imagine que c'est le tableau $data3[] que tu dois utiliser, pas $data2[]
- le dernier while ressemble fortement à celui d'avant, il doit y avoir moyen de regrouper [:figti]


 
Effectivement c une erreur que j'avais corrigé entre temps... maintenant j'arrive à avoir toutes mes variables comme il faut.. mais bon je sais pas si tout ça est propre... mais au moins ça marche ! lol! Merci ! :)

Reply

Sujets relatifs:

Leave a Replay

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