A voir également:
- Sauvegarde d'un panier pendant plusieurs jours
- Logiciel de sauvegarde gratuit - Guide
- Compte facebook suspendu 180 jours - Guide
- Compte instagram suspendu 180 jours - Guide
- Sauvegarde facile - Télécharger - Sauvegarde
- Nombre de jours entre deux dates excel - Guide
4 réponses
bonjour,
en principe, ni l'un ni l'autre, il faut mémoriser dans une base de données (ou dans un fichier).
en principe, ni l'un ni l'autre, il faut mémoriser dans une base de données (ou dans un fichier).
Bonsoir
Mais est ce que l'on peux modifié la durée d'une session car mon panier n'est pas enregistré dans une bdd pour le moment.
Il fais juste parti d'une session dans ma page.
j'ai suivi ce tuto sur le net par contre il n'y a aucun enregistrement et je voudrais que mes éléments reste dans mon panier.
voici mes deux codes
mon panier
et mon code fonctions panier
Mais est ce que l'on peux modifié la durée d'une session car mon panier n'est pas enregistré dans une bdd pour le moment.
Il fais juste parti d'une session dans ma page.
j'ai suivi ce tuto sur le net par contre il n'y a aucun enregistrement et je voudrais que mes éléments reste dans mon panier.
voici mes deux codes
mon panier
<?php require('inc_connect.php'); ?>
<?php require('inc_user.php'); ?>
<?php
setcookie("panier", "Guru99", time() - 360,'/');
Print_r ('$panier');?>
<?php
session_start();
include_once("fonctions-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;
//récuperation 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 verifie que $p soit un float
$p = floatval($p);
//On traite $q qui peut etre un entier simple ou un tableau d'entier
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']['libelleProduit'][$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>Libellé</td>
<td>Quantité</td>
<td>Prix Unitaire</td>
<td>Action</td>
</tr>
<li><a href="liste.php">Mon panier</a></li><br>
<?php
if (creationPanier())
{
$nbArticles=count($_SESSION['panier']['libelleProduit']);
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']['libelleProduit'][$i])."</ td>";
echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i]) . " €</td>";
echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$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>
et mon code fonctions panier
<?php
function creationPanier(){
if (!isset($_SESSION['panier'])){
$_SESSION['panier']=array();
$_SESSION['panier']['libelleProduit'] = array();
$_SESSION['panier']['qteProduit'] = array();
$_SESSION['panier']['prixProduit'] = array();
$_SESSION['panier']['verrou'] = false;
}
return true;
}
function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
if (creationPanier() && !isVerrouille())
{
$positionProduit = array_search($libelleProduit, $_SESSION['panier']['libelleProduit']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
}
else
{
//Sinon on ajoute le produit
array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
}
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
function modifierQTeArticle($libelleProduit,$qteProduit){
if (creationPanier() && !isVerrouille())
{
if ($qteProduit > 0)
{
$positionProduit = array_search($libelleProduit, $_SESSION['panier']['libelleProduit']);
if ($positionProduit !== false)
{
$_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
}
}
else
supprimerArticle($libelleProduit);
}
else
echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
function supprimerArticle($libelleProduit){
if (creationPanier() && !isVerrouille())
{
$tmp=array();
$tmp['libelleProduit'] = array();
$tmp['qteProduit'] = array();
$tmp['prixProduit'] = array();
$tmp['verrou'] = $_SESSION['panier']['verrou'];
for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
{
if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
{
array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$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']['libelleProduit']); $i++)
{
$total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$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']['libelleProduit']);
else
return 0;
}
?>
Non, c'est juste que je ne vois pas trop comment faire pour mémoriser la date sans utiliser de cookies?
en fait, dans la demande qui a été faite.
je dois imperativement sauvegarder mon panier dans un cookie.
mais je suis un peu perdu car je ne sais pas si il faut que l'insère dans mon code du panier pour qu'il réapparaisse ou le mettre dans un fichier a part en include??
je dois imperativement sauvegarder mon panier dans un cookie.
mais je suis un peu perdu car je ne sais pas si il faut que l'insère dans mon code du panier pour qu'il réapparaisse ou le mettre dans un fichier a part en include??