2011-12-21 97 views
1

我有一個存儲在數據庫中的用戶需要檢查的服務列表。該列表會定期更新。 它們存儲在表中的「服務」,像這樣:php - 在數據庫中存儲複選框值並讀取它們

|id|service| 
| 1|foo | 
| 2|bar | 

當用戶選中複選框,我在「服務」小區ID值存儲從「人」的表格。

$services = mysql_real_escape_string(implode(',', $_POST['services'])); 
$update = mysql_query("UPDATE people SET services='$services' WHERE id='$id'") 
or die(mysql_error()); 

直到這裏一切工作正常。

現在,我想列出我所有的表格「服務」的服務,並與來自用戶單元「服務」的服務和用戶單元中的服務進行交叉檢查。

最終的回顯應該是這樣的。

<label>$service</label> 
<input name="services[]" type="checkbox" id="services[]" value="$id" $checked> 

有人可以幫我這個嗎? 謝謝!

P.S:我想這http://corpocrat.com/2009/05/24/how-to-store-and-retreive-checkbox-value-in-mysql-with-php/後,使其但我無法呼應的標籤,然後我擰這一切

+0

備註:如果您在單個字段中存儲元素而不是作爲分隔列表,則可能會發現更容易操作和顯示數據。對於這樣的設置,你需要三張表。 People,Services和PeopleServices(它們只是People的id和Services的id)的外鍵。 – David 2011-12-21 20:08:47

+0

你的DB輸入結構很愚蠢。您應該爲TRUE(1)或FALSE(0)值爲每個複選框的值創建不同的列。這會讓你的生活更輕鬆.. – 2011-12-21 20:12:23

+0

@Nav你能更具體嗎? – acelasiom 2011-12-21 20:37:43

回答

0

我不知道我能得到你的意思與否。我希望我能。否則,請發表評論...

您最好創建一個更好的數據庫結構。

tbl_users     tbl_services    tbl_assign 
+-------------+   +-------------+    +----------------+ 
| uid | name |   | sid | title |    | id | uid | sid | 
+-------------+   +-------------+    +----------------+ 
|  |  |   |  |  |    | |  |  | 
+-------------+   +-------------+    +----------------+ 

在此結構中,您可以爲每個用戶指定一個或多個服務。 現在,您需要插入或刪除tbl_assign中的記錄以向每個用戶授予或撤銷服務。

我希望你能做到。

+0

謝謝。我的問題是交叉檢查。如何查看用戶是否在用戶稍後編輯時檢查了此服務? 我想返回所有的服務,但選擇一個要檢查的服務。 Thx! – acelasiom 2011-12-21 20:45:40

+0

首先,告訴我你有多少用戶? – 2011-12-21 20:53:30

+0

2000人。我不知道有多少服務。 – acelasiom 2011-12-21 21:00:23

0

我終於做到了。 也許這不是我的問題的最佳答案,但勝於無。

$servicii_user = mysql_query("SELECT servicii FROM people WHERE id='$id'") 
or die(mysql_error()); 
$ss = mysql_fetch_array($servicii_user); 
$servicii_selectate = array(); 
$servicii_selectate= explode(',',$ss['servicii']); 



$result = mysql_query("SELECT * FROM servicii") 
or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) { 
    if(in_array($row[0], $servicii_selectate)){ 
     echo '<input name="servicii[]" type="checkbox" value="'.$row[0].'" CHECKED>'.$row[1].' '; 
    }else{ 
     echo '<input name="servicii[]" type="checkbox" value="'.$row[0].'">'.$row[1].' '; 
    } 
} 
相關問題