Page 1 sur 1
Session et Panier
Posté : 26 janv. 2007, 19:44
par Photographiquement Vôtre
Bonsoir,
J'avais un panier avec une fonction ou je mettais l'id de l'objet et la quantité commandée ainsi que la quantité totale.
function ajout(&$produitid, $quantite)
{
/* Ajoute un article au caddie et met à jour le nombre de produits sélectionnés */
if (isset($produitid))
{
if (! isset($this->articles[$produitid]))
{
$this->articles[$produitid] = 'O';
}
$this->articles[$produitid] += $quantite;
}
}
Je voudrai maintenant rajouter une donnée supplémentaire (sous_code)
Comment faire
Merci d'avance
Posté : 26 janv. 2007, 19:52
par Truc
Salut,
Pour clarifier les choses faudrait décomposer en sous tableaux mais ça demandera peut être beacoup de modifs:
function ajout(&$produitid, $quantite, $sous_code)
{
if (isset($produitid))
{
if (! isset($this->articles[$produitid]))
{
$this->articles[$produitid]['qte'] = 0;
}
$this->articles[$produitid]['qte'] += $quantite;
$this->articles[$produitid]['sous_code'] = $sous_code;
}
}
sinon juste reprendre la ligne avec "$sous_code".
Pourquoi affecter "O" au lieu de "0" (zéro) si le produit n'est pas encore dans le panier ?
Posté : 26 janv. 2007, 20:19
par Photographiquement Vôtre
Merci.
Maintenant quand je veux compter les éléments avec la fonction suivantr :
function compte_elements() {
/* Renvoie le nombre d'articles dans le caddie */
$total = 0;
foreach ($this->articles as $produitid => $quantite) {
$total += $quantite;
}
return $total;
}
J'ai le message suivant :
Fatal error: Unsupported operand types in /var/www/html/virtualdomains/10560/cqfdprod.com/www/interfacemariage.cqfdprod.com/librairie/caddie_class.php on line 86
Ligne 86 : $total += $quantite;
Comment résoudre cela ?
Posté : 26 janv. 2007, 21:19
par Truc
C'est les modifs dont je parlais...
Regarde ce que vaut "$quantite"
<pre>
<?php var_dump($quantite); ?>
</pre>
Posté : 29 janv. 2007, 20:19
par Photographiquement Vôtre
Bonsoir,
Je me demande si je ne me suis pas embarqué sur une mauvaise piste en essayant d'adapter un panier simple que j'avais fait.
Ce que je veux faire :
J'ai des photos avec une ID et un code prix dans tblphotos.
J'ai une table tblprix avec un code prix, un code format et un code papier
Je voudrai mettre à jour mon pannier avecles données suivantes :
tbl_prixId / tblsouscode_format//tblsouscode_papier/quantité/prix
Que me conseilles tu
Merci d'avance
Posté : 30 janv. 2007, 01:07
par Truc
Changement de structure de BD = changements dans les scripts, pas le choix
Posté : 30 janv. 2007, 02:04
par Ultim4T0m
Peut-être que ce tuto pourra t'être utile si tu as tout à refaire :
http://jmolline.free.fr/tutos/tuto_panier.html
Posté : 30 janv. 2007, 10:16
par Photographiquement Vôtre
Merci à toi Ultim4T0m c'est vraiment ce que je recherchais
Posté : 30 janv. 2007, 12:08
par Photographiquement Vôtre
Rebonjour,
J'ai essayé de modifier le tuto pour mon cas particulier mais je bloque :
Je n'arrive pas à déterminer si un article dans un format existe pour mettre à jour la quantité (voir fonction ajout)
J'ai mis dans ma table prix un code qui correspond à un type de prix et un format
Merci de votre aide
<?php
session_start();
/* Initialisation du panier */
$_SESSION['panier'] = array();
/* Subdivision du panier */
$_SESSION['panier']['id'] = array();
$_SESSION['panier']['format'] = array();
$_SESSION['panier']['qte'] = array();
$id=($_POST["id"]);
$quantite=($_POST["qte"]);
$format=($_POST["format"]);
ajout_test($id,$format,$quantite);
/* Affichons maintenant le contenu du panier : */
?>
<pre>
<?php
var_dump($_SESSION['panier']);
?>
</pre>
<?php
function ajout_test($produitid,$souscode,$format,$quantite)
{
/* On initialise la variable de retour */
if( count($_SESSION['panier']['id']) > 0 && array_search($souscode,$_SESSION['panier']['souscode']) !== false )
{
echo "Déjà en stock";
$_SESSION['panier']['qte'] += $quantite;
}
else
{
echo "Pas en stock";
$_SESSION['panier']['id'] = $produitid;
$_SESSION['panier']['souscode'] = $souscode;
$_SESSION['panier']['format']= $format;
$_SESSION['panier']['qte']= $quantite;
}
return $_SESSION['panier']['qte'];
}
?>