2010-11-02 106 views
1

我無法解決如何保存動態無線電按鈕的問題。PHP保存動態無線電按鈕

我有一個項目,我必須使用單選按鈕而不是複選框。

基本上,有一個數據庫表中包含「角色」......即管理員,用戶等等等等,這些都是可更新的,但用戶。

在一個特定的頁面,這些獲得吐出,並且旁邊有,像這樣一個單選按鈕:

<input name="wfa" type="radio" id="wfa" class="radio" value="1" /><label for="wfa">administrator</label> 

這些繼續下跌的一頁,爲儘可能多的項目有在數據庫中。

我需要做的是將選中的人保存到數據庫,但是動態我不能保存每個值到一個單獨的行.....任何幫助?

有人提到序列化,我看了一下php文檔,但它對我沒有多大意義。

乾杯。

+0

偏題:你知道'',對嗎? (鑑於您在其他地方不需要身份證。) – jensgram 2010-11-02 09:03:54

+0

您能詳細說明爲什麼您無法將每個值存儲在各個角色中?我會建議,作爲最靈活的解決方案? – Repox 2010-11-02 09:06:38

回答

0

我需要做的是保存檢查的數據庫,但是動態我不能保存每個值到一個單獨的行.....任何幫助嗎?

你爲什麼不能保持與user_idrole_idrolesusers之間的對照表? (讓我們把該表users_roles_mm。)

當表單提交,刪除當前用戶(user_id)所有行和插入行與(user_id, role_id)對每個檢查輸入(角色)。

這裏的想法是,每個表— rolesusers —是動態的,它們之間的引用也是動態的。即,users_roles_mm是高度動態的,因爲它既不取決於users表的結構也不取決於roles表。

+0

我不知道會有多少個單選按鈕,可能有10個,可能有100個......我需要一種方法來保存它們並將它們從數據庫中取出 – Chris 2010-11-02 09:09:29

+0

@Chris是的,而這正是可能的與[規範化](http://en.wikipedia.org/wiki/Database_normalization)結構。要讀出角色,您只需在參考表上加入「JOIN」。 – jensgram 2010-11-02 09:11:36

+0

看看我的答案,並將其與這個答案結合起來。您的按鈕的值是記錄ID。你將在post數組中擁有所有的ID,這就是你將再次查詢你的數據庫的方式。 – markus 2010-11-02 09:13:28

1

您通常會擁有(至少)三個數據庫表:users,rolesusers_roles(查找表)。 users表和roles表是不言自明的。 users_roles表可能會有兩列:user_idrole_id

因此,例如,他們將類似於如下:

Table: users 
id INT PRIMARY KEY 
username VARCHAR 
password VARCHAR 
... 

Table: roles 
id INT PRIMARY KEY 
name VARCHAR 

Table: users_roles 
user_id INT 
role_id INT 

有了這個數據庫結構,你就可以找出角色的用戶有類似以下的查詢:

SELECT 
    r.* 
FROM 
    users u, roles r, users_roles ur 
WHERE 
    u.id = ur.user_id 
AND 
    r.id = ur.role_id 

這將然後給你分配給當前用戶ID角色數組,你可以遍歷並輸出一個複選框(在我看來,一個更好的解決方案)。

$res = mysql_query($sql); 
while ($row = mysql_fetch_object($res)) { 
    printf('<label for="role_%d">%s</label>', $row->id, $row->name); 
    printf('<input type="checkbox" name="role[]" value="%1$d" id="role_%1$d" />', $row->id); 
} 

當您提交此,選中複選框屆時將可作爲一個陣列$_POST['roles']下,你可以遍歷並插入到users_roles表。

+0

嘿,感謝您的代碼,但我很好打印出來......基本上我需要幫助的是如何將它們存儲,如果它們是動態的......而且,它們還需要與單個名稱的單選按鈕,比如我的頂部的例子 – Chris 2010-11-02 09:38:22

+0

是的,他們這樣做。他們將被存儲在角色表中。但是,每個用戶都可以擁有多個角色。我提到如何將它們保存在我的最後一段中。 – 2010-11-02 09:53:51