2011-12-21 23 views
1

私は、ユーザがチェックする必要があるデータベースに格納されているサービスのリストを持っています。リストは定期的に更新されます。 彼らはそうのようなテーブル「サービス」に格納されています。php - チェックボックスの値をdbに格納して読み込みます。

|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

サイドノート:1つのフィールドに区切りリストとしてではなく、明確に要素を格納すると、データを操作して表示する方がはるかに簡単です。このような設定では、3つのテーブルが必要です。 People、Services、およびPeopleServices(これはPeopleのIDとServicesのIDの外部キーです)。 – David

+0

DBの入力構造はかなりばかげています。チェックボックスの値ごとに、TRUE(1)またはFALSE(0)の値で異なる列を作成する必要があります。あなたの人生ははるかに楽になります。 –

+0

@Navもっと具体的になりますか? – acelasiom

答えて

0

をそれをすべて台無しに。私はできることを願っています。それ以外の場合は、この投稿にコメントしてください...

より良いデータベース構造を作成する方がよいでしょう。

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

この構造では、各ユーザーに1つ以上のサービスを指定できます。 これで、tbl_assignに/からレコードを挿入または削除して、各ユーザーにサービスを許可または取り消す必要があります。

私はあなたがそれを行うことができれば幸いです。

+0

ありがとうございました。私の問題は十字チェックです。ユーザーが後でこれを編集したときに、このサービスをチェックしているかどうかを確認するにはどうすればよいですか? すべてのサービスを返信したいが、選択したサービスを確認する。 Thx! – acelasiom

+0

最初に、あなたには何人のユーザーがいるのか教えてください。 –

+0

2000人。私はどれくらいのサービスを知っていません。 – acelasiom

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].' '; 
    } 
} 
関連する問題