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 :

Comment implémenter l'ajout au panier ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2018
    Messages : 21
    Par défaut Comment implémenter l'ajout au panier ?
    Bonjour , je suis débutant en php , je souhaite créer une page qui doit lister les produits et leur prix et permettre de les ajouter au panier. Le panier liste les produits
    sélectionnés et affiche le montant total.

    voici mon code de la page produit.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
    <!DOCTYPE html>
    <html>
    <body>
     
    	<div>
    		<?php
     
    		$mysqli = new mysqli('localhost', 'root', '', 'projet_produits');
     
    		$result = $mysqli->query('SELECT produit_Id, produit_Nom, produit_Prix FROM Produits');
     
    		while ($row = $result->fetch_array())
    {
    $produit_Id = $row['produit_Id'] ;
    $produit_Nom = $row['produit_Nom'];
    $produit_Prix = $row['produit_Prix'];
    $produits[$produit_Id] = $produit_Nom.'<br>'.$produit_Prix;
    }
     
    		?>
    	</div>
     
    			<ul>
     
    			<?php foreach($produits as $id => $produit) : ?>
    			<a href="panier.php">Ajouter au panier</a>
    			<li><?php echo $produit ?> </li> <br>
     
    			<?php endforeach ?>
    			</ul>
    		<a href="panier.php">Panier</a>
    		<?php
    		$result->free();
    		$mysqli->close();
    		?>
     
    </body>
    </html>
    Pour l'ajout du panier je ne sais pas comment je dois procéder

  2. #2
    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
    Il va te falloir un script spécifique pour ajouter un élément dans ton panier. Peut-on voir le script panier.php ?
    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]

  3. #3
    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
    Par défaut
    Un exemple :
    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
    <?php
    session_start();
    if (isset($_GET['ajouter'])) {
    	$_SESSION['panier'][] = (int)$_GET['ajouter'];
    }
    ?>
    <!DOCTYPE html>
    <html>
    <body>
    <?php
     
    $mysqli = new mysqli('localhost', 'root', '', 'projet_produits');
     
    $result = $mysqli->query('SELECT produit_Id, produit_Nom, produit_Prix FROM Produits');
     
    while ($row = $result->fetch_array())
    {
    $produit_Id = $row['produit_Id'] ;
    $produit_Nom = $row['produit_Nom'];
    $produit_Prix = $row['produit_Prix'];
    $produits[$produit_Id] = $produit_Nom.'<br>'.$produit_Prix;
    }
    ?><h2>Panier</h2><?php
    if (isset($_SESSION['panier'])) {
    	foreach ($_SESSION['panier'] as $produit_id) {
    		echo $produits[$produit_id] . '<br/>';
    	}
    }
    ?>
    <ul>
    	<?php foreach($produits as $produit_id => $produit) : ?>
    	<a href="panier.php=ajouter=<?php echo $produit_id; ?>">Ajouter au panier</a>
    	<li><?php echo $produit ?> </li> <br>
     
    	<?php endforeach ?>
    </ul>
    <body>
    </html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2018
    Messages : 21
    Par défaut
    J'ai crée deux pages de code panier.php et lien_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
    107
    108
    109
    110
    111
    <?php
     
    session_start();
    include_once("lien_panier.php");
     
    $erreur = false;
     
    $action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
    if($action !== null)
    {
       if(!in_array($action,array('ajout', 'suppression', 'refresh')))
       $erreur=true;
     
       $produit_Id = (isset($_GET['produit_Id'])? $_GET['produit_Id']:null) ;
       $produit_Prix = (isset($_GET['produit_Prix'])? $_GET['produit_Prix']:null) ;
       $produit_Quantite = (isset($_GET['produit_Quantite'])? $_GET['produit_Quantite']:null) ;
     
       $produit_Id = preg_replace('#\v#', '',$produit_Id);
     
       $produit_Prix = floatval($produit_Prix);
     
       if (is_array($produit_Quantite)){
          $QteArticle = array();
          $i=0;
          foreach ($q as $contenu){
             $QteArticle[$i++] = intval($contenu);
          }
       }
       else
       $produit_Quantite = intval($produit_Quantite);
     
    }
     
    if (!$erreur){
       switch($action){
          Case "ajout":
             ajouterArticle($produit_Id,$produit_Quantite,$produit_Prix);
             break;
     
          Case "suppression":
             supprimerArticle($produit_Id);
             break;
     
          Case "refresh" :
             for ($i = 0 ; $i < count($QteArticle) ; $i++)
             {
                modifierQTeArticle($_SESSION['panier']['produit_Id'][$i],round($QteArticle[$i]));
             }
             break;
     
          Default:
             break;
       }
    }
     
    echo '<?xml version="1.0" encoding="utf-8"?>';?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>Votre panier</title>
    </head>
    <body>
     
    <form method="post" action="panier.php">
    <table style="width: 400px">
    	<tr>
    		<td colspan="4">Votre panier</td>
    	</tr>
    	<tr>
    		<td>Référence</td>
    		<td>Quantité</td>
    		<td>Prix Unitaire</td>
    		<td>Action</td>
    	</tr>
     
     
    	<?php
    	if (creationPanier())
    	{
    	   $nbArticles=count($_SESSION['panier']['produit_Id']);
    	   if ($nbArticles <= 0)
    	   echo "<tr><td>Votre panier est vide </ td></tr>";
    	   else
    	   {
    	      for ($i=0 ;$i < $nbArticles ; $i++)
    	      {
    	         echo "<tr>";
    	         echo "<td>".htmlspecialchars($_SESSION['panier']['produit_Id'][$i])."</ td>";
    	         echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['produit_Quantite'][$i])."\"/></td>";
    	         echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
    	         echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['produit_Id'][$i]))."\">XX</a></td>";
    	         echo "</tr>";
    	      }
     
    	      echo "<tr><td colspan=\"2\"> </td>";
    	      echo "<td colspan=\"2\">";
    	      echo "Total : ".MontantGlobal();
    	      echo "</td></tr>";
     
    	      echo "<tr><td colspan=\"4\">";
    	      echo "<input type=\"submit\" value=\"Rafraichir\"/>";
    	      echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
     
    	      echo "</td></tr>";
    	   }
    	}
    	?>
    </table>
    </form>
    </body>
    </html>
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
     
    function creationPanier(){
       if (!isset($_SESSION['panier'])){
          $_SESSION['panier']=array();
          $_SESSION['panier']['produit_Id'] = array();
          $_SESSION['panier']['produit_Quantite'] = array();
          $_SESSION['panier']['produit_Prix'] = array();
          $_SESSION['panier']['verrou'] = false;
       }
       return true;
    }
     
    function ajouterArticle($produit_Id,$produit_Quantite,$produit_Prix){
     
       if (creationPanier() && !isVerrouille())
       {
          $positionProduit = array_search($produit_Id,  $_SESSION['panier']['produit_Id']);
     
          if ($positionProduit !== false)
          {
             $_SESSION['panier']['produit_Quantite'][$positionProduit] += $produit_Quantite ;
          }
          else
          {
             //Sinon on ajoute le produit
             array_push( $_SESSION['panier']['produit_Quantite'],$produit_Quantite);
             array_push( $_SESSION['panier']['produit_Quantite'],$produit_Quantite);
             array_push( $_SESSION['panier']['produit_Prix'],$produit_Prix);
          }
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    function modifierQTeArticle($produit_Quantite,$produit_Quantite){
       //Si le panier éxiste
       if (creationPanier() && !isVerrouille())
       {
          //Si la quantité est positive on modifie sinon on supprime l'article
          if ($produit_Quantite > 0)
          {
             //Recharche du produit dans le panier
             $positionProduit = array_search($produit_Id,  $_SESSION['panier']['produit_Id']);
     
             if ($positionProduit !== false)
             {
                $_SESSION['panier']['produit_Quantite'][$positionProduit] = $produit_Quantite ;
             }
          }
          else
          supprimerArticle($produit_Id);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    function supprimerArticle($produit_Id){
     
       if (creationPanier() && !isVerrouille())
       {
          //Nous allons passer par un panier temporaire
          $tmp=array();
          $tmp['produit_Id'] = array();
          $tmp['produit_Quantite'] = array();
          $tmp['produit_Prix'] = array();
          $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
          for($i = 0; $i < count($_SESSION['panier']['produit_Id']); $i++)
          {
             if ($_SESSION['panier']['produit_Id'][$i] !== $produit_Id)
             {
                array_push( $tmp['produit_Id'],$_SESSION['panier']['produit_Id'][$i]);
                array_push( $tmp['produit_Quantite'],$_SESSION['panier']['produit_Quantite'][$i]);
                array_push( $tmp['produit_Prix'],$_SESSION['panier']['produit_Prix'][$i]);
             }
     
          }
     
          $_SESSION['panier'] =  $tmp;
     
          unset($tmp);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    function MontantGlobal(){
       $total=0;
       for($i = 0; $i < count($_SESSION['panier']['produit_Id']); $i++)
       {
          $total += $_SESSION['panier']['produit_Quantite'][$i] * $_SESSION['panier']['produit_Prix'][$i];
       }
       return $total;
    }
     
    function supprimePanier(){
       unset($_SESSION['panier']);
    }
     
    function isVerrouille(){
       if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
       return true;
       else
       return false;
    }
     
    function compterArticles()
    {
       if (isset($_SESSION['panier']))
       return count($_SESSION['panier']['produit_Id']);
       else
       return 0;
     
    }
     
    ?>
    Dans panier.php j' ai ce message d'erreur qui s'affiche : Undefined index: produit_Id

  5. #5
    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
    Par défaut
    sur quelle ligne ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2018
    Messages : 21
    Par défaut
    J'ai enlever le point d'exclamation à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (!isset($_SESSION['panier'])){
    du coup le message d'erreur ne s'affiche plus mais maintenant quand je vais dans la page produit et que j'appuie ça m'envoie à la page panier.php où il y a écrit référence , quantité prix unitaire, action mais ma sélection ne s'affiche pas et j'ai votre panier est vide.

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    la variable produit_id n'est pas définie

    if (creationPanier())
    {
    ta function return toujours true

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/01/2010, 19h32
  2. Comment implémenter lemonldap?
    Par Aldo dans le forum Apache
    Réponses: 7
    Dernier message: 25/01/2007, 21h32
  3. Réponses: 2
    Dernier message: 02/12/2005, 17h22
  4. comment lister les ajouts/suppression ?
    Par debdev dans le forum Access
    Réponses: 4
    Dernier message: 21/11/2005, 15h23
  5. Comment implémenter un Datawarehouse ?
    Par raslain dans le forum Alimentation
    Réponses: 2
    Dernier message: 20/10/2005, 11h09

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