php - 在db中存储复选框值并读取它们

时间:2011-12-21 20:04:43

标签: php mysql arrays checkbox

我有一个存储在数据库中的服务列表,用户需要检查。该列表定期更新。 它们存储在表“服务”中,如下所示:

|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());

直到这里一切正常。

现在,我想从表“services”列出我的所有服务,并与用户单元“services”中的服务和用户单元格中的服务进行交叉检查。

最终的回声应该是这样的。

<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/之后制作它,但我无法回应标签,然后我把它搞砸了

2 个答案:

答案 0 :(得分:0)

我不确定我能否理解你的意思。我希望我能。否则,请评论此帖...

您最好创建一个更好的数据库结构。

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

在此结构中,您可以为每个用户指定一项或多项服务。 现在,您需要在tbl_assign中插入或删除记录,以向每个用户授予或撤消服务。

我希望你能做到。

答案 1 :(得分: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].' ';
    }
} 
相关问题