J'ai crée deux pages de code panier.php et lien_panier.php:
<?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>
<?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