problème de boucle foreach

Une moulinette de code qui s'est enrayée, une requête SQL qui ne passe pas ?
cylvain
 
Messages: 22
Inscription: 30 Nov 2015, 10:19

problème de boucle foreach

Messagede cylvain » 06 Nov 2016, 11:03

Bonjour,

J'ai un problème sur ma boucle, j'ai d'un coté un formulaire avec ajout de produits

Code: Tout sélectionner
.....
<div class="container content">
   <div class='row'>
            <div class='col-xs-12 col-sm-12 col-md-12 col-lg-12'>
               <table class="table table-bordered table-hover">
               <thead>
                  <tr>
                     <th width="2%"><input id="check_all" class="formcontrol" type="checkbox"/></th>
                     <th width="15%">Ref</th>
                     <th width="38%">Produits</th>
                     <th width="15%">Prix</th>
                     <th width="15%">Qtt</th>
                     <th width="15%">Total</th>
                  </tr>
               </thead>
               <tbody>
                  <tr>
                     <td><input class="case" type="checkbox"/></td>
                     <td><input type="text" data-type="productCode" name="itemNo[]" id="itemNo_1" class="form-control autocomplete_txt" autocomplete="off"></td>
                     <td><input type="text" data-type="productName" name="itemName[]" id="itemName_1" class="form-control autocomplete_txt" autocomplete="off"></td>
                     <td><input type="number" name="price[]" id="price_1" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                     <td><input type="number" name="quantity[]" id="quantity_1" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                     <td><input type="number" name="total[]" id="total_1" class="form-control totalLinePrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
                  </tr>
               </tbody>
            </table>
            </div>
         </div>
         <div class='row'>
            <div class='col-xs-12 col-sm-3 col-md-3 col-lg-3'>
               <button class="btn btn-danger delete" type="button">- Supprimer</button>
               <button class="btn btn-success addmore" type="button">+ Ajouter</button>
            </div>
            <div class='col-xs-12 col-sm-offset-4 col-md-offset-4 col-lg-offset-4 col-sm-5 col-md-5 col-lg-5'>
            <form class="form-inline">
               <div class="form-group">
                  <label>Sous Total: &nbsp;</label>
                  <div class="input-group">
                     <div class="input-group-addon">€</div>
                     <input type="number" class="form-control" id="subTotal" placeholder="Sous Total" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                  </div>
               </div>
               <div class="form-group">
                  <label>TVA: &nbsp;</label>
                  <div class="input-group">
                     <div class="input-group-addon">%</div>
                     <input type="number" class="form-control" id="tax" placeholder="TVA" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                  </div>
               </div>
               <div class="form-group">
                  <label>Montant TVA: &nbsp;</label>
                  <div class="input-group">
                     <input type="number" class="form-control" id="taxAmount" placeholder="TVA" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                     <div class="input-group-addon">€</div>
                  </div>
               </div>
               <div class="form-group">
                  <label>Total: &nbsp;</label>
                  <div class="input-group">
                     <div class="input-group-addon">€</div>
                     <input type="number" class="form-control" name="totalAftertax" id="totalAftertax" placeholder="Total" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                  </div>
               </div>
               <div class="form-group">
                  <label>Paiement: &nbsp;</label>
                  <div class="input-group">
                     <div class="input-group-addon">€</div>
                     <input type="number" class="form-control" name="amountPaid" id="amountPaid" placeholder="Paiement" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                  </div>
               </div>
               <div class="form-group">
                  <label>Solde: &nbsp;</label>
                  <div class="input-group">
                     <div class="input-group-addon">€</div>
                     <input type="number" class="form-control amountDue" name="amountDue"id="amountDue" placeholder="Solde" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;">
                  </div>
               </div>
            
         </div>
         </div>      
                              
</div>
....


Je récupère bien dans ma boucle tous les produits inscrit dans le formulaire, mais lorsque j'insère dans ma BDD je n'ai que le premier produit et pas les autres lignes

Code: Tout sélectionner
<?php
require 'db_conn.php';
page_protect();
$p_id=$_POST['p_id'];
$pic_add="../images/$p_id.jpg";
mysqli_query($con,"INSERT INTO user_data (newid,wait) VALUES ('$p_id','yes')");
if (isset($_POST['p_name']) && isset($_POST['itemNo']) && isset($_POST['total']) && isset($_POST['totalAftertax']))
{
function getRandomWord($len = 3) {
    $word = array_merge(range('a', 'z'), range('0', '9'));
    shuffle($word);
    return substr(implode($word), 0, $len);
}
$mem_types=$_POST['itemNo'];
foreach ($mem_types as $key => $value) {
$mem_type=$value;


$query1 = "select * from mem_types WHERE mem_type_id='$mem_type'";

//echo $query;
$result1 = mysqli_query($con,$query1);

    if(mysqli_affected_rows($con)==1){
          while($row1 = mysqli_fetch_array($result1,MYSQLI_ASSOC)){

$name_type=$row1['name'];
$details=$row1['details'];
$days=$row1['days'];
}

    }
   }
   $query2 = "select * from tbl_users ";

//echo $query;
$result2 = mysqli_query($con,$query2);

    if(mysqli_affected_rows($con)==1){
          while($row2 = mysqli_fetch_array($result2,MYSQLI_ASSOC)){

$userName=$row2['userName'];
$userProfession=$row2['userProfession'];
$userPic=$row2['userPic'];
$adss=$row2['adss'];
$cpss=$row2['cpss'];
$vilss=$row2['vilss'];
$css=$row2['css'];
$ess=$row2['ess'];
$adc=$row2['adc'];
$cpc=$row2['cpc'];
$vilc=$row2['vilc'];
$ncun=$row2['ncun'];
$nsiret=$row2['nsiret'];
$npref=$row2['npref'];
$rcr=$row2['rcr'];
$cond=$row2['cond'];




    }
   }

$proof=$_POST['proof'];
if (isset($_POST['other_proof']))
{
$other_proof=$_POST['other_proof'];
}
else
{
$other_proof=" ";
}
$invoice=substr(time(),2,10). getRandomWord();
$date=$_POST['date'];
$date=date_back($date);
$full_name=rtrim($_POST['p_name']);
$email=rtrim($_POST['email']);
$address=rtrim($_POST['add']);
$contact=rtrim($_POST['contact']);
$sex=rtrim($_POST['sex']);
$height=rtrim($_POST['height']);
$weight=rtrim($_POST['weight']);
$total=$_POST['totalAftertax'];
$paid=$_POST['paid'];
$mod_date = strtotime($date."+ $days days");
$expiry=date("Y-m-d",$mod_date);
$wait="no";
$time=$days*86400;

$exp_time=$time+strtotime($date);
$na=$_POST['na'];
$ddn=$_POST['ddn'];
$ddn=date_back($ddn);
$o=$_POST['o'];
$m=$_POST['m'];
$query = "select * from user_data WHERE wait='yes'";

//echo $query;
$result = mysqli_query($con,$query);

    if(mysqli_affected_rows($con)==1){
          while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){

$p_id=$row['newid'];

mysqli_query($con,"UPDATE user_data SET name='$full_name', address='$address', pic_add='$pic_add',contact='$contact', email='$email', height='$height', weight='$weight', joining='$date', proof='$proof', other_proof='$other_proof', sex='$sex' , na='$na' , ddn='$ddn', o='$o' WHERE wait='yes'");
$bal=$total-$paid;

mysqli_query($con,"INSERT INTO subsciption (mem_id,name,sub_type,paid_date,total,paid,expiry,invoice,sub_type_name,bal,exp_time,renewal,m,statut)
VALUES ('$p_id','$full_name','$mem_type','$date','$total','$paid','$expiry','$invoice','$name_type','$bal','$exp_time','yes','$m','$proof')");
echo "<head><script>alert('Client Enregistré ,');</script></head></html>";

mysqli_query($con,"UPDATE user_data SET wait='no' WHERE wait='yes'");
    }
   }
   

}
else
{
   mysqli_query($con,"UPDATE user_data SET wait='no' WHERE wait='yes'");
echo "<head><script>alert('Erreur lors de l'enregistrement, remplir tous les champs);</script></head></html>";
echo "<meta http-equiv='refresh' content='0; url=new_entry.php'>";

}
?>



Merci pour votre aide

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2109
Inscription: 06 Sep 2008, 22:05

Re: problème de boucle foreach

Messagede Galdon » 12 Nov 2016, 19:35

Est-ce que tu pourrais fourni un exemple de submit de formulaire (un print_r($_POST);) pour voir à quoi ressemblent les données ?

Edit : ok je retire ma question, j'avais pas vu l'autre topic : topic3319.html#p9030
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol


Retourner vers PHP/MySQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités