2012-04-29 9 views
10

PHPを使用してHTMLページからラジオボタンの値を取得します。htmlのname属性に有効な値

<input type="radio" name="1.1" value="yes"> 
<input type="radio" name="1.1" value="no"> 

<input type="radio" name="1" value="yes"> 
<input type="radio" name="1" value="no"> 

結果は$ _POST [ '1']の値を返しますが、$ _POST [ '1.1']は何も返さないということです。私のHTMLは次のようになります私はHTML 4の仕様をチェックしました。名前属性の値は文字で始まりますが、1は文字ではありません。1.1では返されません。それとも、他に魔法が起きているのですか?私は最新バージョンのChromeを使用しています。ありがとう。

答えて

12

HTMLルールでは、name属性はCDATAタイプで宣言されています。 NAME型を持つと宣言された属性への参照とを混同しないでください。

PHPで$POST[...]を使用する場合、このPHPルールに注意する必要があります。「変数名のドットとスペースは下線に変換されます。たとえば<input name="a.b" />について$_REQUEST["a_b"]になります。」http://www.php.net/manual/en/language.variables.external.php

を参照してくださいので$_POST['1']であり、仕事をするように動作するはずですが、代わりに$_POST['1.1']のあなたは$_POST['1_1']を記述する必要があります。

+0

2番目のリンクを送信していただきありがとうございます! – Michael

+0

名前属性の対応するHTML5ドキュメントは次のとおりです。https://www.w3.org/TR/html5/forms.html#naming-form-controls:-name-attribute –

+0

@Jukka K. Korpela:What 「名前型を持つと宣言された属性への参照を混同しないでください」と書いても意味がありますか?違いはどこですか? – John

1

ハイフンのようなものにピリオドを代用してみてください。フォームとPHPコードの両方で。期間は一般にaのために使用されます。拡張子名で指定します。取得ヘッダーまたは送信ヘッダーのいずれかのパラメーターのキー名については、一般に特殊文字を使用して英数字のみを使用したいとします。ハイフン、アンダースコアなど必要な場合はいつでもURLエンコードを行うことができます。

0

これは2秒のGoogle検索で解決するのは簡単です。また、入力項目には数字ではなくテキストで名前を付ける必要があります。 。、!などの文字は使用しないでください。これは問題を引き起こす可能性があります。データの送信の詳細については、http://www.homeandlearn.co.uk/php/php4p10.html

関連する問題