2011-04-19 156 views
3

我想讓我的複選框值保存在我的動態創建的輸入上,並且我失敗了。是的,我已經在線閱讀了十幾篇或更多的教程,但是我無法找到滿足動態複選框列表的一個...請設置我的海峽!使用動態創建的複選框和數組維護複選框值

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="checkboxForm"> 
<?php 
$checkbox[] = array(); 
while($row = mysql_fetch_array($result)) { 

$checked = isset($_POST['checkbox']) ? " checked" : ""; 

echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "'  $checked /> "; 
echo $row['first_name']; 
echo "<hr />"; 
//print_r($_POST['checkbox']); 
} 

if(isset($_POST['checkbox']) && !empty($_POST['checkbox'])) { 
foreach($_POST['checkbox'] as $checkbox){ 
echo $checkbox . "<br />"; 
} } 
?> 
+0

可以顯示發佈前你生成html? – 2011-04-19 05:21:11

+0

請檢查更新! – 2011-04-19 05:46:21

回答

6

在這裏你走了!

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="checkboxForm"> 
<?php 

    $chvalues = array(); 

    if(isset($_POST['checkbox'])) 
    { 
     foreach($_POST['checkbox'] as $ch => $value) 
     { 
      $chvalues[] = $value; 
     } 
    } 

    while($row = mysql_fetch_array($result)) 
     if(in_array($row['first_name'], $chvalues)) 
     { 
      echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "' checked='checked'/> "; 
     } 
     else 
     { 
      echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "'/> "; 
     }   
     echo $row['first_name']; 
     echo "<hr />";  

    } 

    if(isset($_POST['checkbox'])) { 
     foreach($_POST['checkbox'] as $checkbox => $val){ 
      echo $checkbox .':'.$val."<br />"; 
    } 
?> 
</form> 
+0

我看到你在做什麼,但問題的一部分是需要保留的值作爲first_name值。我不能使用計數器號碼。 – OldWest 2011-04-19 05:26:36

+0

@OldWest,這個想法幾乎是一樣的,你可以發佈你生成的HTML代碼?也許我們可以從那裏得到一些線索? – 2011-04-19 05:27:59

+0

<形式行動= 「/ PHP/checkboxes_save_value.php」 方法= 「POST」 名稱= 「checkboxForm」> 陣列 ( [0] =>麥克 [1] => Alycia ) <輸入名稱= 「複選框[]」 類型= '複選框' 值= '麥克'/>麥克


陣列 ( [0] =>麥克 [1] => Alycia ) <輸入名稱= 「複選框[]」 類型= 'checkbox'value ='Alycia'/> Alycia
Mike
Alycia
我對結果執行print_r操作。 – OldWest 2011-04-19 05:34:13

0
$checked = isset($_POST['checkbox']) && in_array($row['first_name'], $_POST['checkbox']) ? " checked" : ""; 
+0

Gaurav,我會在早上嘗試這個。我喜歡這種方法,它比我原來的代碼少得多。 – OldWest 2011-04-19 06:11:46