PHP|Débutant :: Forums

Advertisement

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

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

#1 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#2 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#3 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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,

#4 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#5 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#6 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

Merci.

#7 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#8 Re : Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

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

#9 Forum Général PHP » Boucle PHP » 21-10-2011 16:01:23

colobe
Réponses : 18

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();
    }

Pied de page des forums

Propulsé par FluxBB