Bonsoir,
Sur panier.php
ligne 92, tu remets le panier à zéro
ligne 93 tu fais un count sur une valeur que tu viens de remettre à zéro...
Que donne un var_dump($_SESSION['panier'])); ?
Bonjour,
Voila je rencontre un petit problème avec mon code pour afficher mes articles dans mon panier.
Je vous mets le code de panier.php :
<?php
include('includes/header.php');
require("includes/fonction_panier.php");
?>
<br><br>
<?php
var_dump(creationPanier());
$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;
//récupération des variables en POST ou GET
$l = (isset($_POST['l'])? $_POST['l']: (isset($_GET['l'])? $_GET['l']:null )) ;
$p = (isset($_POST['p'])? $_POST['p']: (isset($_GET['p'])? $_GET['p']:null )) ;
$q = (isset($_POST['q'])? $_POST['q']: (isset($_GET['q'])? $_GET['q']:null )) ;
//Suppression des espaces verticaux
$l = preg_replace('#\v#', '',$l);
//On vérifie que $p est un float
$p = floatval($p);
//On traite $q qui peut être un entier simple ou un tableau d'entiers
if (is_array($q)){
$QteArticle = array();
$i=0;
foreach ($q as $contenu){
$QteArticle[$i++] = intval($contenu);
}
}
else
$q = intval($q);
}
if (!$erreur){
switch($action){
Case "ajout":
ajouterArticle($l,$q,$p);
break;
Case "suppression":
supprimerArticle($l);
break;
Case "refresh" :
for ($i = 0 ; $i < count($QteArticle) ; $i++)
{
modifierQTeArticle($_SESSION['panier']['nom'][$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>Nom</td>
<td>Id</td>
<td>Référence</td>
<td>Quantité</td>
<td>Action</td>
</tr>
<?php
if (isset($_GET['deletepanier']) && $_GET['deletepanier']== true){
supprimePanier();
}
if (creationPanier())
{
$_SESSION['panier']['nom'] = array();
$nbArticles=count($_SESSION['panier']['nom']);
if ($nbArticles <= 0)
echo "<tr><td style='color: red'>Ooops,panier est vide </td></tr>";
else
{
for ($i=0 ;$i < $nbArticles ; $i++)
{
echo "<tr>";
echo "<td>".htmlspecialchars($_SESSION['panier']['nom'][$i])."</ td>";
echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qte'][$i])."\"/></td>";
echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['nom'][$i]))."\">X</a></td>";
echo "</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>
<br><br>
<?php
include_once("includes/footer.php");
?>
Et celui de fonction_panier.php :
<?php
function creationPanier(){
if (!isset($_SESSION['panier'])){
$_SESSION['panier']=array();
$_SESSION['panier']['nom'] = array();
$_SESSION['panier']['qte'] = array();
$_SESSION['panier']['id'] = array();
$_SESSION['panier']['verrou'] = false;
//$select = $bdd->query("SELECT TVA FROM produit");
//$data = $select->fetch(PDO::FETCH_OBJ);
}
return true;
}
function ajouterArticle($nom,$qte,$id){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Si le produit existe déjà on ajoute seulement la quantité
$positionProduit = array_search($nom, $_SESSION['panier']['nom']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qte'][$positionProduit] += $qte ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['panier']['nom'],$nom);
array_push( $_SESSION['panier']['qte'],$qte);
array_push( $_SESSION['panier']['id'],$id);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
function modifierQTeArticle($nom,$qte){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Si la quantité est positive on modifie sinon on supprime l'article
if ($qte > 0)
{
//Recharche du produit dans le panier
$positionProduit = array_search($nom, $_SESSION['panier']['nom']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qte'][$positionProduit] = $qte ;
}
}
else
supprimerArticle($nom);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
function supprimerArticle($nom){
//Si le panier existe
if (creationPanier() && !isVerrouille())
{
//Nous allons passer par un panier temporaire
$tmp=array();
$tmp['nom'] = array();
$tmp['qte'] = array();
$tmp['verrou'] = $_SESSION['panier']['verrou'];
for($i = 0; $i < count($_SESSION['panier']['nom']); $i++)
{
if ($_SESSION['panier']['nom'][$i] !== $nom)
{
array_push( $tmp['nom'],$_SESSION['panier']['nom'][$i]);
array_push( $tmp['qte'],$_SESSION['panier']['qte'][$i]);
}
}
//On remplace le panier en session par notre panier temporaire à jour
$_SESSION['panier'] = $tmp;
//On efface notre panier temporaire
unset($tmp);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
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']))
$panier=array();
else
$panier = $_SESSION['panier'];
}
?>
Pouvez-vous m'aider assez rapidement car c'est assez urgent cela fait 3-4 jours que je ne comprends pas mon erreur.
Bonsoir,
Sur panier.php
ligne 92, tu remets le panier à zéro
ligne 93 tu fais un count sur une valeur que tu viens de remettre à zéro...
Que donne un var_dump($_SESSION['panier'])); ?
Bonsoir,
Je viens d'enlever cette ligne et le var_dump donne ca :
C:\laragon\www\ecommerce\panier.php:9:
array (size=7)
'libelleProduit' =>
array (size=0)
empty
'qteProduit' =>
array (size=0)
empty
'prixProduit' =>
array (size=0)
empty
'verrou' => boolean false
'nom' =>
array (size=0)
empty
'qte' =>
array (size=1)
0 => int 5
'id' => null
le panier est bien vide
mais comme tu n'as pas mis de "value" sur ton formulaire d'ajout, rien n'est ajouté
(je sais cela car je te réponds sur OCC)
D'accord et comment je fais pour mettre une "value" sur le formulaire d'ajout ?