|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Bonjour,
J'avance à grand pas dans mon développement et me suis cassé les dents sur les sessions php. Je dois en effet réaliser un panier pour mon application, j'ai pu trouver ce super tutoriel : http://jcrozier.developpez.com/articles/web/panier/ sur la réalisation d'un panier virtuel. J'ai toutes fois un peu de mal a adapter le code présenté pour une utilisation avec formulaire. En effet, lorsqu'on ajoute des produits dans le panier dans ce tutoriel, les variables sont passées dans l'url alors que moi j'utilise un formulaire et donc du POST. Mes variables ne sont alors pas prises en compte par le script présenté ici. Toutes fois, elles sont bien présentes dans la page si je fais le test suivant : Code :
Par avance, Merci Marc |
||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Jean-Philippe Morvan Inscription : juin 2008 Messages : 324 ![]() |
avec les sessions, tu fais qque chose comme ça :
Code :
|
||
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Merci pour ta réponse,
En fait, c'est pour remplacer ca ? par exemple ? Merci encore. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Jean-Philippe Morvan Inscription : juin 2008 Messages : 324 ![]() |
bah si ton url est du style : "panier.php?refproduit=123582"
le fait d'utiliser la session te permettra de ne plus avoir refproduit=123582 dans l'url mais d'avoir $_SESSION['refproduit']=123582 au lieu de $_GET['refproduit']=123582 ça t'évite de tout passer en paramètre |
|
00
|
|
|
#5 | |
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Citation:
Le code est assez compliqué je trouve |
|
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Citation:
Qu'est ce qui te gène, le passage des paramètres en mode POST ou GET, la conservation de variables dans des sessions ? Y a-t-il des exemples précis de code que tu ne comprend pas ? |
|
|
|
00
|
|
|
#7 | ||||||
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Merci Eusebe pour ta réponse.
En fait, dans panier.php, On a ceci : Donc déja, il faut surement que je définisse action par un $_POST non ? Le plus dur pour moi c'est que c'est un tout et que tout doit être bon sinon ca ne fonctionne pas et qu'il est assez difficile de décoder les erreurs étant novice. Ensuite, Code :
donc il faut aussi remplacer par un POST non ? Puis viennent les varibles $l et autres Code :
Apres cette partie de code, je ne saisi pas trop Code :
ensuite dans fonction panier, j'ai pu modifier les quelques valeurs par mes valeurs à moi par exemple libelleproduit = refproduit Merci encore pour votre aide, Plexou |
||||||
|
|
00
|
|
|
#8 | ||||
![]() ![]() |
Effectivement dans ton cas de figure remplace $_GET par $_POST vu que tu utilise POST avec ton formulaire.
Donc quand on teste isset($_GET['champ']) et bien pour toi ca devient isset($_POST['champ']). Ensuite si tu ne voie pas à quoi ca correspond voial une demo plus grande. $_GET['action'] = l'url vas être panier.php?action=achat. Comme tu le voie le champ dans ce cas de figure est action, et ca valeur est achat. Donc pour récupérer la valeur on lui demande $_GET qui est un tableau et vu qu'on cherche l'action que l'utilisateur a donner et bien dans le tableau $_GET on recupére le champs action. Exemple: Code :
$_POST[] est un tableau de ton formulaire, et les champs sont en faite les attribut name de ton formulaire. Exemple Code :
J'espère t'avori éclairé. |
||||
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Merci bcp SirDarken pour ces explications et précisions.
Je comprends bien le fonctionnement des 2 méthodes, c'est que je ne sais pas trop par ou commencer pour les changements, Je vais m'y mettre maintenent que tout est plus clair et je vous tiens au courant Merci encore
|
|
|
00
|
|
|
#10 | |||||||||||
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Bonjour,
Citation:
Si au lieu de les passer en mode GET tu les passes en mode POST, les paramètres ne sont plus listés dans le tableau $_GET, mais dans $_POST, comme tu l'avais bien deviné Dans le code on vérifie si le tableau associatif $_GET contient une clé 'action', donc ça équivaut à vérifier si on a reçu un paramètre action en mode GET. Si tu les passes en mode POST, il faut bien faire la même chose, mais avec le tableau $_POST. Citation:
Citation:
Citation:
Le paramètre POST QteArticle est un tableau, qui contient la quantité de chaque article. $_POST['QteArticle'][0] contient (sous forme de texte) la quantité du premier artcile, $_POST['QteArticle'][1] celle du deuxième article, etc... Pour récupérer ce paramètre, on commence dans le tuto par créer un tableau vide $QteArticle. Ensuite, pour chaque valeur du paramètre QteArticle (c'est à dire les quantités de chaque article du premier au dernier), on stocke la valeur transformée en nombre (dans le passage de paramètre, c'était du texte) dans le tableau $QteArticle, au même indice. Au final, $QteArticle contient les mêmes données que $_POST['QteArticle'], mais converties en int. Citation:
Pour t'aider au début à débugguer ton programme, tu peux afficher la valeur des différentes variables en utilisant print_r. Par exemple, pour voir ce que contiennent $_GET et $_POST, tu peux faire print_r($_GET); ou print_r($_POST);. Bon courage ! |
|||||||||||
|
|
00
|
|
|
#11 | ||
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Coucou,
merci encore pour ton aide, je suis en train de modifier mon code l Par contre j'ai un soucis la Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\application\require\actions\panier.php on line 41 A cette ligne j'ai : Code :
Ps je travail sur easyphp peut etre que c'est lui qui ne prends pas la session en compte ? Merci encore |
||
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
C'est simplement que ta session avait déjà commencé. Dans ce cas, l'appel à la fonction session_start() est ignoré (ce qui n'a pas d'impact).
Est-ce que tu as mis la fonction session_start à plusieurs endroits ? Est-ce qu'elle est par exemple dans le fichier fonctions-panier.php ? |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : novembre 2004 Messages : 75 ![]() |
Merci bcp pour ta réponse Eusebe
J'ai effectivement mis session start mais dans creation commande.php qui envoi les données dans mon panier. Est ce une erreur de ma part ? Dois je laisser / supprimer ? Merci encore
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Citation:
La seule chose que je puisse te dire, c'est que tu as ce message parce que tu utilises la fonction session_start alors qu'une session est déjà commencée. Donc soit tu as deux fois session_start dans ta page (en prenant en compte les fichiers inclus), soit tu as activé le démarrage automatique des sessions... Bon courage |
|
|
|
00
|
|
|
#15 |
![]() ![]() |
Au pire mais c'est pas trés pro pourquoi pas mettre @session_start(); ?
Je me retrouver dans l'obkigation de faire cela pour un header(...); |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com