PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-10-2011 15:30:59

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Boucle PHP

Bonjour,

Je débute dans le PHP et je suis en train de travailler sur une petite boutique.
J'ai une modification sur une boucle de produit mais il doit y avoir une erreur car elle ne fonctionne pas. Une idée ?

Merci d'avance pour votre aide,

colo

while ($i=0; $i<count($_POST['cadeauRDV']); $i++; {
 
    $q5="SELECT unit_price,productname FROM vtiger_products WHERE productid='".$_POST['cadeauRDV']."'";
    $db5->query($q5);
    $db5->next_record();
    }

Hors ligne

#2 14-10-2011 15:57:55

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

Saluton,
Tu vois bien qu'a part dans les parenthèse du while $i ne sert à rien.
Alors utilise plutôt foreach($_POST['cadeauRDV'])


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 17-10-2011 08:16:12

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Bonjour,

Merci pour cette fonction, je l'ai insérer dans mon code.

Problème, DW indique toujours "erreur de syntaxe" sur la ligne contenant la requête foreach.
Un idée du problème ? Sachant que ce fragment se trouve dans déjà dans une boucle if/else

merci pour votre aide,

Colo

Hors ligne

#4 17-10-2011 10:55:44

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

If/else n'est pas une structure itérative (boucle) mais alternative.

Mais comme il y a du DreamWeaver dans l'air, je prends ma clause de sauvegarde et mes jambes à mon cou.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 17-10-2011 10:57:36

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Je pense que c'est juste un problème de syntaxe, mais je ne vois pas ou...

Hors ligne

#6 17-10-2011 11:19:11

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

colobe a écrit :

Je pense que c'est juste un problème de syntaxe, mais je ne vois pas où...

Ben nous non plus, d'autant que, perso, ma boule de cristal est cassée.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 17-10-2011 11:46:21

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

qu'est-ce qu'il faudrait que je vous poste pour que cela puisse vous aider à y voir plus clair ?

Merci.

Hors ligne

#8 17-10-2011 13:47:47

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

Des lunettes ?

Mais non, le bout de code incriminé et les messages d'erreur retournés.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 17-10-2011 14:22:24

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Alors voici,

- le fragment de code qui pose problème depuis le début du if jusqu’à la fin :

$q2 = "SELECT salesorderid FROM vtiger_salesorder INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_salesorder.salesorderid WHERE potentialid='".$_SESSION['potentialid']."' AND contactid='".$hotesse_rdv."' AND deleted='0' ";
$db2->query($q2);
$db2->next_record();
$nb = $db2->num_rows();
  if($nb>0){
   
    $q4="SELECT sequence_no FROM vtiger_inventoryproductrel WHERE id='".$db2->f("salesorderid")."' ORDER BY sequence_no DESC";
    $db4->query($q4);
    $db4->next_record();
   
    foreach ($_POST['cadeauRDV']) {
    $q5="SELECT unit_price,productname FROM vtiger_products WHERE productid='".$_POST['cadeauRDV']."'";
    $db5->query($q5);
    $db5->next_record();
    }
       
    $q3="INSERT INTO vtiger_inventoryproductrel (id, productid, sequence_no, quantity, listprice, product_name, tax1, type_cadeau) VALUES ('".$db2->f("salesorderid")."','".$_POST['cadeauRDV']."','".($db4->f("sequence_no")+1)."','1','0','".$db5->f("productname")." (Cadeau RDV)','0','RR')";
    $db3->query($q3);
    $db3->next_record();
   
  } else

A l'affichage de la page, le message est le suivant :

Parse error: syntax error, unexpected ')' in /home/www/modules/Commandes/rendez-vous.php on line 220

La 220, c'est la ligne qui commence par "foreach"

Merci pour aide en tout cas.

Colo

Dernière modification par colobe (17-10-2011 14:24:38)

Hors ligne

#10 17-10-2011 14:31:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

doc a écrit :

foreach (array_expression as $value)

Il est où le as machin dans ton code ?

D'autre part, toutes ces colonnes qui se terminent pas _id sont, j'imagine et je l'espère, des clés primaires numériques voire auto-incrémentées. Alors pourquoi encapsuler les valeurs de comparaison avec des quotes dans les requêtes ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 17-10-2011 14:32:29

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Boucle PHP

chalut


foreach ($_POST['cadeauRDV'] as $value){
             .....................
}
 

a++

Hors ligne

#12 18-10-2011 11:54:54

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Bonjour,

Ma variable $_POST['cadeauRDV'] est issue des checkbox cochées justement. Donc quelle variable puis-je lui donner ?

as $1 ?
as checked ?

Merci pour votre aide,

Colo

Hors ligne

#13 18-10-2011 12:37:15

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

Tu es libre et maître du choix du nom de tes variables.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#14 18-10-2011 12:58:53

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

En fait ce que je ne sais pas faire, c'est savoir comment dire "pour chaque cadeau coché, l’inscrire en BDD".
Si quelqu'un peut m'expliquer, ce serait cool.

Sachant que le code au niveau des checkbox est le suivant :

<td><?php
$q = "SELECT vtiger_productcf.productid,productname FROM vtiger_products INNER JOIN vtiger_productcf ON vtiger_productcf.productid = vtiger_products.productid WHERE cf_1647 LIKE '%RR'";
$db->query($q);
while($db->next_record()){
  ?>
<input type="checkbox" name="cadeauRDV" id="cadeauRDV" value="<?php echo $db->f("productid"); ?>" /> <?php echo $db->f("productname"); ?><br />
<?php
}

?>

Merci pour votre aide,

Hors ligne

#15 18-10-2011 13:27:25

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

Si tu veux créer un tableau de champs de saisie en HTML il faut leur ajouter des crochets à la fin du nom :

<input type="checkbox" name="cadeauRDV[]"

par contre au sein du DOM chaque id doit être unique.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#16 19-10-2011 14:14:07

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Bonjour,

rien n'y fait, les multiples cadeaux ne s'enregistre pas.
Je vais reprendre la logique complète, si vous voyez des erreurs n'hésitez pas.

J'ai donc le bout de code qui permet d'afficher la liste des cadeaux avec les checkbox

<?php
$q = "SELECT vtiger_productcf.productid,productname FROM vtiger_products INNER JOIN vtiger_productcf ON vtiger_productcf.productid = vtiger_products.productid WHERE cf_1647 LIKE '%RR'";
$db->query($q);
while($db->next_record()){
  ?>
<input type="checkbox" name="cadeauRDV[]" id="cadeauRDV" value="<?php echo $db->f("productid"); ?>" /> <?php echo $db->f("productname"); ?><br />
<?php
}

?>

Puis j'ai le code qui sélectionne dans ma BDD

$q5="SELECT unit_price,productname FROM vtiger_products WHERE productid='".$_POST['cadeauRDV']."'";
    $db5->query($q5);
    $db5->next_record();
    $i++;

Et enfin le code qui enregistre les cadeaux dans la BDD

$q3="INSERT INTO vtiger_inventoryproductrel (id, productid, sequence_no, quantity, listprice, product_name, tax1, type_cadeau) VALUES ('".$db2->f("salesorderid")."','".$_POST['cadeauRDV']."','".($db4->f("sequence_no")+1)."','1','0','".$db5->f("productname")." (Cadeau RDV)','0','RR')";
    $db3->query($q3);
    $db3->next_record();

Tout ceci fonctionne très bien si je mets des bouton radio et que je ne sélectionne qu'un produit mais pas pour une liste à cocher avec plusieurs cadeaux.
Je précise même que si je ne coche qu'un seul cadeau, il s'inscrit correctement en BDD mais si j'en coche 2, je n'ai rien en retour.

Qu'en pensez-vous ? Merci pour votre aide.

Colo

Dernière modification par colobe (19-10-2011 14:15:53)

Hors ligne

#17 19-10-2011 14:42:26

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Boucle PHP

Un conseil, avant d'utiliser ce qui vient de $_POST, regarde ce que ce dernier contient.
Puisque tu as déclaré name="cadeauRDV[]" $_POST[''cadeauRDV'] ne doit plus y être présent.
printr($_POST) ou var_dump($_POST) devraient te permettre d'y voir plus clair.
Par ailleurs, je te le dis à nouveau dans le DOM chaque id doit être unique, or là tu mets id="cadeauRDV", donc la même valeur, dans chaque ligne de ta boucle while. Javascript, entre autres, n'y retrouvera pas ses petits.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#18 21-10-2011 13:36:10

colobe
Membre
Inscription : 14-10-2011
Messages : 9

Re : Boucle PHP

Alors j'ai changé de stratgéie, je suis parti sur la boulce suivante :

for($i=0;$i<count($_POST['cadeauRDV']);$i++) {
     
    $q5="SELECT unit_price,productname FROM vtiger_products WHERE productid='".$_POST['cadeauRDV'][$i]."'";
    $db5->query($q5);
    $db5->next_record();
   
    }

La partie de code dans le body reste inchangée :

<input type="checkbox" name="cadeauRDV[]" id="<?php echo $db->f("productid"); ?>" value="<?php echo $db->f("productid"); ?>" /> <?php echo $db->f("productname"); ?><br />

Mais bon ça ne fonctionne toujours pas, vous avez une idée?

Merci pour votre aide,

Colo

Hors ligne

#19 21-10-2011 16:01:23

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Boucle PHP

Bonjour,

maljuna kris a écrit :

Un conseil, avant d'utiliser ce qui vient de $_POST, regarde ce que ce dernier contient.

Parfois il suffit de prendre non seulement le temps de lire les réponses, mais aussi de faire l'effort de les comprendre.
Ensuite, pour debogger avoir les messages d'erreur, ça aide.

Encore un dernier truc,

$db->f("productid");

EDIT: Ca fonctionne en PHP mais ici tu appeles une fonction alors que je pense que tu cherches à récupérer la valeur d'une variable.. Donc pas forcément d'erreur mais pas le résultat escompté.

Cordialement,

Jc

Dernière modification par Jc (21-10-2011 22:33:43)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums