Récupérer des $_POST dont on ne connaît pas le nom ?

Récupérer des $_POST dont on ne connaît pas le nom ? - PHP - Programmation

Marsh Posté le 09-09-2008 à 12:15:21    

Bonjour tout le monde !  
 
J'ai un petit souci.  
 
En fait, je veux faire une sorte de panier d'achat.  
 
Par exemple, j'ai :  
 

Citation :

Livre : un select pour choisir la quantité
DVD : un select
K7 : un select
 
Un submit pour valider.


 
Le truc étant que j'ai une liste indéfinie de fichiers, que je liste par id (qui ne se suivent pas forcément).  
 
Je voudrais donc savoir comment faire pour récupérer tous mes posts ?  
 
J'ai testé ceci, avec des hidden pour récupérer l'id des objets.
 

Code :
  1. $qtte = explode(',',$_POST['qtte']);
  2.     $idobjet = explode(',',$_POST['idobjet']);
  3.     $count = count($idobjet);
  4.     for($i=0;$i>$count;$i++)
  5.       {
  6.       echo $qtte[$i].' de '. $idobjet[$i];
  7.       }


 
En pensant que si tous les $_post avaient le même nom, ça me sortirait un beau tableau que je pourrais ensuite exploiter, mais que nenni, ca me donne les valeur des derniers !
 
Quelqu'un aurait une idée ? Merci !


---------------
Hello hello super jello
Reply

Marsh Posté le 09-09-2008 à 12:15:21   

Reply

Marsh Posté le 09-09-2008 à 12:22:32    

print_r($_POST) ? ^^ Essayes c'est génial !!!


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 09-09-2008 à 12:49:06    

foreach est fait pour manipuler des tableaux sans connaitre les clé.
Sinon, print_r est extra si tu veux juste afficher tout ce qu'il contient avec les clés et le contenu.

Reply

Marsh Posté le 09-09-2008 à 12:54:46    

À mon avis ton truc est déjà super mal conçu dès le départ là...
 
Mais sans plus de détails...


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 09-09-2008 à 14:07:36    

Print_r déjà fait, ça me sort dans un Array les deux dernières valeurs, comme je l'ai dit plus haut.  
 
Si la chose est mal conçue, une idée pour une autre méthode ?  
 
Merci :hello:


---------------
Hello hello super jello
Reply

Marsh Posté le 09-09-2008 à 14:15:59    

le formulaire ressemble à quoi ?

Reply

Marsh Posté le 09-09-2008 à 15:03:30    

Code :
  1. <form method="post" action="'.$page.'?acheter=ok">
  2.   $retour = mysql_query("SELECT * FROM machin" );
  3.   while ($donnees = mysql_fetch_array($retour))
  4.     {
  5. echo '<div align="center">'.$donnees['nom'].' ( '..$donnees['prix'].'euros )<br>
  6.   <select name="qtte">
  7.     <option>0</option>
  8.     <option>1</option>
  9.     <option>2</option>
  10.     <option>3</option>
  11.     <option>4</option>
  12.     <option>5</option>
  13.   </select>
  14.   <input type="hidden" name="idobjet" value="<? echo $donnees['id']; ?>">
  15. </div>';
  16.     }
  17. echo '<input type="submit" calue="Go"></form>';


 
En gros, en très très gros. Si y a des fautes de syntaxe c'est parce que j'ai raccourci le truc a fond, elles y sont pas dans le code :) Voilou, si quelqu'un a une idée ! Merci :)


Message édité par pouzy le 09-09-2008 à 15:04:11

---------------
Hello hello super jello
Reply

Marsh Posté le 09-09-2008 à 15:09:37    

Je viens de réaliser un truc : tu ne stockes nulle part les données envoyé par le navigateur.
Chaque page est, par nature, indépendante des autres et avec des variables qui ne sont pas celle des autres. Par conséquent le $_POST du second appel ne contient pas les données du premier appel.
 
La seule variable qu'on retrouve d'une page à l'autre, quand on à affaire au même visiteur, est la variable de session : $_SESSION. Si tu veux garder des données tout au long de la visite d'un internaute, c'est là dedans qu'il faut que tu les stockes.
Si tu veux les garder encore plus longtemps alors il faudra les sauvegarder quelque part : fichier, base de donnée, ...

Reply

Marsh Posté le 09-09-2008 à 15:21:33    

Coucou,  
 
Oui je sais pour les Sessions... Mais je ne vois pas trop le rapport ? Il y a un seul appel à une fonction $POST ici.  
 
Merci quand même :)


---------------
Hello hello super jello
Reply

Marsh Posté le 09-09-2008 à 16:18:37    

Est ce que par hasard dans ton formulaire tu as plusieurs élément qui ont exactement le même "name"?
Si c'est le cas alors il faut que le "name" se finisse par "[]". (Une aberration de php, seul langage web qui a besoin d'une telle bidouille pour mettre des éléments de formulaire dans un tableau plutôt que de créer automatique un tableau quand il y en a plusieurs qui ont le même "name" )


Message édité par omega2 le 09-09-2008 à 16:19:34
Reply

Marsh Posté le 09-09-2008 à 16:18:37   

Reply

Marsh Posté le 09-09-2008 à 17:01:46    

Nickel, ça fonctionne ! Merci :D J'y aurais jamais pensé, deux petits crochets...


---------------
Hello hello super jello
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed