
bon je demande conseille pour mon caddie car je n’arrive pas gerer le cas ou l’on selectionne 2 fois de suite le meme produits ds des quantité differentes ou egales :heink:
Voila le resultat de mon caddie apres avoir selectionné un produit (=id) et sa quantité correspondante(qte).
Comme vous pouvez le voir, le produit id=2 a été selectionné une seconde fois et je cherche a additionner ce produit ds mon tableau.
Je suppose que array_search et foreach doivent etre utilisés mais je n’y arrive pas
.
[cpp]
Array
(
[0] => Array
(
[id] => 2
[qte] => 3
)
[1] => Array
(
[id] => 4
[qte] => 1
)
[2] => Array
(
[id] => 2
[qte] => 9
)
)
[/cpp]
Il faut que pour le meme produit il additionne les quantités :fou:
Le code correspondant au resultat si dessus cad celui de caddie.php.
[cpp]<?php
if ($_POST[‹ ajout ›] == « ajout »)
{
if (isset($_POST[‹ id ›]))
{
$_SESSION[‹ achats ›] = array(« id » => $_POST[‹ id ›], « qte » => $_POST[‹ quantite ›]);
echo '
';
print_r($_SESSION[‹ achats ›]);
echo '
';
}
}
?>
[/cpp]
et voici le code appliqué pour afficher les produits (articles.php).
Il affiche les produits selon la categorie choisie par l’utilisateur.(ca marche tres bien ca
).
[cpp] <?php
//On recupere l'Id de chaque produit
$queryID=mysql_query("select id, cat, ref, prix from galerie where Id='".$AfficheGalerie['id']."'");
$InfoProd=mysql_fetch_array($queryID);
?>
Quantité :
1
2
3
4
5
6
7
8
9
[/cpp]
Bon j’espere avoir donné toutes les infos qu’il fallait, je continue la quete du « graal » :bounce:
Merci par avance pour vos reponses pertinentes [:siffle] 
:jap: [:vovin42]
perso je ferais différemment.
dans le tableau tu met
Array (
[num_article] => qte
)
et ensuite
[cpp]#
// avec $tab ton tableau d’articles
if ($_POST[‹ ajout ›] == « ajout »)
{
if (isset($_POST[‹ id ›]))
{
if(isset($tab[$_POST[‹ id ›]])) {
$tab[$tab[$_POST[‹ id ›]] += $_POST[‹ quantite ›];
} else {
$tab[$tab[$_POST[‹ id ›]] = $_POST[‹ quantite ›];
}
}
}[/cpp]
(désolé les #, c’est le copier-coller :/)
Sinon tu as array_search.
moi deja je gererais le caddie en cookie because ça chargerait moins le serveur que des variables de session…
c sur si t as pas des milliers de clients… mais tant qu a faire les choses autant les faire de maniere optimale
en plus ça permet de garder le caddie indefiniment sur le post du client 
pour les cookies, tout depend aussi des utilisateurs qui doivent les accepter donc je prefere pas 
J’ai testé avec le array_search mais je n’y arrive pas 
Ca menerve je sens que la solution est proche mais pas moyen:d
–>Sans-Nom:
pourrais tu m’indiquer la syntaxe de l’array serch avec mon double tableau svp? :jap:
–>NeqO
je teste tes idées ce WE car la je n’est pas le temps 
c pareil avec les session faut que le client accepte le cookie de session… ou alors faut passer le phpsessid dans toutes tes url …
bon j’ai testé vite fait avant de partir ton code NeqO :d :
deja il manque un ] ds ton code mais pas grave :d
Sinon il ne donne que des erreurs ton code [:______]
voila comment je gere ca et cela marche tres bien :
- utilisation cookie pour gerer le compte client durant sa session avec redirection sur une page alerte si le client refuse les cookies
[cpp]
//creation du selecteur
$liste =‹ ›;
$liste .=‹ ›.$qte.‹ ›; //$qte valeur que j’ai recupere precedement dans mon code
for ($k = 1 ; $k < 21 ; $k++ ){
$liste .= ‹ ›.$k.‹ ›;
}
$liste .=‹ ›
// La fonction strip_tags est utilisé lors de l’affichage du SID dans le but de contrer les attaques XSS.
[/cpp]
[cpp]
session_start();
//suppression de l’ancienne qte
for ($i=0 ; $i < count($_SESSION[‹ achats ›]) ; $i++){
if ($_SESSION[‹ achats ›][$i][‹ id ›] == $_GET[« id »] ){
array_splice($_SESSION[‹ achats ›], $i, 1); //tu peut ajouter directement le nouvell array ici mais chez moi cela a pose des pb donc j’ajoute le nouvel array ensuite
}
}
//ajout de la nouvelle qte
$_SESSION[‹ achats ›] = array (« id » => $_GET[‹ id ›], « qte » => $_GET[‹ new_qte ›]);
//redirection
header(« location:index.php?r=caddie& ».strip_tags(SID));
[/cpp]
Fonction array_splice :
array_splice – Efface et remplace une portion de tableau
http://fr.php.net/manual/fr/function.array-splice.php
et pour recupere tout cela :
[cpp]for ($i=0; $i < count($_SESSION[‹ achats ›]); $i++){
$id_produit = $_SESSION[‹ achats ›][$i][‹ id ›];
$qte = $_SESSION[‹ achats ›][$i][‹ qte ›];
…//reste de ton code
}
// ->confirmation de commande
// ->compte client
// ->paiment en ligne ou autre
// ->generation en du bon de commande / facture en pdf et envoie par email a la societe,generation d’un id de maj et connextion au serveur dela societe pour inserer la commande, un sms au patron pour le prevenir de la commande, et un email au client pour lui indiquer un lien pour dl sa facture avec un id unique sur la facture(fonction srand sur 15 car.)
voila le process que j’utilise (en ayant simplifier :=) )
[/cpp]
je ne peut mettre un lien de site directement sinon pub
si tu veut le lien je te l’envoi par mp que tu voie le resultat final
je regarderais ton code thx 
mais bon ca m’enerve de pas trouver la soluce a mon pb 
edit: bon ton code est un poil audessus de mes competences pour le moment :d surtt la 1ere partie //creation du selecteur )
donc je ne vois pas comment adapter ca a mon code :??:
sinon ca progresse (dsl NeqO j’avais fait une erreur en reprenant ton code) :
Je suis pas loin de la soluce pour mon pb a mon avis.
Donc je choisi le produit A(id=2) avec 1 comme quantite.
Je clik sur mon chti chariot.
Puis je reviens au catalogue, re-choisi le me produit mais avec 9 quantité.Je reclik sur mon chti chariot :d et voila le result de mon caddie :
[cpp]Array
(
[0] => Array
(
[id] => 2
[qte] => 1
)
[2] => 1
[3] => Array
(
[id] => 2
[qte] => 9
)
)[/cpp]
Le « truc » c’est qu’il faut ajouter un autre produit pour que la somme soit faite ds le tableau.Cad je choisi un autre produit au pif et je clik sur le chariot, j’obtient ca:
[cpp]Array
(
[0] => Array
(
[id] => 2
[qte] => 1
)
[2] => 10 --->>>>on obtient alors la "somme"
[3] => Array
(
[id] => 2
[qte] => 9
)
[4] => Array ------->mais bon on a un article en trop :d
(
[id] => 7
[qte] => 1
)
)
[/cpp]
Voici le code php :
[cpp]$_SESSION[‹ achats ›] = array(« id » => $_POST[‹ id ›], « qte » => $_POST[‹ quantite ›]);
if ($_POST[‹ ajout ›] == « ajout »)
{
if(isset($_SESSION[‹ achats ›][$_POST[‹ id ›]]))
{
echo '
';
print_r($_SESSION[‹ achats ›]);
echo '
';
echo ‹ 1er if ›;
$_SESSION[‹ achats ›][$_POST[‹ id ›]] += $_POST[‹ quantite ›];
}
else
{
echo '
';
print_r($_SESSION[‹ achats ›]);
echo '
';
echo ‹ 2eme else ›;
$_SESSION[‹ achats ›][$_POST[‹ id ›]] = $_POST[‹ quantite ›];
}
}
[/cpp]
reste a trouve a ne pas avoir besoin d’ajouter un produit pour faire la « somme » a afficher [:paysan]
BUG:
apres un test rapide:
achat produit A X1
produit A X9
pruduit B X1
resultat:
Fatal error: Unsupported operand types in c:\program files\easyphp1-7\www\include\caddie.php on line 53
Il aime pas ca :
$_SESSION[‹ achats ›][$_POST[‹ id ›]] += $_POST[‹ quantite ›];
essaye cela pour ton code :
[cpp]
if ($_POST[‹ ajout ›] == « ajout »){
//on parcours toute la sessions a la recherche de la ligne contenant l’id produit existant
for ($i=0 ; $i < count($_SESSION[‹ achats ›]) ; $i++){
if ($_SESSION[‹ achats ›][$i][‹ id ›] == $_POST[« id »] ){
array_splice($_SESSION[‹ achats ›], $i, 1);
}
}
//ajout de la nouvelle qte
$_SESSION[‹ achats ›] = array (« id » => $_POST[‹ id ›], « qte » => $_POST[‹ quantite ›]);
}
[/cpp]
dans mon code voici comment l’expliquer :
j’ai un produit A avec une qte de 1 et un id X
dans mon panier je modifie la qte desiré a 5
je valide mon formulaire
je declare $i à 0
la ligne $i < count($_SESSION[‹ achats ›]) me permet de dire que tant que $i est inférieur au nombre de array present dans la session on rentre dans la boucle pour execution de la commande array splice
la ligne :
($_SESSION[‹ achats ›][$i][‹ id ›] == $_POST[« id »] ) donnera (pour exemple)
($_SESSION[‹ achats ›][$i][‹ X ›] == $_POST[« X »] )
si l’element $i correspond au tableau du produit A
alors on appel la fonction array_splice qui va supprimer tous le tableau de la session
puis ensuite il ne reste plus qu’a insere les nouvelle valeurs de la sessions avec les infos de ton formulaire
$_SESSION[‹ achats ›] = array (« id » => $_POST[‹ id ›], « qte » => $_POST[‹ quantite ›]);
procede un peu bizzare je reconnais mais cela fonctionne
avant j’utilisais une classe caddie mais plus lourde a mettre en oeuvre et deployer
le temps d’execution est tres rapide apres il est vrai que je n’ai pas tester sur un catalogue de 10 000 produits non plus mais la tu passe par un autre systeme de gestion plus elabore a l’aide classe caddie
je te remercie pour ton aide :oui: :jap:
mais j’ai beau tourner le code ds ts les sens pas moyen.
Perso j’utilise 2 page pour le caddie.
Ma page articles.php ou il s’affiche tous les articles selon la categorie :
http://lc2376.free.fr/divers/articles.jpg
et a chaque clique sur le chariot du produit, cava sur ma page caddie.php en affichant les données relatives au produit (pas mis en place mais pas dur) avec la qtité TJRS mis a jour de ce produit.
Ds ma page caddie, j’ai un lien qui renvoie au catalogue ou la personne continue a choisir articles par articles.
http://lc2376.free.fr/divers/caddie.jpg
Ds mon 1er post le 2eme code est celui (été :d) du caddie.php.
Le 3eme est celui de articles.php.
J’ai essayé ton code mais je galere :(.
Je pensé pas que cela serait si chiant car selon les forums certain dise qu’avec des variables sessions c’est assez simple [:______]
je continue a tester ton code et d’autres de mes tests 
Si tu te sens de partir de mon code pour m’eguiller :jap:
Voila.Merci encore pour ton aide et celle des uatres participant.
On ne trouve pas de tuto sur un caddie virtuel de ce genre avec les sessions sur le net (du moins trouvé un tuto clair et sans les classes
).
envoi tes pages sur mon mail
je tacherai demain de regarde ce qui peut deconner
et je posterai mon resulat ici que d’autre puisse en profiter ;=)
sdjinn@most-ik.com
cool c’est sympa.Je te reproduit l’architecture du site cad index.php + dossier ou il y a 2 pages include (caddie et articles) mais bon ca va etre chaud a tester car il va te manquer tte la base de données etc…
Je t’envoie ca desuite :jap:
Je continue a chercher de mon cote :d
pas de souci pour la base je la reconstruirai a partir de tes pages 
je regarde cela
des quej’ai une reponse je la poste ici
edit: je t’ai envoyer le script de genration de la base ca sera plus rapide pour toi :d 
pour la base ca va vite j’ai recree une structure en partant de ta requete produit 
ok j’ai fait ton panier
je t’envoie les fichiers par email
et je poste ici le resultat