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 :

Problème affichage 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 Problème affichage panier
    Bonjour, j'ai crée un panier et je n'arrive pas à afficher les articles dans ma page panier.php que j'ai ajouté j'ai ceci qui s'affiche : C:\wamp64\www\produit\lien_panier.php:35:
    array (size=4)
    'produit_Id' =>
    array (size=0)
    empty
    'produit_Quantite' =>
    array (size=2)
    0 => int 0
    1 => int 0
    'produit_Prix' =>
    array (size=1)
    0 => float 0
    'verrou' => boolean false
    Votre panier
    Référence Quantité Prix Unitaire Action
    Votre panier est vide

  2. #2
    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
    Voici ma 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
    39
    40
    <!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?action=ajout&amp;produit_Id=produit_ID&amp;produit_Quantite=produit_Quantite&amp;produitPrix=produit_Prix" onclick="window.open(this.href, '', 
    'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;">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>
    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    <?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
          {
     
             array_push( $_SESSION['panier']['produit_Quantite'],$produit_Quantite);
             array_push( $_SESSION['panier']['produit_Quantite'],$produit_Quantite);
             array_push( $_SESSION['panier']['produit_Prix'],$produit_Prix);
          }
    	  var_dump($_SESSION['panier']);
     
       }
       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;
     
    }
     
    ?>
    Et 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($_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],($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="get" 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>

  3. #3
    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
    cela signifie que la plupart des valeurs sont vides

  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
    Citation Envoyé par bonjourajax Voir le message
    cela signifie que la plupart des valeurs sont vides
    Pourtant ma base de donnée est remplie .

  5. #5
    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
    ecris le comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $result = $mysqli->query('SELECT produit_Id, produit_Nom, produit_Prix FROM Produits');
     
    		while ($row = $result->fetch_assoc()) {
                        var_dump($row);
    et copie ce que ca te retourne

  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
    ça me donne ceci : C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '1' (length=1)
    'produit_Nom' => string 'produit A' (length=9)
    'produit_Prix' => string '9 euros' (length=7)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '2' (length=1)
    'produit_Nom' => string 'produit B' (length=9)
    'produit_Prix' => string '19 euros' (length=8)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '3' (length=1)
    'produit_Nom' => string 'produit C' (length=9)
    'produit_Prix' => string '79 euros' (length=8)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '4' (length=1)
    'produit_Nom' => string 'produit D' (length=9)
    'produit_Prix' => string '5 euros' (length=7)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '5' (length=1)
    'produit_Nom' => string 'produit E' (length=9)
    'produit_Prix' => string '45 euros' (length=8)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '6' (length=1)
    'produit_Nom' => string 'produit F' (length=9)
    'produit_Prix' => string '29 euros' (length=8)

    C:\wamp64\www\produit\produit.php:13:
    array (size=3)
    'produit_Id' => string '7' (length=1)
    'produit_Nom' => string 'produit G' (length=9)
    'produit_Prix' => string '10 euros' (length=8)

    Ajouter au panier •produit A
    9 euros

    Ajouter au panier •produit B
    19 euros

    Ajouter au panier •produit C
    79 euros

    Ajouter au panier •produit D
    5 euros

    Ajouter au panier •produit E
    45 euros

    Ajouter au panier •produit F
    29 euros

    Ajouter au panier •produit G
    10 euros
    Panier

Discussions similaires

  1. Problème d'affichage panier incomplet vers Paypal
    Par wangi dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/05/2015, 06h26
  2. [PrestaShop] problème affichage photos et panier suite maj
    Par foffoi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 21/08/2014, 16h49
  3. Problème affichage primitive
    Par goutbouyo dans le forum DirectX
    Réponses: 4
    Dernier message: 29/12/2004, 18h25
  4. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

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