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 :

FOREACH ARRAY et enregistrement en BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut FOREACH ARRAY et enregistrement en BDD
    Bonjour ou bonsoir à tous,

    Je suis sur un panier et j'affiche les produits ajoutés au panier dans mon panier.php


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <form method="post" action="recap.php" enctype="multipart/form-data">
     
          <p class="entete">
            <span class="col_0"></span>
            <span class="col_01">Nom</span>
            <span class="col_1">Format</span>
            <span class="col_2">Prix</span>
            <span class="col_3">Quantité</span>
            <span class="col_4">Prix total</span>
            <span class="col_5">Supprimer</span>
          </p>
     
     
    <?php
    			$ids = array_keys($_SESSION['panier']);
    			if(empty($ids)){
    				$products = array();
    			}else{
    				$products = $DB->query('SELECT * FROM images WHERE id IN ('.implode(',',$ids).')');
    			}
    			foreach($products as $product):
    			?>
     
     
          <p class="ligne">
     
    	<span class="col_0">
    	<a href="#" class="img"> <img src="administration/images/<?= print $album; ?>/<?= $product->thumbnail_image; ?>" height="53"></a>
    	</span>
     
     
     
    	<span class="col_01 info-nom"><?= $product->normal_name; ?></span>
     
     
            <span class="col_1">
              <select name="prix[<?= $product->id; ?>]">
    		<?php $formats = $DB->query("SELECT * FROM produits"); ?>
    		<?php foreach ( $formats as $format ): ?>
     
    		<option value="<?= $format->prix; ?>"><?= $format->format_name; ?></option>
     
     
    		<?php endforeach ?>
              </select>
            </span>
     
            <span class="col_2 info-prix"></span>
     
            <span class="col_3">
    		<button  type="button" class="btn_moins">-</button>
    		<input type="text" name="quantite[<?= $product->id; ?>]">
    		<button type="button" class="btn_plus">+</button>
            </span>
            <span class="col_4 total-ligne"></span>
     
     
    	<span class="col_5">
    	<a href="panier.php?delPanier=<?= $product->id; ?>" class="del"><img src="panier/img/del.png" title="Supprimer l'élément" alt ="supprimer l'élément"></a>
    	</span>
     
     
          </p>
     
     
     
    	<?php endforeach; ?>
     
     
     
          <p class="totaux">
            <span></span>
            <span></span> 	    
            <span></span>
            <span></span>
            <span>
    <input type="text" value ="<?php print $_SESSION['identifiantv'];?>" name="identifiantv" id="identifiantv">
    <input type="text" id="idalbum" name="idalbum" value="<?php print $album;?>">
     
     
    </span>
            <span class="text-right">Total HT :</span>
            <span id="totalht" class="text-right"></span>
     
          </p>      
    	<p class="totaux">
            <span></span>
            <span></span> 	    
            <span></span>
            <span></span>
            <span></span>
            <span class="text-right">Tva :</span>
            <span id="tva" class="text-right"></span>
          </p>
          <p class="totaux">
            <span></span>
            <span></span> 	    
            <span></span>
            <span></span>
            <span></span>
            <span class="text-right">Total TTC :</span>
            <span id="total" class="text-right"></span>
          </p>
    <input type="submit" value="continuer">
    </form>
    Seulement j'aimerai enregistrer tout ces produits en BDD. Et là je bloque.
    Si je fais un
    print_r($_POST);
    cela me renvoie :
    Array ( [prix] => Array ( [11] => 3.9 [13] => 3.9 [20] => 3.9 ) [quantite] => Array ( [11] => 5 [13] => 2 [20] => 4 ) [identifiantv] => 57225da1d7df7 [idalbum] => test )
    Ma page recap.php
    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
     
    <?php 
    $album=$_SESSION['login'];
     ?>
     
    <input type="text" value ="<?php print $_POST['identifiantv'];?>" name="identifiantv" id="identifiantv">
    <input type="text" id="idalbum" name="idalbum" value="<?php print $_POST['idalbum'];?>">
    <?
    // on teste la déclaration de nos variables
    if (isset($_POST['quantite[]']) && isset($_POST['prix[]'])) {
    	// on affiche nos résultats
    		echo 'Vos quantités '.$_POST['quantite[]'].' et vos prix '.$_POST['prix[]'];
    }
     
    else { echo 'erreur qq part...' ;}
    ?>
     
    <?php print $_POST['quantite[]']; ?>
     
     
     
    <?php
    print_r($_POST);
    ?>
    J'aimerai enregistrer tout ces produits en BDD et les afficher dans ma page recap.php

    Je ne souhaite pas forcément une réponse toute faite (quoique) mais j'aimerai surtout comprendre le raisonnement.
    Comment puis-je m'y prendre ?

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu parcoures un des deux tableau et tu utilises la clef pour lire la valeur correspondante dans l'autre tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_POST['quantite'], $_POST['prix']) {
    	foreach ($_POST['quantite'] as $key=>$values) {
    		echo 'quantité '.$_POST['quantite'][$key].' prix '. $_POST['prix'][$key];
            }
    }
    Attention si on parle d'un panier d'achat, ça ne doit pas être le client qui envoi les prix par POST, sinon il va t'envoyer des formulaires avec 0€
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    C'est à dire tu me préconiserais plutôt les SESSION ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La quantité est définie par le client, donc elle provient d'un formulaire, pas de soucis.
    Le prix c'est toi qui le défini donc soit tu le lis dans la base de données quand tu en as besoin, soit tu peux le mettre en session (ça garantie que le prix final est bien celui au moment de la mise au panier en cas de changement de prix).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    D'accord, je vois l'idée. Je vais tester ça !
    Pendant que je te tiens. Pour enregistrer les résultats de mon FOREACH en BDD, j'utilise le même principe que pour l'affichage mais avec un INSERT TO ?
    C'est bien ça ?

    Un grand merci pour ton travail SABOTAGE !

    Cdt,
    Ruddy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.1] Parcourir array de array pour enregistrement BDD
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2009, 13h59
  2. Création d'enregistrement dans bdd
    Par fiatt dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/01/2008, 10h06
  3. Réponses: 60
    Dernier message: 23/08/2007, 09h45
  4. enregistrement dans BDD
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2007, 12h07
  5. [VB.NET] Enregistrer une BDD sous un autre format
    Par botanique dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/01/2006, 14h42

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