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 :

Organisation des boucles


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut Organisation des boucles
    Bonjour à tous.
    Je suis sur le point de finaliser ce petit programme de gestion d'un panier.
    Une page doit lister les produits et permettre de les ajouter au panier.
    Le panier liste les produits sélectionnés et affiche le montant total.
    Ce panier doit être sauvegarder durant 15 jours.
    la page index affiche mes articles. Je créer mon cookie (tableau + sérialisation)
    c'est au moment de l'affichage que j'ai un gros souci
    Je veut que si l'utilisateur clique sur le produit A (par exemple) celui ci s'ajoute autant de fois que l'utilisateur aura cliqué de fois dessus.
    et mon programme ne l'affiche qu'une seule fois.
    D’où mon appelle à l'aide.

    INDEX.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
     
     <?php require ('connexion.php'); ?>
     
     
    <h3>Nos produits :</h3>
     
    <!-- Le formulaire va récuperer les informations dans la base de donné et affiché toute les lignes possible sur deux colones -->
    <?php
    $result = $mysqli->query('SELECT produit_id, produit_nom, prix  FROM produits');
    while ($data = $result->fetch_array())
    {
    ?>
    <li><a href="cookie.php?id=<?php echo $data['produit_id'] ?>"><?php echo $data['produit_nom']?> <?php echo $data['prix'] ?>€</a></li>
    <?php echo"</tr>";
    }
    COOKIE.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
     
    <?php require('connexion.php'); ?>
    <?php 
     
       $cookie_achat = $_GET['id']; //recuperation de la variable externe
       if (!isset($_COOKIE['panier']))// si le cookie n'est pas renseigné
     
        {
    		echo "à creer si le cookie n'existe pas";
    		$tableau_panier[]= $cookie_achat;// création du tableau "$tableau_panier" sous forme de variable avec la valeur de $cookie_achat 
    		$tab_panier = serialize($tableau_panier) ; //serialisation du tableau sous 
    		setcookie ('panier', $tab_panier, time()+1296000);// le cookie "panier" prend la valeur $tab_panier, durée de vie 15 Jours 1296000)-->
     
    	} 
    else
    	{
    		echo "le cookie existe deja";
    		$tableau_panier = unserialize($_COOKIE['panier']);  // deserialisation du tablea
    		$tableau_panier[] = $cookie_achat; 	//ajout des nouvelles donées au anciennes dans le cookie
    		$tab_panier = serialize($tableau_panier) ; //serialisation du tableau sous 
    		setcookie ('panier', $tab_panier, time()+1296000);// le cookie "panier" prend la valeur $tab_panier, durée de vie 15 Jours 1296000)-->
    	}	
     
    foreach ($tableau_panier as $articles)
    {
    	     // Récupération des éléments nom et prix par filtrage sur l'ID 
    	    $result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id = '. $articles);
    	    while ($row = $result->fetch_array())
    	    $produits[$row['prix']] = $row['produit_nom'];//affiche qu'une fois
    }
    		$total_amount = 0; // initialisation de la variable de calcule
    		foreach ($produits as $prix => $select_nom):
    		$total_amount += $prix; // addition du prix coréspondant
     
    ?>
     
     
    <!-- Récupération des informations et affichage -->      
    	<table border="1">
    	<tr>  
    	<td width='180px' align=center>nom du produit</td>
    <?php echo"<td width='180px' align=center>".$select_nom."</td>"; ?>
     
    	<td width='80px' align=center>prix en € </td>
    <?php echo"<td width='80px' align=center>".$prix."</td>";?>
    	</tr>
    	</table>
     
    <p>
        <h3>Le montant total était de <?php echo $total_amount; ?> €</h3>
    </p>
    </div>
     
    <?php endforeach ?>
    AMicalement à tous.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    "Normalement" :
    • on ajoute une colonne "quantité", avec + et -
    • on donne aussi la possibilité de supprimer un produit du panier
    • on enregistre le panier en BDD (pas dans un cookie, qui peut être effacé)

  3. #3
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut reponse à jreau
    Bonjour.
    Merci de t'on attention.
    Souci c'est que ça fait partie du devoir.
    je ne dois utiliser la dbd que pour l'affichage des articles page index et le filtre avant affichage sur cookie.php.
    ça serrait pas drôle sinon.

    Merci encore

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	    $result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id = '. $articles);
    	    while ($row = $result->fetch_array())
    	    $produits[$row['prix']] = $row['produit_nom'];//affiche qu'une fois
    Non seulement ça n'affiche qu'une seule fois le produit, mais en plus si tu as plusieurs produits avec le même prix tu ne vas en afficher qu'un seul.

    Fait un tableau de produits à plusieurs dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id = '. $articles);
    while ($row = $result->fetch_array())
        $produits[] = ['nom' => $row['produit_nom'], 'prix' => $row['prix']];//une fois par produit
    Et ta boucle de lecture devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($produits as $key => $info_produits):
        $prix = $info_produits['prix'];
       // à toi de finir ;)
    Une version plus propre serait d'ajouter une information de quantité, pour ne pas rechercher/afficher plusieurs fois le même produit.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [Conception] - Organisation des pages pour une requete.
    Par ShinJava dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 24/10/2005, 15h33
  2. [GUI]Organisation des classes
    Par c-top dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 04/03/2005, 17h46
  3. Organisation des classes
    Par R3iTt0R dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2004, 17h27

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