Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1119 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Temps de complilation

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Temps de complilation

n°1624412
sabbahh
Posté le 16-10-2007 à 10:22:26  profilanswer
 

Bonjour,
J'avais un programme qui validait un tableau (ligne par produit) et l'enregistre dans ma bdd,
maintenant j'ai ajouté la notion du pays (ligne par produit, par pays), donc j'ai 2 boucles: pour chaque produits{pour chaque pays{}}
et ça prend bcp de temps.
Il y a -t-il un moyen pour optimiser ce prog?

mood
Publicité
Posté le 16-10-2007 à 10:22:26  profilanswer
 

n°1624415
micfont999
Simplement Moi
Posté le 16-10-2007 à 10:23:51  profilanswer
 

Bonjour,  
montre voir ton code s'il n'est pas trop long :)  
merci

n°1624419
sabbahh
Posté le 16-10-2007 à 10:29:01  profilanswer
 

Voilà c'est trop long :s

n°1624426
micfont999
Simplement Moi
Posté le 16-10-2007 à 10:30:47  profilanswer
 

ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ...

n°1624448
Alisteroid
Posté le 16-10-2007 à 10:40:09  profilanswer
 

Ton code stp :o

n°1624450
micfont999
Simplement Moi
Posté le 16-10-2007 à 10:41:22  profilanswer
 

bah il veux pas lol

n°1624459
sabbahh
Posté le 16-10-2007 à 10:44:27  profilanswer
 

micfont999 a écrit :

ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ...


Oui je comprend. je vais essayer d'expliquer l'algo.
Pour commencer, je fais une boucle pour récupérer les données de chaque produit du style:

Code :
  1. for ($i = 0; $i < (count($_POST["produit"])); $i++){
  2. for($j=0;$j<(count($_POST["pays"][$i]));$j++){
  3.      if(!empty($_POST["produit"][$i])) {$produit[]=trim($_POST["produit"][$i]);} else{$produit[]="";}
  4.   if(!empty($_POST["var1"][$i][$j])) {$var1[]=trim($_POST["var1"][$i][$j]);} else{$var1[]="";}
  5.   if(!empty($_POST["var2"][$i][$j])) {$var2[]=trim($_POST["var2"][$i][$j]);} else{$var2[]="";}
  6.   if(!empty($_POST["var3"][$i][$j])) {$var3[]=trim($_POST["var3"][$i][$j]);} else{$var3[]="";}
  7.   if(!empty($_POST["var4"][$i][$j])) {$var4[]=trim($_POST["var4"][$i][$j]);} else{$var4[]="";}
  8.   if(!empty($_POST["pays"][$i][$j])) {$pays[]=trim($_POST["pays"][$i][$j]);} else{$pays[]="";}
  9. }
  10. }


Ensuite
j'utilise la boucle : for($i=0;$i<sizeof($produit);$i++){} pour effectuer plein de traitement dans ma bdd càd:
1-  

Code :
  1. $sq="select * from xx where pays='".$pays[$i]."' $res = requete_SQL($sq);$Lig=mysql_num_rows($res);
  2. if (!$Lig){$req="INSERT INTO xx (...) values ('";
  3.  $req .= "{...}')";$resul = requete_SQL($req);
  4.           }
  5. else    {$req ="UPDATE xx SET";
  6.     $req.=" ..= '{..}'";
  7.     $req.=" WHERE ...'";$resul = requete_SQL($req);
  8.    }


 2- je fais un select, le resultat de ce select va me permettre soit d'inserer ou de modifier (update):

Code :
  1. if(($_POST["x"])=="x" ) {$sql  = "SELECT * FROM x";}
  2.   if(($_POST["y"])=="y" ) {$sql  = "SELECT * FROM y";}
  3.                $sql .= "WHERE ...'";
  4.   if(($_POST["x"])=="x" )  {$sql .= " and Codex='".$produit[$i]."'";}
  5.   if(($_POST["y"])=="y" )  {$sql .= " and Codey='".$produit[$i]."'";}
  6.   $sql .= " and pays='".$pays[$i]."'";
  7.   $resul = requete_SQL($sql);
  8.   $rows=mysql_num_rows($resul);
  9. if (!$rows){
  10. if(($_POST["x"])=="x" ) {$query="INSERT INTO x(...) values ('"; }
  11. if(($_POST["y"])=="y" ) {$query="INSERT INTO y(...) values ('";}
  12. $query1= "{$query}{$produit[$i]}','{$var1[$i]}','{$pays[$i]}',..)";$resul = requete_SQL($query1);//echo  $query1;
  13. $query2= "{$query}{$produit[$i]}','{$var2[$i]}','{$pays[$i]}',..)";$resul2 = requete_SQL($query2);
  14. $query3= "{$query}{$produit[$i]}','{$var3[$i]}','{$pays[$i]}',...)";$resul3 = requete_SQL($query3);
  15. $query4= "{$query}{$produit[$i]}','{$var4[$i]}','{$pays[$i]}',...)";$resul4 = requete_SQL($query4);
  16.  
  17. }
  18. else { }


 je t'envoie le else dans un autre post

n°1624460
sabbahh
Posté le 16-10-2007 à 10:44:58  profilanswer
 

micfont999 a écrit :

bah il veux pas lol


 Elle veut pas  :)

n°1624465
micfont999
Simplement Moi
Posté le 16-10-2007 à 10:47:44  profilanswer
 

ah autant pour moi madame :) désolé :jap:

n°1624477
sabbahh
Posté le 16-10-2007 à 10:56:44  profilanswer
 

micfont999 a écrit :

ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ...


Pour le else:

Code :
  1. if(($_POST["x"])=="x" ) {$sql  = "SELECT * FROM x";}
  2. if(($_POST["y"])=="y" ) {$sql  = "SELECT * FROM y";}
  3.  $sql .= "...'";
  4. if(($_POST["x"])=="x" )  {$sql .= " and Codex='".$produit[$i]."'";}
  5. if(($_POST["y"])=="y" )  {$sql .= " and Codey='".$produit[$i]."'";}
  6. $sql .= " and pays='".$pays[$i]."'";
  7. $sql1 = " and date='".$Mois1."'"; $sql2 = " and date='".$Mois2."'"; $sql3 = " and date='".$Mois3."'";$sql4 = " and date='".$Mois4."'";
  8. $resul1 = requete_SQL($sql.$sql1);$resul2 = requete_SQL($sql.$sql2);$resul3 = requete_SQL($sql.$sql3);$resul4 = requete_SQL($sql.$sql4);
  9. $rows1=mysql_num_rows($resul1); $rows2=mysql_num_rows($resul2);$rows3=mysql_num_rows($resul3);$rows4=mysql_num_rows($resul4);
  10.             $query="INSERT INTO x(...) values ('";
  11. Script en rouge
  12. if (!$rows1){
  13.   $query1= "{$query}{$produit[$i]}','{$var1[$i]}','{$pays[$i]}',...,'{$Mois1}')";
  14.   $resul1 = requete_SQL($query1);}
  15. else{
  16.  if(($_POST["x"])=="x" ) $queryUP  ="UPDATE x SET";
  17.  if(($_POST["y"])=="y" ) $queryUP  ="UPDATE y SET";
  18.                           $queryUP .=" var1= '{$var1[$i]}',pays= '{$pays[$i]}',...";
  19.  if(($_POST["x"])=="x" ) $queryUP .="' WHERE codex= '";
  20.  if(($_POST["y"])=="y" ) $queryUP .="' WHERE codey= '";
  21.                          $queryUP .="{$produit[$i]}' and ... and Date= '{$Mois1}'";
  22.  $queryUP .= " and pays='".$pays[$i]."'";
  23.  $resul = requete_SQL($queryUP);
  24. }
  25. Fin de script en rouge


Ce qui est en rouge, je le répete 4 fois en fonction de mes 4 mois:
 
if (!$rows2){} else{}  if (!$rows3){} else{}  if (!$rows4){} else{}


Message édité par sabbahh le 16-10-2007 à 10:58:59
mood
Publicité
Posté le 16-10-2007 à 10:56:44  profilanswer
 

n°1624483
micfont999
Simplement Moi
Posté le 16-10-2007 à 11:00:42  profilanswer
 

c'est un peu le bordel la dedant :)  
je regarde tout ça

n°1624492
sabbahh
Posté le 16-10-2007 à 11:08:57  profilanswer
 

micfont999 a écrit :

ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ...


C'est pas fini  :sarcastic:  

Code :
  1. if(($_POST["x"])=="x" ){
  2. $rq= mysql_query("select codex from prodtx where Codey='".$produit[$i]."' LIMIT 1" );$rows=mysql_num_rows($rq); 
  3. while($ligne= mysql_fetch_array ($rq)){
  4. $sqlM  = mysql_query( "SELECT distinct * FROM x WHERE pays='".$pays[$i]."' and ... and Codex='".$ligne['Codex']."' " );$resM= mysql_fetch_array($sqlM);$rowsM=mysql_num_rows($sqlM);
  5. $sqlS  = mysql_query( "SELECT distinct * FROM y WHERE pays='".$pays[$i]."' and ... and Codey='".$ligne['Codey']."'  " );$resS = mysql_fetch_array($sqlS);$rowsS=mysql_num_rows($sqlS);
  6. $sq="SELECT SUM(var) as masomme  FROM x where ";
  7. $sq.=" codex in (select codex from produitx where codey='".$produit[$i]."' )";
  8. $sq.= " ...";
  9. $sqlM1 = " and Date='".date('F Y')."'";$sqlM2 = " and Date='".$Mois2."'";$sqlM3 = " and Date='".$Mois3."'";$sqlM4  = " and Date='".$Mois4."'";
  10. $sum1 = mysql_query($sq.$sqlM1);$sum2 = mysql_query($sq.$sqlM2);$sum3 = mysql_query($sq.$sqlM3);$sum4 = mysql_query($sq.$sqlM4);
  11. $S1 = mysql_fetch_assoc($sum1);$S2 = mysql_fetch_assoc($sum2);$S3 = mysql_fetch_assoc($sum3);$S4 = mysql_fetch_assoc($sum4);
  12. if (!$rowsM){ $query="INSERT INTO FctMc('Codex',.. Date) values ('";
  13. $query1= "{$query}{$ligne['Codex']}','{$var1[$i]}',..,'{$Mois1}')";$resul = requete_SQL($query1);
  14. $query2= "{$query}{$ligne['Codex']}','{$var2[$i]}',..,'{$Mois2}')";$resul2 = requete_SQL($query2);
  15. $query3= "{$query}{$ligne['Codex']}','{$var3[$i]}',..,'{$Mois3}')";$resul3 = requete_SQL($query3);
  16. $query4= "{$query}{$ligne['Codex']}','{$var4[$i]}',..,'{$Mois4}')";$resul4 = requete_SQL($query4);
  17. }
  18. else{
  19. if($S1 ['masomme']<>$var1[$i]){
  20. $sq=" delete from x WHERE .. and Date= '{$Mois1}' and codeMercury in (select codex from produitx where codey='".$produit[$i]."' )";
  21. $re = requete_SQL($sq);
  22. $query="INSERT INTO FctMc(Codex,..) values ('";
  23. $query1= "{$query}{$ligne[Codex]}','{$var1[$i]}',...,'{$Mois1}')";$resul = requete_SQL($query1);
  24. }
  25. }
  26. }
  27. }


et là pareil je répete la boucle 4 fois en fonction de mes variables var1...var4:
 if($Si ['masomme']<>$vari[$i]){}

n°1624500
micfont999
Simplement Moi
Posté le 16-10-2007 à 11:12:16  profilanswer
 

quand tu dis que tu répete, tu veux quand même pas dire que tu fait un copier coller ??

n°1624504
sabbahh
Posté le 16-10-2007 à 11:13:58  profilanswer
 

micfont999 a écrit :

ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ...


Code :
  1. if(($_POST["y"])=="y" ){
  2. $rq= mysql_query("select Codey from produity where Codex='".$produit[$i]."'" );$rows=mysql_num_rows($rq); 
  3. while($ligne= mysql_fetch_array ($rq)){
  4. $sqlS  = mysql_query( "SELECT distinct * FROM y WHERE ... " );$resS = mysql_fetch_array($sqlS);$rowsS=mysql_num_rows($sqlS);
  5. $sq="SELECT SUM(var) as masomme  FROM x where ";
  6. $sq.=" codeMercury in (select codex from produitx where ..."' )";
  7. $sqlM1 = " and Date='".date('F Y')."'";$sqlM2 = " and Date='".$Mois2."'";$sqlM3 = " and Date='".$Mois3."'";$sqlM4  = " and Date='".$Mois4."'";
  8. $sum1 = mysql_query($sq.$sqlM1);$sum2 = mysql_query($sq.$sqlM2);$sum3 = mysql_query($sq.$sqlM3);$sum4 = mysql_query($sq.$sqlM4);
  9. $S1 = mysql_fetch_assoc($sum1);$S2 = mysql_fetch_assoc($sum2);$S3 = mysql_fetch_assoc($sum3);$S4 = mysql_fetch_assoc($sum4);
  10. if (!$rowsS){ $query="INSERT INTO y (...) values ('";
  11. $query1= "{$query}{$ligne['Codey']}','{$S1['masomme']}',...,'{$Mois1}')";$resul = requete_SQL($query1);//echo $query1;
  12. $query2= "{$query}{$ligne['Codey']}','{$S2['masomme']}',...,'{$Mois2}')";$resul2 = requete_SQL($query2);
  13. $query3= "{$query}{$ligne['Codey']}','{$S3['masomme']}',...,'{$Mois3}')";$resul3 = requete_SQL($query3);
  14. $query4= "{$query}{$ligne['Codey]}','{$S4['masomme']}',...,'{$Mois4}')";$resul4 = requete_SQL($query4);
  15. }
  16. else{
  17. $sqUp="UPDATE y SET var = '".$S1['masomme']."' WHERE ... AND Date = '".$Mois1."' and LogRez = '".$IdCptCle."' ";$resUP = requete_SQL($sqUp);
  18. $sqUp="UPDATE y SET Fct = '".$S2['masomme']."' WHERE ... AND Date = '".$Mois2."' and LogRez = '".$IdCptCle."' ";$resUP = requete_SQL($sqUp);
  19. // je répete ce update 4 fois aussi..
  20. }
  21. }
  22. }


Et voilà  :sarcastic: c'est lourd? long? pas propre?..?

n°1624506
sabbahh
Posté le 16-10-2007 à 11:15:04  profilanswer
 

micfont999 a écrit :

quand tu dis que tu répete, tu veux quand même pas dire que tu fait un copier coller ??


ben càd que je repete le code mais je change les paramètres (en fonction des mois..)
je repete la synthaxe

n°1624508
sabbahh
Posté le 16-10-2007 à 11:15:43  profilanswer
 

micfont999 a écrit :

c'est un peu le bordel la dedant :)  
je regarde tout ça


Ok  :(

n°1624511
micfont999
Simplement Moi
Posté le 16-10-2007 à 11:19:57  profilanswer
 

sabbahh a écrit :


ben càd que je repete le code mais je change les paramètres (en fonction des mois..)
je repete la synthaxe


 
Ouais t'a pas 4 fois ce code copier coller dans le programme quoi, j'ai eu peur :)  :whistle:  
on va pouvoir faire un peu de ménage la dedant tkt pas :)  
tu à déjà penser à te tourner vers des fonctions ?? ça serais déjà un tit plus

n°1624544
sabbahh
Posté le 16-10-2007 à 11:38:32  profilanswer
 

ben comment?? ben je sais pas..

n°1624552
micfont999
Simplement Moi
Posté le 16-10-2007 à 11:45:02  profilanswer
 

est ce que tu peux juste expliquer concretement ce que tu veux faire avec cette application :) si ça ne te dérange pas ... pourquoi tu fait ce programme en gros .. ce que tu veux y faire, et le but final :)
merci

n°1624572
sabbahh
Posté le 16-10-2007 à 11:55:04  profilanswer
 

Ok, c'est parti!
j'ai un tableau qui s'affiche en fonction d'un critère soit x soit Y.
dc je vérifie tjrs ce critére afin de construire mes requêtes (choix des tables, de code "id",..).
alors en gros j'enregistre ce qui était saisi par l'user; j'insere si c'est un nouveau enregistrement, j'update si modif. cela marchait assez vite avant que j'ajoute l'option suivante:
Insertion:
si on saisi sous le critère X, on affecte au premier codeY la valeur saisi (donc j'écris à la fois dans les 2 tables)
et si on saisi sous le critère Y, je fais la somme des codes X et je l'affecte au codeY correspondant.
Modification:
si on saisi sous le critère X, je regarde si la valeur saisi est égale à la somme des codesY. si OUI, je modifie rien. si NON, je l'affecte, comme vu pour l'insertion, au premier codeY et je delete ce que j'avais.  
et si on saisi sous le critère Y, je fais la somme des codes X et je lmodifie le codeY correspondant.
 
N.B: 1 codeY appartient 1 ou n codeX

n°1624579
micfont999
Simplement Moi
Posté le 16-10-2007 à 11:57:58  profilanswer
 

vais manger et je regarde à ça :)  
bon apetit :)

n°1624581
sabbahh
Posté le 16-10-2007 à 11:59:16  profilanswer
 

sabbahh a écrit :

Ok, c'est parti!
j'ai un tableau qui s'affiche en fonction d'un critère soit x soit Y.
dc je vérifie tjrs ce critére afin de construire mes requêtes (choix des tables, de code "id",..).
alors en gros j'enregistre ce qui était saisi par l'user; j'insere si c'est un nouveau enregistrement, j'update si modif. cela marchait assez vite avant que j'ajoute l'option suivante:
Insertion:
si on saisi sous le critère X, j'affecte au premier codeY la valeur saisi, en plus biensur de l'affectation de la valeur au codeX(donc j'écris à la fois dans les 2 tables)
et si on saisi sous le critère Y, je fais la somme des codes X et je l'affecte au codeY correspondant, plus l'enregistrement des valeurs saisies à la tableY.
Modification:
si on saisi sous le critère X, je regarde si la valeur saisi est égale à la somme des codesY. si OUI, je modifie rien. si NON, je l'affecte, comme vu pour l'insertion, au premier codeY et je delete ce que j'avais, sans biensur oublier de modifier au niveau de X
et si on saisi sous le critère Y, je fais la somme des codes X et je lmodifie le codeY correspondant, et aussi les codes Y
 
N.B: 1 codeY appartient 1 ou n codeX


 
 
 

n°1624582
sabbahh
Posté le 16-10-2007 à 11:59:38  profilanswer
 

Bon app à toi aussi.
a+

n°1628412
sabbahh
Posté le 22-10-2007 à 09:50:09  profilanswer
 

plus de réponse :(

n°1628416
micfont999
Simplement Moi
Posté le 22-10-2007 à 10:00:39  profilanswer
 

si je regardais ton truc encore hier soir .. mais je suis un peu surbooké en ce moment .. d'ou le pourquoi j'ai pas encore répondu, promi avant la fin de la journée j'essai de t'aider

n°1628423
masklinn
í dag viðrar vel til loftárása
Posté le 22-10-2007 à 10:40:34  profilanswer
 

Commençons par le commencement: la boucle "de nettoyage" initiale ne sert à rien, et tu injectes tes données sans les escaper dans tes requêtes SQL ce qui est une magnifique faille de sécurité.
 
Et tu devrais utiliser le foreach introduit en PHP4.
 
Si tu es en PHP 5.1 prière de passer à PDO ou mysqli et d'utiliser les prepared statements toussa.
 
Enfin, les trucs genre
 

Code :
  1. $query1= "{$query}{$produit[$i]}','{$var1[$i]}','{$pays[$i]}',..)";$resul = requete_SQL($query1);//echo  $query1;
  2. $query2= "{$query}{$produit[$i]}','{$var2[$i]}','{$pays[$i]}',..)";$resul2 = requete_SQL($query2);
  3. $query3= "{$query}{$produit[$i]}','{$var3[$i]}','{$pays[$i]}',...)";$resul3 = requete_SQL($query3);
  4. $query4= "{$query}{$produit[$i]}','{$var4[$i]}','{$pays[$i]}',...)";$resul4 = requete_SQL($query4);


 
non quoi [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1628438
micfont999
Simplement Moi
Posté le 22-10-2007 à 10:49:46  profilanswer
 

bah c'est du copier coller qui faut réduire. Je suis sur que ton truc peut tenir en une 20 aine de lignes même pas ..

n°1628442
sabbahh
Posté le 22-10-2007 à 10:52:08  profilanswer
 

masklinn a écrit :

Commençons par le commencement: la boucle "de nettoyage" initiale ne sert à rien, et tu injectes tes données sans les escaper dans tes requêtes SQL ce qui est une magnifique faille de sécurité.
 
Et tu devrais utiliser le foreach introduit en PHP4.
 
Si tu es en PHP 5.1 prière de passer à PDO ou mysqli et d'utiliser les prepared statements toussa.
 
Enfin, les trucs genre
 

Code :
  1. $query1= "{$query}{$produit[$i]}','{$var1[$i]}','{$pays[$i]}',..)";$resul = requete_SQL($query1);//echo  $query1;
  2. $query2= "{$query}{$produit[$i]}','{$var2[$i]}','{$pays[$i]}',..)";$resul2 = requete_SQL($query2);
  3. $query3= "{$query}{$produit[$i]}','{$var3[$i]}','{$pays[$i]}',...)";$resul3 = requete_SQL($query3);
  4. $query4= "{$query}{$produit[$i]}','{$var4[$i]}','{$pays[$i]}',...)";$resul4 = requete_SQL($query4);


 
non quoi [:pingouino]


 
Excuse moi, mais j'ai rien compris  :whistle:  c'est pas bien ck je fais là?

n°1628445
masklinn
í dag viðrar vel til loftárása
Posté le 22-10-2007 à 10:53:51  profilanswer
 

sabbahh a écrit :


 
Excuse moi, mais j'ai rien compris  :whistle:  c'est pas bien ck je fais là?


Ben non, c'est n'importe quoi, tu fais 4 fois la même chose en changeant 2 lettres [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1628447
sabbahh
Posté le 22-10-2007 à 10:56:37  profilanswer
 

masklinn a écrit :


Ben non, c'est n'importe quoi, tu fais 4 fois la même chose en changeant 2 lettres [:pingouino]


Dans ce bout de code, j'ai deux variables qui change ("$var" ..)
cmt j'introduit le foreach ici?


Message édité par sabbahh le 22-10-2007 à 10:57:03
n°1628465
sabbahh
Posté le 22-10-2007 à 11:26:52  profilanswer
 

micfont999 a écrit :

bah c'est du copier coller qui faut réduire. Je suis sur que ton truc peut tenir en une 20 aine de lignes même pas ..


Question:
 à ce niveau là (récupération des données saisies):

Code :
  1. for ($i = 0; $i < (count($_POST["produit"])); $i++){
  2. for($j=0;$j<(count($_POST["pays"][$i]));$j++){
  3.      if(!empty($_POST["produit"][$i])) {$produit[]=trim($_POST["produit"][$i]);} else{$produit[]="";}
  4.   if(!empty($_POST["var1"][$i][$j])) {$var1[]=trim($_POST["var1"][$i][$j]);} else{$var1[]="";}
  5.   if(!empty($_POST["var2"][$i][$j])) {$var2[]=trim($_POST["var2"][$i][$j]);} else{$var2[]="";}
  6.   if(!empty($_POST["var3"][$i][$j])) {$var3[]=trim($_POST["var3"][$i][$j]);} else{$var3[]="";}
  7.   if(!empty($_POST["var4"][$i][$j])) {$var4[]=trim($_POST["var4"][$i][$j]);} else{$var4[]="";}
  8.   if(!empty($_POST["pays"][$i][$j])) {$pays[]=trim($_POST["pays"][$i][$j]);} else{$pays[]="";}
  9. }
  10. }


Est ce qu'il y a moyen d'affecter les "trim($_POST["varX"][$i][$j])" à par exemple une seule variable (tab [X][]) et puis derrière réduire le nombre des lignes, genre:  

Code :
  1. for($j=0;$j<sizeoff(X)..){
  2. $query1= "{$query}{$prodtname[$i]}','{$var[X][$i]}','{$client[$i]}','{$IdCptCle}','{$Mois[X]}')";$resul = requete_SQL($query1);//echo  $query1;
  3. }


 

n°1628468
micfont999
Simplement Moi
Posté le 22-10-2007 à 11:30:55  profilanswer
 

oui c'est possible normalement, tout comme les POST et GET qu'on peut sans dout réduite aussi ... à essayer avec la concaténation aussi

n°1628520
sabbahh
Posté le 22-10-2007 à 12:07:38  profilanswer
 

micfont999 a écrit :

oui c'est possible normalement, tout comme les POST et GET qu'on peut sans dout réduite aussi ... à essayer avec la concaténation aussi


déjà j'arrive à récupérer les données de cette façon:

Code :
  1. for($z=0;$z<4;$z++){
  2.   if(!empty($_POST["var"][$z][$i][$j])) {$var[$z][]=trim($_POST["var"][$z][$i][$j]);} else{$var[$z][]="";}
  3. }

n°1628544
CyberDenix
Posté le 22-10-2007 à 12:56:06  profilanswer
 

Bonjour,
 
Juste en passant, remplace  

Code :
  1. for ($i = 0; $i < (count($_POST["produit"])); $i++){
  2.   ...
  3. }


 
par :
 

Code :
  1. $max = count($_POST['produit']);
  2. for ($i = 0; $i < $max); ++$i) {
  3.   ...
  4. }


 
Dans ton code, tu parcours ton tableau pour compter le nombre d'éléments, à chaque tour de boucle !
 
Dans l'exemple corrigé, le nombre d'éléments de ton tableau n'est compté qu'une fois.  
Le ++$i induit en outre une optimisation par rapport au $i++, mais ça c'est plus de l'ordre du détail.
 
Voilà je n'ai pas le temps de regarder en détail, mais prends déjà ça... :D

Message cité 1 fois
Message édité par CyberDenix le 22-10-2007 à 13:01:16

---------------
Directeur Technique (CTO)
n°1628551
masklinn
í dag viðrar vel til loftárása
Posté le 22-10-2007 à 13:05:24  profilanswer
 

CyberDenix a écrit :

Bonjour,
 
Juste en passant, remplace  

Code :
  1. for ($i = 0; $i < (count($_POST["produit"])); $i++){
  2.   ...
  3. }


 
par :
 

Code :
  1. $max = count($_POST['produit']);
  2. for ($i = 0; $i < $max); ++$i) {
  3.   ...
  4. }



Code :
  1. for($_POST['produit'] as $produit) {
  2.    // ...
  3. }


de rien

CyberDenix a écrit :

Dans ton code, tu parcours ton tableau pour compter le nombre d'éléments, à chaque tour de boucle !


Heuu j'espère bien que non, on est pas en C, dans les langages modernes si les implémenteurs sont pas trop cons ils stockent la taille du tableau directement à côté du tableau dans un cache [:pingouino]

CyberDenix a écrit :


Le ++$i induit en outre une optimisation par rapport au $i++, mais ça c'est plus de l'ordre du détail.


C'est surtout de l'ordre de la connerie, on est pas en ASM là. Même en javascript, ya pas de différence entre les deux dans 3 navigateurs sur 4 (sous MSIE, c'est même l'inverse)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1628561
CyberDenix
Posté le 22-10-2007 à 13:30:01  profilanswer
 

masklinn a écrit :


Code :
  1. for($_POST['produit'] as $produit) {
  2.    // ...
  3. }


de rien


 

Code :
  1. foreach($_POST['produit'] as $produit) {
  2.    // ...
  3. }


de rien


---------------
Directeur Technique (CTO)
n°1628564
micfont999
Simplement Moi
Posté le 22-10-2007 à 13:38:30  profilanswer
 

c'est mieux en effet

n°1628729
sabbahh
Posté le 22-10-2007 à 16:33:44  profilanswer
 

micfont999 a écrit :

c'est mieux en effet


je m'en sors très bien avec ce petit code sauf k'il me met des warning

Code :
  1. $sq[] = $Mois[$z];
  2. @$resul[] = requete_SQL($sql.$sq[$z]."'" );
  3. @$rows[]=mysql_num_rows($resul[$z]);


j'ai mis les "@" pour voir si ça fonctionne quand même et c'est le cas. pourquoi ces warnings?
pour le premier: Warning: Cannot use a scalar value as an array  
le 2éme: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

Message cité 1 fois
Message édité par sabbahh le 22-10-2007 à 16:34:11
n°1628762
micfont999
Simplement Moi
Posté le 22-10-2007 à 17:04:30  profilanswer
 

je pense que pour le num rows il faut mettre $resul[$z] dans une variable avant ..
 
pour le problème de cannot use scalar :  
verifie que tu n'a pas le même nom que dans un champs de ta base de donnée, je ne pense pas mais on ne sais jamais

Message cité 1 fois
Message édité par micfont999 le 22-10-2007 à 17:14:59
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Temps de complilation

 

Sujets relatifs
réduire temps d'affichage site webcréer un script ou logiciel pour modifier une page web automatikement
Rafraichir plusieurs div en même temps[ORACLE 7] Calculer le temps entre 2 dates
temps UTC en format DatePROBLEME D'AFFICHAGE DE DATE DE HEURE EN TEMPS REEL
Aide pour la gestion du temps et des applicationsNotification en temps réel pour technologies mobiles
[SCJP] faisable en combien de temps d'après vous?Faire marcher le debugger en temps réel avec un DLL
Plus de sujets relatifs à : Temps de complilation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR