2010-07-30 42 views
1

我正在使用此代碼從MySQL數據庫生成一組複選框。從MySQL生成的複選框列表中生成「已選中」複選框的問題

$connection=mysql_connect ("localhost", "foo", "bar") or die ("I cannot connect to the database."); 
$db=mysql_select_db ("database", $connection) or die (mysql_error()); 
$query = "SELECT type FROM typelist ORDER BY type ASC"; 
$sql_result = mysql_query($query, $connection) or die (mysql_error()); 
i=1; 
echo "<table valign="top"><tr><td>"; 
while ($row = mysql_fetch_array($sql_result)) { 
$type = $row["type"]; 
if ($i > 1 && $i % 26 == 0) 
echo '</td><td>'; 
else if ($i) 
echo ''; 
++$i; 
echo "<input style='font-size:10px;' name='type[]' type='checkbox' value='$type'><span style='color:#000;'>$type</span></input><br/>";} 
echo '</td></tr></table>'; 

我解析陣列和值作爲逗號分隔文本與這個代碼塊傾倒到數據庫中。

$allTypes = $_POST['allTypes']; 
    var_dump($allTypes); 


    $allStyles = ""; 


    foreach ($type as $style) { 

    $allTypes .= $style . ", "; 
    } 


    $allTypes = substr($allTypes, 0, -2); 

它很好用。 我的問題是在編輯記錄頁面上。我像之前一樣生成列表,但這次我需要將複選框項目「已選中」,如果該複選框項目已輸入到數據庫中。

如何修改第一個代碼塊來執行此操作?

+0

帶格式的代碼塊 – 2010-07-30 16:23:19

回答

0

你說的代碼生成複選框列表......好吧,不會生成複選框列表。沒有我的代碼在哪裏可以看到輸入標籤。我的問題是,你如何製作這些複選框?

+0

這是我第一次發佈到stackoverflow。回顯的HTML不顯示。這是複選框代碼的位置。你如何在減價中顯示一段代碼,使其顯示爲輸入。我用

它得到的代碼顯示在所有。 – KingMob 2010-07-30 16:43:27

0

你可以通過兩種方式(或更多,但它們是最簡單的方法)來實現。

Javascript方法:

如果您已經分配的ID給複選框,這是easyest方式。

 
    document.getElementById('idOfCheckbox').checked='checked'; 

PHP方法:

你必須修改字符串$行[類型]。在結束標記之前插入已檢查=「已檢查」。這可以通過多種方式完成,但是可以使用它(或者使用下面的代碼(雖然未經測試))。

 
    $row[type] = substr($row[type], 0, strlen($row[type]) - 2) . 'checked="checked" />'; 

但你沒有做很容易讓youself,但在數據庫中存儲的複選框...爲什麼你甚至做到這一點,它是沒有意義?

+0

我將複選框存儲在數據庫中是因爲它們中有大約30個,並且它們可以通過管理頁面進行編輯。輸入作業後,必須將值存儲在數據庫中,以便其他人可以檢索數據。看看上面的Javascript,如果數據從數據庫中獲取,那麼這是如何工作的? 感謝您的回覆 – KingMob 2010-08-12 10:48:14

+0

取決於您如何將複選框存儲在數據庫中。如果您將每個複選框存儲爲一個字符串,並將其輸出到一個html頁面,那麼您需要爲它們分配唯一的id。這很容易用php完成,如果你修改了一下,你可以使用上面提供的代碼。之後,你必須使用PHP創建一個JavaScript數組來告訴你的javascript函數要檢查哪個id。然後你遍歷數組並檢查複選框。我會親自去PHP解決方案!這是一個easyer;) – 2010-08-12 14:47:39