IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récuperation de plusieurs valeurs $_POST, dans array, puis insertion dans BDD (M.V.C)


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Récuperation de plusieurs valeurs $_POST, dans array, puis insertion dans BDD (M.V.C)
    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 :
    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>";
    ?>
    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
    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 );
    	}
    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
    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'est pas encore faite. (mais ce n'ai pas le soucis ici)


    Merci à vous

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    dans le contrôleur, essaye quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (    isset($_POST['action']) 
        &&  ($_POST['action'] === 'Save')
        &&  isset($_POST['idproduit'])
    ) {
     
        foreach ($_POST['idproduit'] as $index => $idProduit) {
            inser_PANNIERs($idProduit
                , $_POST['prixproduit'][$index]
                , $_POST['pxligne'][$index]
                , $_POST['qte'][$index]
            );
        }
     
    }

Discussions similaires

  1. [Oracle] Découpage d'un fichier .txt puis insertion dans base mysql
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/08/2016, 12h52
  2. Réponses: 1
    Dernier message: 28/03/2014, 10h31
  3. Réponses: 6
    Dernier message: 01/02/2013, 13h37
  4. [MySQL] Array et insert dans mysql
    Par yamatoshi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/12/2009, 18h54
  5. Réponses: 1
    Dernier message: 16/10/2008, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo