2011-08-03 37 views
0

我有一個帶有動態數量的複選框字段的HTML表單,所有這些都封裝在提交表單中。提交表單時,我想用PHP腳本遍歷每個複選框字段的值。同時,我必須保留與複選框字段關聯的特定ID,以便當我循環訪問腳本中的每個ID時,可以使用ID更新數據庫中的正確行。目前,我有:通過HTML文本框數組的PHP循環

<input checked="checked" name="attended_<?php echo($pid); ?>" 

我只是不知道如何繼續和訪問所有參加[]值從我的PHP腳本(並保持ID在同一時間)。我會使用像下面這樣的多維數組嗎?

<input checked="checked" name="attended[<?php echo($i); ?>][<?php echo($pid); ?>]; ?>" 

我很感激任何幫助。謝謝!

+1

的可能重複[PHP的:多個複選框(HTTP:// stackoverflow.com/questions/6751595/php-multiple-checkboxes),實際上,使用'參加[<?php echo $ pid;?>]'作爲名稱。 – Wrikken

回答

1

通常當我創建複選框時,我會在名稱中添加一個索引。通過這種方式,您可以遍歷提交代碼中的每個複選框。

<input type="checkbox" name="cbGroup[1]" value="y" /> 
<input type="checkbox" name="cbGroup[2]" value="y" /> 
<input type="checkbox" name="cbGroup[3]" value="y" /> 

,並在你的PHP

foreach($_POST['cbGroup'] as $index=>$checkbox) {} 

你要確保你的$ _ POST [「cbGroup」]設置雖然因爲如果該複選框未選中它不會是。

編輯:對不起,我應該學會完全閱讀這個問題:)我在PHP中使用多維數組和HTML輸入所有的時間,我認爲這是我會走的路。

+0

我確實使用多維數組來完成它的工作。然而棘手的部分是提交未被選中的複選框。爲此,我不得不在我的HTML中添加一個隱藏的複選框字段,其中包含「未選中」的值。這樣,我可以檢查我的PHP代碼中的「未選中」或「已選中」。謝謝! – littleK

+0

是的,我覺得它也很棘手。通常我的複選框是標誌是或否,所以當我清理我的代碼時,我總是會做$ _POST ['mycheckbox'] = isset($ _ POST ['mycheckbox'])? 'y':'n';以避免有空索引:)很高興我能幫忙! – Gazillion

1

也許你可以用一個隱藏字段,它是有點「關聯」與名稱對應的複選框做到這一點:

<input checked="checked" name="attended_<?php echo($i); ?>" 
<input type="hidden" name="attended_<?php echo($i); ?>_reference" value="<?php echo($pid); ?>" /> 

所以一段時間後,處理後的數據提交,你可以把引用再加上一些字符串操作。

1

可以說,這是從形式

<input checked="checked" name="attended[1]; ?>" 
<input checked="checked" name="attended[2]; ?>" 

<input checked="checked" name="attended[3]; ?>" 
<input checked="checked" name="attended[4]; ?>" 

<input checked="checked" name="hello[1]; ?>" 
<input checked="checked" name="hello[2]; ?>" 

數據,這是它會怎樣看作爲數組。不需要其作秀

// $k  =>  $v 
$attended[1]='blah blah'; 
$attended[2]='blah blah'; 
$attended[3]='blah blah'; 
$attended[4]='blah blah'; 

$hello[1]='blah blah'; 
$hello[2]='blah blah'; 

科學位

foreach($attended as $k=>$v){ 

$sql = "UPDATE mytable SET attended = '$v', hello = '{$hello[$k]}' where id = '$k'"; 
$query = mysql_query($sql) or die("Cannot query the database.<br />" . mysql_error()); 

} 

所有相關數據應具有相同的PID例如

<input checked="checked" name="attended[1]; ?>" 
<input checked="checked" name="hello[1]; ?>"