Aller au contenu

Garder en memoire la selection d'une liste


dr3amerz

Sujets conseillés

Bonjour tout le monde , je m'explique :

Je fais un site de e-commerce dans lequel on peut selectionner et ajouter des produits a un caddy ou on retrouve le nom du produit la reference et une liste deroulante générée a partir du champ taille de la base de donnée ou on retrouve les tailles disponibles.

Je voudrais que quand l'utilisateur selectionne la taille qu'il veut dans la liste deroulante , qu'il change de page et qu'il revienne sur le caddy ce soit la taille qu'il a selectionnée qui soit en 'selected' , et ce bien sur pour plusieurs lignes .

Voila merci

Lien vers le commentaire
Partager sur d’autres sites

voila avec un exemple la méthode que j'utilise :

  echo "<SELECT NAME=idcat onchange='submit()'>\n";
 while($LST_CAT = mysql_fetch_array($cat)){
     if($idcat==$LST_CAT[0]) $selected = "selected"; else $selected = "";
     echo "<OPTION VALUE=$LST_CAT[0] $selected>$LST_CAT[1]\n";
 }
 echo "</SELECT>\n";

résumé :

quand je parcours ma liste des valeurs possibles, je positionne la valeur $selected à "selected" dès que je rencontre la valeur choisi précédemment

Lien vers le commentaire
Partager sur d’autres sites

Ca ne marche pas , regardez ce que ca fait :

Le message d'erreur "headers already sent" n'a rien à voir avec le code de Vincent.

Il signifie que tu appelles session_start() alors que les entêtes ont déjà été envoyées.

Il faut que session_start() soit exécuté avant tout envoi... même un blanc ou un retour chariot.

Dan

Lien vers le commentaire
Partager sur d’autres sites

euh j'ai pas du tout cette erreur !

Je parlais que ca ne marchais pas quand on selectionnait une taille dans la liste deroulante sinon tout marche bien chez moi , je n'ai pas de message d'erreur :| , peut tu me dire quand cela t'arrive et me faire un screenshot stp

merci

Lien vers le commentaire
Partager sur d’autres sites

a part le probleme evoqué part dan,

le script que je t'ai donné fonctionne sur ton site

j'ai selectionné la taille 40 et quand je fait "précendent" je retombe bien sur 40.

cependant tu demande la soumission du formulaire mais il n'y a pas d'instructions dans la balise <form> ???

mets plutot un truc du genre :

<form method="post" action="nomdemapage.php">

Lien vers le commentaire
Partager sur d’autres sites

a part le probleme evoqué part dan,

le script que je t'ai donné fonctionne sur ton site

j'ai selectionné la taille 40 et quand je fait "précendent" je retombe bien sur 40.

cependant tu demande la soumission du formulaire mais il n'y a pas d'instructions dans la balise <form> ???

mets plutot un truc du genre :

<form method="post" action="nomdemapage.php">

<{POST_SNAPBACK}>

Cette fois ci , quand je selectionne la taille et que le submit se fait , ca reste bien sur la meme taille , mais par contre quand je change de page et que je reviens au caddy , la taille n'a pas été conservée , et autre probleme , quand il y a un 2eme article dans le caddy quand je selectionne la taille de l'un , le deuxieme se met a la meme taille , essayez :)

comment resoudre ces probleme ?

merci

Lien vers le commentaire
Partager sur d’autres sites

je resume :

$TailleProduit est une chaine de caractere ou sont repertoriées les tailles , par exemple : S,M,L,XL

$tabtaille = explode(",",$TailleProduit);
$result2 = count($tabtaille);
$compteur = 0;


<form method="post" action="panier.php3?action=aff"><select name="taille" onchange='submit()'>

$_SESSION['taille'] = $_POST['taille'];

while($compteur < $result2)
{
if(isset($_SESSION['taille']) and $_SESSION['taille'] == "$tabtaille[$compteur]") $selected = "selected"; else $selected = "";
<OPTION value="$tabtaille[$compteur]" $selected >$tabtaille[$compteur]</OPTION>

$compteur = $compteur + 1;
}
</select></form>

Voila je vous ai dispensé des echo etc..

Donc le probleme a l'heure actuelle , c'est que quand je vais dans la liste deroulante et que je selectionne une taille , le submit se fait , ok , la bonne taille est selectionné , mais quand je change de page et que je reviens sur le caddy , la taille n'a pas été conservée et ce n'est plus la bonne qui est selectionnée.

Autre chose : quand il y a un 2eme article dans le caddy quand je selectionne la taille de l'un , le deuxieme se met a la meme taille.

L'url si vous voulez essayer : http://www.laftershop.com

merci

Lien vers le commentaire
Partager sur d’autres sites

Pour moi il y a une erreur de conception dans le sens ou la taille ne doit pas etre liée a la session de l'utilisateur mais plutot à l'article...

donc au lieu de récuperer la taille qui est stockée dans la session, il faut que tu verifies si l'article est présent dans ton caddie et recuperer la taille qui a été selectionnée precedemment lors de l'ajout de l'article dans le caddie

Mais il faudrais d'abord regler ton probleme de session (celui que Dan a signalé):

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /data/members/paid/l/a/laftershop.com/htdocs/www/inc-public.php3(20) : eval()'d code:25) in /data/members/paid/l/a/laftershop.com/htdocs/www/inc-public.php3(53) : eval()'d code on line 6

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /data/members/paid/l/a/laftershop.com/htdocs/www/inc-public.php3(20) : eval()'d code:25) in /data/members/paid/l/a/laftershop.com/htdocs/www/inc-public.php3(53) : eval()'d code on line 6

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

J'ai essayé de faire quelque chose pour le probleme des sessions , je voulais savoir si c'etait réglé ou pas car je n'ai jamais eu le probleme .

merci

edit : je crois que c'est spip qui fout le bordel , car il inclue des pages telle que inc_public.php3 , et impossible de savoir quelle est la premiere

comment faire je suis perdu ?

Modifié par dr3amerz
Lien vers le commentaire
Partager sur d’autres sites

le probleme des sessions est reglé chez moi aussi.

l'ajout au caddie fonctionne et je vois bien ton probleme de taille

actuellement :

pour chaque taille possible, tu compares avec la taille choisie precedemment.

il faut faire :

pour chaque article enregistré, parmi ses tailles possibles tu dois comparer avec la taille sauvegardée en base de donnée dans ton enregistrement article

Lien vers le commentaire
Partager sur d’autres sites

il faut faire :

pour chaque article enregistré, parmi ses tailles possibles tu dois comparer avec la taille sauvegardée en base de donnée dans ton enregistrement article

Genre quoi en code ?

Pasque j'ai pas très bien compris ce que tu voulais dire , pour moi la taille sauvegardée ne l'etait pas dans la base de donnée mais dans une session , a moins que tu ne parle pas de la taille qu'aurait selectioné le client dans la liste deroulante :fou:

enfin un ptit eclairage serait pas de refus :P

Lien vers le commentaire
Partager sur d’autres sites

la taille sauvegardée doit etre en base de donnée !

comment tu va savoir toi de l'autre coté quelle taille a été choisie?

si tu laisse ce genre de donnée dans la session ... une fois la session terminée, tu perds cette donnée !

pour le code ... il suffit de remplacer ta donnée qui proviens de la session par celle qui proviens de la base de donnée.

Attention, la taille peut changer pour chaque enregistrement !

Lien vers le commentaire
Partager sur d’autres sites

la taille sauvegardée doit etre en base de donnée !

comment tu va savoir toi de l'autre coté quelle taille a été choisie?

Je comptais envoyé un mail avec toutes les informations

C'est idiot ?

Lien vers le commentaire
Partager sur d’autres sites

ce n'est pas idiot, juste un peu léger...

mais bon, si on reprends notre caddie, imaginons que tu as 2 articles, tu dois donc avoir sauvegardé quelque part, les 2 identifiants des articles, avec si possible, le libellé, le nombre, le prix, la taille...

Qu'est ce que tu sauvegardes pour mettre dans ton mail, ou et comment?

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

en fait j'aimerais savoir une chose :

Tous mes articles presents sur le site sont evidement présent dans la base de donnée , avec a chaque fois une taille , une ref , un prix etc... , on est d'accord !

Mais les articles selectionnés par le client , il faut que je créé une nouvelle table où ils seront stockés ?

Et comment faire une fois que j'ai créé la table pour dire a la taille selectionnée par le client qu'elle doit aller s'enregistrer dans la nouvelle table ? Il faut que je fasse un insert into ? oui mais insert into de quelle valeure ? et du coup je n'utilise plus du tout les sessions ?

Je nage completement :'(

Modifié par dr3amerz
Lien vers le commentaire
Partager sur d’autres sites

En fait, il y a 2 choses :

- D'un coté, les sessions permettent de garder des informations d'une page à une autre.

- D'un autre coté, il y a la base de données, qui permet de garder les informations entre 2 visites.

En gros, tu vas sur un site, tu achetes des trucs, et tu fermes tout. Tu reviens 2 jours plus tard, tu continues à acheter.

Pendant ta première visite, si tu fais plusieurs pages, ca sera sauvegardé en sessions. Lors de ta seconde visite, la session qui avait été créée sera terminée, et donc il aura fallut que les données aient été sauvegardées dans une table pour pouvoir être restituées par la suite.

Pour toi, pour ton problème, c'est un peu idem.

Tu as compris qu'il fallait sauvegarder les données dans les sessions, lors de la visite par un internaute.

Lorsqu'il achète, tu envoies un mail (à lui, à toi), avec toutes les informations. Ainsi, les informations sont 'sauvées', chacun a une copie de ce qui a été acheté, etc..

MAIS le lendemain, la session aura expiré, Tu auras bien les informations, mais elles ne seront plus sur le site, elles ne seront plus stockées dans la base. C'est pour ca qu'il faut aussi les inscrire quelque part, dans une table, au moment de l'achat.

Ainsi, si par la suite tu veux faire des statistiques (nombre de produits vendus, total d'achat, etc,) tu pourras te servir des informations contenues dans cette table. Si tu veux donner la possibilité au client de voir ce qu'il a déjà commandé (un genre de 'total général'), il suffira de se référer à ce qui est contenu dans cette table. Etc.

Pour cela :

Je suppose que tu t'envoies un mail du genre :

$body = "Achat effectué :";

$body .= " Articles : ".$articles;

$body .= "acheteur : ".$acheteur;

$body .="Total ttc : ".$total_ttc;

$body .= etc..;

A coté de ca, tu devrais faire :

$q = "insert into table_achats(id,articles, acheteur,total_ttc) VALUES

('','".$articles."','".$acheteur."','".$total_ttc."')";

$r = mysql_query($q);

Si par la suite tu des statistiques, tu auras juste à faire :

Le nombre d'acheteurs :

$q = "SELECT count(acheteur) FROM table_achats GROUP BY acheteur";

La somme total des achats :

$q = sum(total_ttc) FROM table_achats";

La liste de tous les acheteurs :

$q = "SELECT DISTINCT acheteur FROM table_achats ";

Le total de commande, par acheteur :

$q = SELECT DISTINCT sum(total_ttc),acheteur FROM categories GROUP BY acheteur";

etc..

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta reponse très complete je comprend un peu mieux :)

Mais comment se fait-il que a l'heure actuelle avec les sessions ma liste déroulante ne marche pas , enfin j'eprouve les problemes que j'avais mis plus haut , c'est a dire :

quand je vais dans la liste deroulante et que je selectionne une taille , le submit se fait , ok , la bonne taille est selectionné , mais quand je change de page et que je reviens sur le caddy , la taille n'a pas été conservée et ce n'est plus la bonne qui est selectionnée.

Autre chose : quand il y a un 2eme article dans le caddy quand je selectionne la taille de l'un , le deuxieme se met a la meme taille.

Voila , comment reglé ces problemes sans avoir recours a la base de donnée , ca devrait etre possible quand meme :(

Lien vers le commentaire
Partager sur d’autres sites

tes 2 problemes sont liés : tu te bases sur la valeur precedemment selectionnée et non pas sur la taille lié a l'article.

Je penche plutot pour un probleme fonctionnel :

quand on est ici http://www.laftershop.com/rubrique.php3?id_rubrique=2

et que l'on clique sur "ajouter panier", tu ajoutes d'abord au panier, ensuite tu nous permets de modifier la taille.

Pour ma part, je vois la chose plutot dans le sens inverse : je choisi ma taille puis j'ajoute l'article a mon panier

Comment est sauvegardé ton panier (entier) dans ta session?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour (ou bonsoir ?)

Apparemment ca marche. Tu as réussi à régler le problème ce week end ?

Quand on sélectionne un article et une taille, il parait bien les garder en mémoire, non ? Idem si l'on sélectionne un autre article identique, non ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...