Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
12 avril 2009 à 01:04
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
13 avril 2009 à 17:34
Salut à tous,
mon problème d'aujourd'hui n'est pas à proprement parlé du php, mais c'est lié et j'ai pas trouvé de htmlfrance.com ^^
alors voilà, j'ai fait un formulaire html, avec envoi type POST.
Lorsque je récupère mes données via un $_POST['toto'], aucun problème pour certaines valeurs.
Mais pour d'autres, ça me retourne un undefined.
Pourant les ids existent réellement (je m'en sers même dans du javascript juste avant la validation du formulaire.)
Je me suis aperçu que ça concernait des balises select que j'ai encapsulés dans des div.
Le problème pourrait-il venir de là ?
Si oui, ai-je d'autre solutions que de virer les div, ou, si je veux garder ma mise en page, de rediriger mes valeurs vers des input hidden ?
kohntark
Messages postés3706Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 13 avril 2009 à 10:28
Re,
Je m'interroge quand même à propos des 'name' et 'id'. J'étais persuadé que c'était les 'id' qui importaient. = > c'est toujours le name que l'on récupère en post, jamais le id.
D'ailleurs j'utilise très peu les name et le w3c validator m'a jeté sur
le test xhtml strict à cause d'un name. j'ai dû passer en transitional.
=> c'est sans doute que tu mets un name sur une balise qui n'en autorise pas, par exemple document.getElementById('...');" qui passent très bien.</italique>
=> oui, et heureusement. Mais là c'est du javascript, pas du PHP.
Et comme vous allez pouvoir le constater, les $_POST['...'] fonctionnent bien avec des 'id', du moins partiellement.
=> je n'ai pas regardé en détail ton script, mais non, tu ne peux pas les récupérer juste avec l'id.
Par exemple :
<select id='frm_tete_opt1' onchange='modif_visu("frm_tete_opt1")'>
=> tu ne le récupères pas avec $_POST['frm_tete_opt1'];
par contre :
<select id='frm_tete_opt1' name='frm_tete_opt1' onchange='modif_visu("frm_tete_opt1")'>
le récupère correctement.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 12 avril 2009 à 01:13
Salut,
Est-il possible de voir le html stp ? Juste comme ça, dans un html syntaxiquement correct ça ne pose aucun problème que de mettre des select dans des div.
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 12 avril 2009 à 23:04
Salut,
merci pour vos réponses.
Je m'interroge quand même à propos des 'name' et 'id'. J'étais persuadé que c'était les 'id' qui importaient.
D'ailleurs j'utilise très peu les name et le w3c validator m'a jeté sur le test xhtml strict à cause d'un name. j'ai dû passer en transitional.
Dans mon code js, je fais des "document.getElementById('...');" qui passent très bien.
Et comme vous allez pouvoir le constater, les $_POST['...'] fonctionnent bien avec des 'id', du moins partiellement.
Voici donc mon code (allégé uniquement au niveau contenu texte, la partie code est intacte :
#####################################################################################
<form method= 'post' action='index.php?p=c&step=2' name='frm_crea1'>
<label for='projectname'>Pour commencer, choisissons un nom pour ce projet : </label>
...
...
<fieldset> <legend>Composants de page web</legend>
Sélectionnez ci-dessous les composants que vous voulez voir paraître sur votre site :
En-tête
Menu
Corps
Pied de page
test
Options de l'En-tête
<select id ='frm_tete_opt1' onchange= 'modif_visu("frm_tete_opt1")'>
<option value='1' selected='selected'>1 seule partie</option>
<option value='2a'>2 parties, petite d'abord</option>
<option value='2b'>2 parties, grande d'abord</option>
<option value='3'>3 parties</option>
</select>
Options du Menu
<select id ='frm_menu_opt1' onchange= 'modif_visu("frm_menu_opt1")'>
<option value='g' selected='selected'>Menu à gauche</option>
<option value='h'>Menu en haut</option>
<option value='d'>Menu à droite</option>
</select>
Le code à la validation est le suivant (en php cette fois) :
#####################################################################################
$bd = new BD(NOM,PASS,BASE,SERVEUR);
$bd->execRequete("truncate table temp_form");
if (isSet($_POST['projectname']))
$bd->execRequete("insert into temp_form values('projectname','{$_POST['projectname']}')");
if (isSet($_POST['frm_tete']))
{
$bd->execRequete("insert into temp_form values('frm_tete','{$_POST['frm_tete']}')");
$bd->execRequete("insert into temp_form values('frm_tete_opt1','{$_POST['frm_tete_opt1']}')");
}
if (isSet($_POST['frm_menu']))
{
$bd->execRequete("insert into temp_form values('frm_menu','{$_POST['frm_menu']}')");
$bd->execRequete("insert into temp_form values('frm_menu_opt1','{$_POST['frm_menu_opt1']}')");
}
if (isSet($_POST['frm_corps']))
{
$bd->execRequete("insert into temp_form values('frm_corps','{$_POST['frm_corps']}')");
$bd->execRequete("insert into temp_form values('frm_corps_opt1','{$_POST['frm_corps_opt1']}')");
if ($_POST['frm_corps_opt1'] = = '1')
$bd->execRequete("insert into temp_form values('frm_gen_opt1','{$_POST['frm_gen_opt1']}')");
}
if (isSet($_POST['frm_pied']))
{
$bd->execRequete("insert into temp_form values('frm_pied','{$_POST['frm_pied']}')");
$bd->execRequete("insert into temp_form values('frm_pied_opt1','{$_POST['frm_pied_opt1']}')");
}
// test
$resultat = $bd->execRequete("select * from temp_form");
while($ligne=$bd->objetSuivant($resultat))
{
echo "$ligne->nom = $ligne->valeur
Notice : Undefined index: frm_tete_opt1 in ...
Notice: Undefined index: frm_menu_opt1 in ...
Notice: Undefined index: frm_corps_opt1 in ...
Notice: Undefined index: frm_corps_opt1 in ...
Notice: Undefined index: frm_pied_opt1 in ...
projectname = nom de projet