Recuper un variable avec php

Fermé
rahminou - 5 mai 2008 à 18:29
 BoOst - 5 mai 2008 à 19:06
Bonjour,
j'ai un code comme suivant:

if( isset($_POST['tab1']) ) foreach( $_POST['tab1'] as $valeur )
{
echo"<input type=\"hidden\" value=\"$valeur\" name=\"prod1[]\">".$valeur."<br>";
}
je veut maintenant prende cette valeur $prod[] et mettre dans la base

mysql_query("INSERT INTO commande VALUES ('$id','$nom','$prenom','$tel','$prod[]','$prod1[]','$total')"

j'ai bien inserer les autre variable sauf que des variable prod[]et prod1[]
stp quelqun m'aider tres urgent
et merci d'avance

2 réponses

salut,

je suppose que l'insertion a lieu dans une autre page qui recoit les données du formulaire,
et suivant la configuration de ton serveur PHP la récupération de variables peut ne pas fonctionner tel quel.

donc déja dans la page de ton formulaire, repère la ligne "<FORM ..." et vérifie si tu a METHOD="POST" dedans,
si oui alors tu doit récuperer les variable avec $_POST["mavariable"] , sinon avec $_GET["mavariable"].
(tu peut aussi récupérer avec $_REQUEST["mavariable"] mais c'est moins sécurisé)

sinon,
je vois que la variable $prod1 (donc $_REQUEST["prod1"]) est un tableau,
car le code qui génère les champs cachés de ton formulaire peut générer plusieurs lignes "<input type=hidden",
tu ne peut donc pas l"insérer tel quel dans SQL..
de plus, tu ne doit pas le mettre entre guillemet.
(Je ne comprends pas d'ou vient la variable "$prod", peut-être que c'est aussi un tableau)

Pour accéder et insérer des valeurs du tableau $prod1, tu doit utiliser un index comme dans cet exemple :
(ici c'est l'index 0 donc le 1er élément)
mysql_query("INSERT INTO commande VALUES ('$id','$nom','$prenom','$tel',$prod[0],$prod1[0],'$total')"


Tu peut aussi mettre un boucle et faire autant d'insertion que de valeur du tableau, mais j'imagine que ce n'est pas ton but.

autre truc important, toujours utiliser la fonction "addslashes" de php lors d'une requete SQL,
lorsque les variables viennent d'un formulaire (POST) ou de l'adresse web (GET),
ça double les guillemets car c'est obligatoire sous SQL, et ca sécurise beaucoup le code conte les attaques externes.

mysql_query("INSERT INTO commande VALUES ('$id','$nom','$prenom','$tel',$prod[0],addslashes($prod1[0]),'$total')"


bon courage
0
pour t'aider plus, essaye d'expliquer ce qu'il y a dans les champs "prod" si tu peut,
sinon au début de ta page qui recupère les données du formulaire,
tu rajoute les instructions suivantes pour que ca affiche les données reçues juste avant l'insertion :

var_dump( $_POST );
var_dump( $_GET );


ensuite tu copie-colle le résultat ici comme ca je comprendreais mieux.

tu peut aussi mettre cette instruction en début de page ou dans une page vide :

php_info();


ca affiche la configuration du serveur php,
tu cherche la chaine "register_globals" et tu vérifie si elle est a "off" ou "on",
(si elle est sur "on" alors tu peut acceder les variables directement sans $_POST etc..)
0