Bonjour,
j'ai un code avec une boucle while qui liste mes commandes
A l'intérieur de cette boucle je fais une requete pour récupérer les produits de ma commande.
Si j'ai 5000 commandes alors je fais 5000 sous-requetes ce qui n'est pas vraiment optimal ...
J'ai donc fais une fonction qui stock dans un array() la totalité des produits
cette fonction marche bien, pas de soucis de côté là (enfin normalement !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function setTabKdoCommande() { $req = $this->ewp->sqlQuery ("SELECT com_cli, kdo FROM ".EXP_PROD." WHERE prep=1 AND type=1 AND com_cli>='".$this->getMinCommande()."' ORDER BY com_cli ASC, kdo ASC"); while($o = $this->ewp->sqlGetObj($req)) { //ajout dans mon array //com_cli ==> id de la commande //kdo ==> id du produit $this->tabKdoCommande[$o->com_cli][] = $o->kdo; } }
Dans ma boucle d'origine je remplace la requête que je faisais par un foreach sur le tableau créé précédemment
le problème c'est que je n'arrive pas à accéder à l'élément $this->tabKdo[$numkdo] alors $numKdo est bien existant et que $this->tabKdo[$numkdo] n'est pas vide (vu avec un print_r)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 while(....) { $nbOK = 0; foreach($this->tabKdoCommande[$com_cli] as $indexTab => $numKdo) { if($this->tabKdo[$numkdo] > 0) { $this->tabKdo[$numKdo]--; $nbOK++; } } }
ce que je ne comprends pas c'est que j'arrive à accéder à l'élément en laissant mon ancienne sous-requete
là il accède bien à $this->tabKdo[$o->kdo] ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 while(....) { $nbOK = 0; $req = $this->ewp->sqlQuery ("SELECT kdo FROM ".EXP_PROD." WHERE com_cli='".$com_cli."' AND prep=1 AND type=1"); while($o = $this->ewp->sqlGetObj($req)) { if($this->tabKdo[$o->kdo] > 0) { $this->tabKdo[$o->kdo]--; $nbOK++; } } }
dans le 1er cas si $numKdo=3000 (par exemple) il n'accède pas à $this->tabKdo[$numkdo]
dans le 2e cas si $o->kdo=3000 alors il accède bien à la valeur de $this->tabKdo[$o->kdo]
je me tords les neurones dans tous les sens depuis une heure car je ne comprends pas ce qui cloche ...
j'ai vérifié les types qui sont des string pour $numKdo et $o->kdo
j'ai essayé de faire des cast (au cas où ...)
mais là je bloque désespérément !
Si vous avez une idée du pourquoi du comment je suis 100% preneur
Merci de m'avoir lu
Partager