8722 sujets

Développement web côté serveur, CMS

Bonjour à 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 :

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>";
 
?

CONTROLEUR :

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

MODELE :

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


Sachant que ma requête pour que j'insère plusieurs données dans un même champ n'ai pas encore faite. (pas le sujet du post)


Merci à vous
Modifié par yser01 (23 May 2015 - 15:02)
Modérateur
Salut,

Est ce que tu peux être un peu plus explicite ? Car j'ai dû mal à te lire. S'il te plait, fait attention à ton orthographe.

Sinon pour ton souci, tant que Madame Michu ne commande pas, je ne vois pas l'intérêt d'utiliser une table pour ça. Un panier se gère avec les sessions.
Modifié par niuxe (25 May 2015 - 17:39)