Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1693 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Comment récupérer nom + quantité dans liste déroulante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Comment récupérer nom + quantité dans liste déroulante

n°1447821
AsmaTik
J'te l'avais dit pourtant
Posté le 26-09-2006 à 19:01:49  profilanswer
 

Bonjour,
 
Je développe une page en php dans laquelle je liste des articles et je souhaite que l'utilisateur puisse choisir dans une liste déroulante la quantité d'un article donné (un article par ligne) .
 
Voici ce que j'ai pondu mais je n'obtiens pas le résultat escompté car si je récupère dans la page cible le bon code article ($id) la quantité n'est pas celle choisie par l'utilisateur. Voivi le code :
 
<form method="post" name="nom" action="marche_fait.php">
  <select name="achat">
   <option value="0"></option>&nbsp <!-- pour avoir 1ère ligne vide dans liste déroulante -->
   <?php
     FOR ($j = 1; $j <= 4; $j++)  
      {
       ECHO "<option name=\"$j\" value=\"$id\">";ECHO $j;ECHO"</option>";$_SESSION['nombre']=$j;
      }
   ?>
   <input type="submit" value="Acheter" />    
  </select></form>

 
 
 
$j est la quantité à commander (maxi 4) ; $id est l'id de l'article dans la table articles
 
Pour essayer d'être clair, j'affiche ceci :
Nom du produit / Prix / Liste déroulante pour la quantité / Bouton "Acheter".
 
J'arrive à récuperer l'id de l'article sans problème mais la quantité est toujours à 4, je comprends pourquoi mais je n'arrive pas à trouver la solution.
 
Merci de m'aider en php si possible mais s'il faut du javascript je suis preneur également.
 
MERCI d'avance pour toute piste / tuto / réponse même incomplète.


Message édité par AsmaTik le 27-09-2006 à 13:03:35
mood
Publicité
Posté le 26-09-2006 à 19:01:49  profilanswer
 

n°1447847
naceroth
Posté le 26-09-2006 à 19:59:46  profilanswer
 

Euhhhh, et tu espères récupérer la quantité comment si elle n'est pas soumise dans le form ?
 
Parce que bon, là, ce que tu fais, c'est une boucle pour créer les options en leur donnant comme valeur l'id de ton article alors qu'elles sont supposées valoir la quantité.
 
(et ton $_SESSION sert à rien là, tu l'écrases à chaque passage dans la boucle, donc oui, il vaudra toujours 4. Mais ça représentera jamais le choix de l'utilisateur)

n°1447849
arnaudm57
Posté le 26-09-2006 à 20:02:20  profilanswer
 

Justement je pense qu'il doit se servir de sa variable de session et c'est pour cela qu'il doit toujours avoir le 4 pour la quantité


Message édité par arnaudm57 le 26-09-2006 à 20:03:29
n°1447913
AsmaTik
J'te l'avais dit pourtant
Posté le 26-09-2006 à 22:47:35  profilanswer
 

Merci naceroth et arnaudm57 pour vos réponses.
 
Petite précision : En fait j'encadre le bout de code plus haut pour lister l'ensemble de la table articles avec une boucle :
 
FOR ($i = 1; $i <= $nb_enregistrements; $i++)
 
J'ai compris que quand je récupère la quantité, la valeur de la boucle est à 4 quel que soit le choix de l'utilisateur, c'est là tout mon problème. Voyez-vous une façon de feire qui me permettrait de récupérer la bonne quantité en gardant une liste déroulante ?

n°1447915
arnaudm57
Posté le 26-09-2006 à 22:52:42  profilanswer
 

Comme le disait naceroth, dans ta liste déroulante, tu ferais mieux de mettre dans value, la valeur "$j" afin de pouvoir récupérer la bonne valeur de quantité
 
Par contre ton $id, tu le sélectionnes comment ? ou plutôt comment est affecté la variable ?
 
Tu peux toujours mettre l'id du produit dans une variable de session ou alors passer ça dans l'url ou même tout mettre dans un même formulaire. Les solutions sont nombreuses.


Message édité par arnaudm57 le 26-09-2006 à 22:54:33
n°1447929
AsmaTik
J'te l'avais dit pourtant
Posté le 26-09-2006 à 23:41:01  profilanswer
 

$id a la même valeur que i, ça me permet d'afficher la désignation correspondante après le :
    FOR ($i = 1; $i <= $nb_enregistrements; $i++)
puis le code avec le FORM m'affiche la liste déroulante en me permettant de récupérer mon $id qui me permet d'identifier l'article.
 
Par contre si j'envoie bien le bon code article par un POST, mon $_SESSION['nombre'] est forcément à la dernière valeur de la boucle $j donc à 4...

n°1447947
naceroth
Posté le 27-09-2006 à 00:26:38  profilanswer
 

AsmaTik a écrit :


puis le code avec le FORM m'affiche la liste déroulante en me permettant de récupérer mon $id qui me permet d'identifier l'article.


 
Oui mais ça c'est un non-sens, ta liste déroulante représante le choix de la quantité, y mettre la valeur permettant d'identifier l'article est absurde.
 
Maintenant, pour ce que je capte des morceaux du puzzle qu'est ton code, je déduis que tu affiches tous les articles avec un formulaire différent pour chacun, exact ?
 
Si oui, pourquoi n'utilises-tu pas simplement un <input type="hidden" name="id_article" value="ton_id_article" /> pour passer l'id d'une page à l'autre, et tu laisses ta liste déroulante faire ce qu'elle est supposée faire : renseigner la quantité.
 
:)
 
(PS : rien à voir mais je suis pas sûr du tout que tu comprennes bien l'utilité des sessions)

n°1448031
omega2
Posté le 27-09-2006 à 10:34:57  profilanswer
 

Un élément "option" n'a pas d'attribut "name". Les attributs existant pour un élément "option" sont "selected", "disabled", "label" et "value".
D'un point de vue dialogue navigateur/Serveur, ca ne change strictement rien que tu mette un nom différent à chaque élément "option" tout simplement par ce que c'est une information qui ne sera jamais renvoyé par le navigateur. Le nom que le navigateur utilisera sera celui du "select" qui contient les éléments "option".
 
Du côté de ta seconde page, le choix de l'utilisateur sera dans $_POST['achat']. D'ailleur $_SESSION['nombre'] ne sert strictement à rien vu que la seule valeur qu'il peut contenir à la fin de l'exécution de la premiére page, c'est le dernier nombre que t'y a mis dedans. (donc 4) Vu que c'est un nombre fixé dans le code, il n'est pas trés utile de le mettre dans la session à moins de vouloir faire un controle du volume sélectionné par le client.

n°1448138
AsmaTik
J'te l'avais dit pourtant
Posté le 27-09-2006 à 13:02:55  profilanswer
 

J'ai suivi vos différents conseils et remarques, j'ai nettoyé mon code et j'ai remis la quantité dans $j, ai utilisé un champ hidden pour le code article (c'était ma 1ère idée mais je l'avais placé dans la boucle du $j donc ça ne marchait pas, en le sortant de la boucle, ça fonctionne).
 
Merci à arnaudm57, naceroth et omega2, vos contributions m'ont permis de trouver la solution !
 
P.S : pour les sessions, je sais m'en servir pour transmettre des variables sur plusieurs pages tant que la session est ouverte, par contre c'était clairement mal utilisé ici (j'ai essayé de bidouiller...)
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Comment récupérer nom + quantité dans liste déroulante

 

Sujets relatifs
[RESOLU] Taille maximum String et requête[Resolu][C#NET] Mettre le focus sur un onglet (pour le faire afficher)
[Résolu] un tuto flash pour débuter ?[Résolu] Dbgrid et Tpagecontrol Question bête
[MYSQL] [RESOLU] avec UNION, comment "créer" un champs ?cacher la scrollbar d'une liste.
Longue liste avec attributs identiquesProblème avec requête sql et ordre d'affichage des champs [résolu]
Plus de sujets relatifs à : [résolu] Comment récupérer nom + quantité dans liste déroulante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR