Bonsoir à vous,
je suis confronté à un problème de logique, j'ai beau tourner le problème dans tous les sens, je n'arrive pas à résoudre mon problème :
Je m'explique : je fais un site e-commerce (en local) en M.V.C (qui devrait être orienté objet mais j'utilise plutôt ce procédé pour structuré mon code):
Donc j'ai dans ma vue :
un formulaire avec mon panier qui récupère l'id du produit, la quantité, le prix par ligne et le prix total dans une boucle, je souhaite sauvegarder ce panier et lorsque je clique sur "Save", cela me récupère les données de la boucle et que sa me les affiche dans une nouvelle boucle puis que sa me les inserts dans ma table "panier" ; j'arrive à récupérer mes données de ma 1er boucle (dans ma vue), dans une nouvelle boucle (tableau array) (dans mon contrôleur) mais là où je bloque c'est insérer les données de mon array (contrôleur) dans ma table grâce à ma fonction insérerpanier(): j'ai essayer de mettre les boucles l'une dans l'autre, de les séparer et de mettre un paramètre à chaque foi dans ma fonction, soit j'ai des doublons soit rien.
Voici mon code de mes trois fichiers :
VUE :
CONTROLEUR :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 while($data=mysql_fetch_array($req) ){ $nom=$data['LibelleProduit']; $prix=$data['PritUTTC']; $pxligne=$prix*$cde; $tot+=$pxligne; $id = $data['NumProduit']; echo"<tr><td>$nom</td><td>$prix </td><td>$cde</td><td align='right'>".number_format($pxligne, 2,'.',' ')."</td>"; echo "<td> <div class='switch demo1'><input type='checkbox' name='case[]' value='".$id."'><label></label></div></td>"; //id du produit echo "<td><input type='hidden' name='idproduit[]' value='".$id."' /></td></tr>"; //prix du produit echo "<td><input type='hidden' name='prixproduit[]' value='".$prix."' /></td></tr>"; //prix pour la ligne de commande echo "<td><input type='hidden' name='pxligne[]' value='".$pxligne."' /></td></tr>"; //Quantité echo "<td><input type='hidden' name='qte[]' value='".$cde."' /></td></tr>"; } } echo"<tr><td colspan='3' align='right'>TOTAL DE VOTRE PANIER </td><td align='right'>".number_format($tot, 2,'.',' ')." TTC</td></tr>"; echo "<td><input type='hidden' name='tot' value='".$tot."' /></td></tr>"; mysql_close(); echo "<tr> <td colspan='5' align='right'> <input type='submit' name='action' value='Eliminer'><div class='print6'></div></input> <input type='submit' name='action' value='Changer'><div class='print7'></div></input> <input type='submit' name='action' value='Save'><div class='print7'></div></input> </td> </tr> </table> </form>"; ?>
MODELE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 //sauver panier if(isset($_POST['action']) and $_POST['action']=='Save'){ $tot = $_POST['tot']; for ($i=0; $i<count($_POST['idproduit']); $i++){ // Si il y a quelque chose dans produit, récuperation de tous les idproduit if (isset($_POST['idproduit']) ){ foreach ($_POST['idproduit'] as $pro){ echo $pro; echo "<br>"; } } // Si il y a quelque chose dans produit, récuperation de tous les prixproduit if (isset($_POST['prixproduit']) ){ foreach ($_POST['prixproduit'] as $prix){ echo $prix; echo "<br>"; } } // Si il y a quelque chose dans produit, récuperation du montant par quantité choisir if (isset($_POST['pxligne']) ){ foreach ($_POST['pxligne'] as $prixl){ } } // Si il y a quelque chose dans produit, récuperation quantité if (isset($_POST['qte']) ){ foreach ($_POST['qte'] as $qtep){ echo $qtep; echo "<br>"; } } inser_PANNIERs ($pro, $prix,$prixl,$qtep ); }
Sachant que ma requête pour que j'insère plusieurs données dans un même champ n'est pas encore faite. (mais ce n'ai pas le soucis ici)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function inser_PANNIERs ($pro, $prix,$prixl,$qtep ){ echo $pro; echo "<br>"; echo $prix; echo "<br>"; echo $prixl; echo "<br>"; echo $qtep; echo "<br>"; $DateHeure= date("Y-m-d H:i:s"); $PANNIERs = array (); $req = mysql_query("INSERT INTO panier (DatePanier,PrixTotal) VALUES ('$DateHeure',$tot)"); return $req; }
Merci à vous
Partager