2013-08-27 24 views
0

我有這樣一個形式,有很多的複選框(沒有定義的選擇的選項和複選框的數數,可能有所不同)

<form action="myscript.php" method="post"> 
    <select name="myselect> 
     <option value="1">option1</option> 
     <option value="2">option2</option> 
     <option value="3">option3</option> 
     ... 
    </select> 
    <ul> 
     <li><input type="checkbox" name="aaa"/>something1</li> 
     <li><input type="checkbox" name="aab"/>something2</li> 
     <li><input type="checkbox" name="aac"/>something3</li> 
     <li><input type="checkbox" name="aad"/>something4</li> 
     ... 
    </ul> 
    <input type="submit" value="Submit"/> 
</form> 

我可以」牛逼弄清楚如何檢索所有的複選框,$ _ POST值,而「混合」與我的選擇值...

在類似的情況下,我只有大量的文本框,我這樣做的:

foreach($_POST as $key => $value) { 
    ... 
} 

但在這種情況下,我只有文本框...

+0

與foreach循環我可以檢索所有的值,因爲只有鍵值。在這種情況下,我需要從chexboxes值分離選擇值 – Doc

回答

4

複選框不會提交任何數據,除非他們有一個名稱。如果你給它們所有相同的名字,那麼它們將被任何理智的表單數據解析器分組。對於PHP(在其設計的特定部分用於邊緣案例的過度工程),名稱必須以[]結尾。

然後,您可以:

<li><input type="checkbox" name="foo[]" value="aaa"/></li> 
    <li><input type="checkbox" name="foo[]" value="aab"/></li> 
    <li><input type="checkbox" name="foo[]" value="aac"/></li> 
    <li><input type="checkbox" name="foo[]" value="aad"/></li> 

和:

foreach($_POST['foo'] as $value) { 
    ... 
} 

將循環在所有選中的複選框的所有值(未選中的複選框會不會成功,從而不會在數據)。

+0

我打錯了「價值」與「名稱」,抱歉...但我想你只是給我我想找的東西:D – Doc

2

您的複選框元素沒有name s。如果複選框未選中,名稱將不會顯示在$_POST中,如果選中該複選框,它將以指定值顯示。

<input type="checkbox" name="aaa" value="1"/> 

應該給你:

$_POST["aaa"] === "1";