Temps de complilation - PHP - Programmation
Marsh Posté le 16-10-2007 à 10:23:51
Bonjour,  
montre voir ton code s'il n'est pas trop long  
  
merci
Marsh Posté le 16-10-2007 à 10:30:47
ton algo en gros c'est deux boucles imbriquées quoi ...  
c'est assez restreint pour t'aider ... 
Marsh Posté le 16-10-2007 à 10:44:27
| micfont999 a écrit : ton algo en gros c'est deux boucles imbriquées quoi ...   | 
 
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 : 
 | 
 
Ensuite 
j'utilise la boucle : for($i=0;$i<sizeof($produit);$i++){} pour effectuer plein de traitement dans ma bdd càd: 
1-  
| Code : 
 | 
 
 2- je fais un select, le resultat de ce select va me permettre soit d'inserer ou de modifier (update): 
| Code : 
 | 
 
 je t'envoie le else dans un autre post 
Marsh Posté le 16-10-2007 à 10:56:44
| micfont999 a écrit : ton algo en gros c'est deux boucles imbriquées quoi ...   | 
 
Pour le else: 
| Code : 
 | 
 
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{}
Marsh Posté le 16-10-2007 à 11:00:42
ReplyMarsh Posté le 16-10-2007 à 11:08:57
| micfont999 a écrit : ton algo en gros c'est deux boucles imbriquées quoi ...   | 
 
C'est pas fini   
  
| Code : 
 | 
 
et là pareil je répete la boucle 4 fois en fonction de mes variables var1...var4: 
 if($Si ['masomme']<>$vari[$i]){}
Marsh Posté le 16-10-2007 à 11:12:16
quand tu dis que tu répete, tu veux quand même pas dire que tu fait un copier coller ??
Marsh Posté le 16-10-2007 à 11:13:58
| micfont999 a écrit : ton algo en gros c'est deux boucles imbriquées quoi ...   | 
 
| Code : 
 | 
 
Et voilà   c'est lourd? long? pas propre?..?
 c'est lourd? long? pas propre?..?
Marsh Posté le 16-10-2007 à 11:15:04
| 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
Marsh Posté le 16-10-2007 à 11:15:43
ReplyMarsh Posté le 16-10-2007 à 11:19:57
| sabbahh a écrit :   | 
 
 
Ouais t'a pas 4 fois ce code copier coller dans le programme quoi, j'ai eu peur  
   
  
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 
Marsh Posté le 16-10-2007 à 11:45:02
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
 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
Marsh Posté le 16-10-2007 à 11:55:04
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
Marsh Posté le 16-10-2007 à 11:59:16
| sabbahh a écrit : Ok, c'est parti!  | 
 
 
 
 
Marsh Posté le 22-10-2007 à 10:00:39
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
Marsh Posté le 22-10-2007 à 10:40:34
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 : 
 | 
 
 
non quoi ![[:pingouino] [:pingouino]](https://forum-images.hardware.fr/images/perso/pingouino.gif)
Marsh Posté le 22-10-2007 à 10:49:46
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 ..
Marsh Posté le 22-10-2007 à 10:52:08
| 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é.  
   | 
 
 
Excuse moi, mais j'ai rien compris   c'est pas bien ck je fais là?
  c'est pas bien ck je fais là? 
Marsh Posté le 22-10-2007 à 10:53:51
| sabbahh a écrit :   | 
 
Ben non, c'est n'importe quoi, tu fais 4 fois la même chose en changeant 2 lettres ![[:pingouino] [:pingouino]](https://forum-images.hardware.fr/images/perso/pingouino.gif)
Marsh Posté le 22-10-2007 à 10:56:37
| masklinn a écrit :   | 
 
Dans ce bout de code, j'ai deux variables qui change ("$var" ..) 
cmt j'introduit le foreach ici? 
Marsh Posté le 22-10-2007 à 11:26:52
| 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 : 
 | 
 
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 : 
 | 
 
 
Marsh Posté le 22-10-2007 à 11:30:55
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
Marsh Posté le 22-10-2007 à 12:07:38
| 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 : 
 | 
Marsh Posté le 22-10-2007 à 12:56:06
Bonjour, 
 
Juste en passant, remplace  
| Code : 
 | 
 
 
par : 
 
| Code : 
 | 
 
 
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... 
Marsh Posté le 22-10-2007 à 13:05:24
| CyberDenix a écrit : Bonjour,  
   
 | 
 
| Code : 
 | 
 
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] [:pingouino]](https://forum-images.hardware.fr/images/perso/pingouino.gif) 
 
| CyberDenix a écrit :   | 
 
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)
Marsh Posté le 22-10-2007 à 13:30:01
| masklinn a écrit :   
   | 
 
 
| Code : 
 | 
 
de rien 
Marsh Posté le 22-10-2007 à 16:33:44
| 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 : 
 | 
 
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
Marsh Posté le 22-10-2007 à 17:04:30
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 
Marsh Posté le 16-10-2007 à 10:22:26
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?