Récupérer une saisie manuelle dans une boucle sur une table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer une saisie manuelle dans une boucle sur une table

par zeus » 02 mars 2006, 15:21

tout simplement parce que as chaque itération, tu remplace le contenu de $k par la nouvelle valeur ... :roll:

recuperer les variable d'une sasiie

par danbo » 02 mars 2006, 15:03

me voici à nouveau:

En effet, la syntaxe

$t="q".$nligne;
if(isset($_POST["$t"]))

fonctionne bien, à ceci près:

Lorsque j'ai plusieurs produits affichés sur ma page (venant de la table produits), et que j'entre plus une valeur "quantité" pour plus d'un produit, seule la dernière quantité est prise en compte par le $_POST, les autres sont ignorées (les précédentes), malgré la présence d'indice.

Il me reste donc à comprendre pourquoi ces valeurs sont annulées ?

par zeus » 02 mars 2006, 14:46

Déjà, pour $_POST, je te suggère de faire ça :

Code : Tout sélectionner

$k = $_POST["choix$nlignes"];
Je ne suis pas d'accord avec toi. Dans un soucis de clareté du code et de portabilité, il vaut mieux extraire les variables des chaines de caractères

Code : Tout sélectionner

$k = $_POST["choix".$nlignes];
Sinon, quel est l'intéret de récupérer le contenu de l'input qi tu ne l'utilise pas ?

Comment est-ce que tu le récupéres dans la page de destination de ton formulaire

par KooKiz » 02 mars 2006, 12:04

Je ne suis pas sur d'avoir tout bien compris mais je me permet déjà de faire quelques remarques :

Si j'ai bien compris, tu fais une boucle d'affichage sur tes champs de saisie, en ajoutant à chaque fois :

Code : Tout sélectionner

$k=$_POST['echo "choix".strval($nlignes);'];
Déjà, pour $_POST, je te suggère de faire ça :

Code : Tout sélectionner

$k = $_POST["choix$nlignes"];
Ensuite, le message d'erreur te dis simplement que la variable que tu tentes de récuperer n'est pas définie, ce qui est normal : l'utilisateur ne remplissant pas tous les champs, les autres sont forcement vide. Pour éviter ce message, met plutôt :

Code : Tout sélectionner

if (isset($_POST["choix$nlignes"])) $k = $_POST["choix$nlignes"];
Ca devrait être mieux :)

Récupérer une saisie manuelle dans une boucle sur une table

par danbo » 02 mars 2006, 09:59

De la part de Danbo.
Bonjour aux intelligences.

Je viens demander à votre sagacité à m'aider à résoudreun problème de reconnaissance de variable.

Voici l'explication, ce n'est pas très long, mais simple à poser:

1) J'ai une table de données que je liste (en PHP).
Chaque ligne de la table affiche ses informations. Par exemple:
"id","article",quantite","prix"...bien!!!

2) Grâce à une routine "WHILE", j'affiche chaque ligne et j'ajoute une case de remplissage comme celle-ci:

while(...)
{
...

"<input type=\"text\" name=\"choix".strval($nlignes)."\" title=\"quantite ".$nlignes."\" width=\"20\" class=\"commande\" value=\"0\" />";

$k=$_POST['echo "choix".strval($nlignes);'];
}

où je demande à l'internaute de remplir la quantite pour l'article choisi.
L' "input' porte un name choix0, choix1, choix2, etc..., l'incrémentation se faisant durant le"WHILE"

3) j'obtiens donc bien des variables différentes que le systeme semble reconnaitre, car il est capable de les afficher (dans le title).

4) Or, dès que je valide par un bouton la quantite entree, PHP me repond qu'une erreur d'index apparait, sous cette forme:

Notice: Undefined index: choix1 in c:\program files\easyphp1-8\www\_seebuy_dan\listearticles.php on line 118

Et les manips sur $_POST ne donnent rien, ni avec eval().

D'après vous, y a t il incompatibilité entre le listing et l'adjonction d'un "input", comme si je mélangeais listing + saisie ? ou faut il séparer page de saisie et listing absolument ?

Je vois que sur les sites marchands, ce principe n'existe pas, cela veut-il dire que c'est actuellement impossible.

L'objectif, c'est de réduire les manips pour l'internaute, et faciliter le traitement de l'info pour moi.