0

私は、ユーザーがさまざまな襟のタイプを選択できるようにする以下のフォームを持っています。各チェックボックスには、フォームの送信時に送信されるカラーIDがあります。

襟の種類

ユーザーが最初の3つのカラーを選択したと仮定します。このようになります。

襟の種類

次に、insertステートメントを使用してこれらの3つの襟を襟のテーブルに追加します。その後、ユーザーが必要に応じて、襟のタイプのチェックを外すか、新しいものを追加することができます。

以下のように、ユーザーが2番目のタイプのチェックを外したと仮定します。

襟の種類

ここで、2番目のカラータイプを参照する特定の行をテーブルから削除する必要があります。下の画像はテーブルの構造を示しています。

ここに画像の説明を入力してください

今私の問題は、ユーザーが変更を加えた場合(新しいチェックボックスをオンまたはオフにした場合)にフォームが送信されるときです。行を挿入または削除するにはどうすればよいですか?チェックボックスごとにSELECTステートメントを記述して、そのカラーIDが存在するかどうかを確認する必要がありますか?

与えられたロジックに従って自分でコードを作成できるので、ロジックを手伝ってください。

ありがとう

4

3 に答える 3

2

チェックボックスごとにSELECTステートメントを記述して、そのカラーIDが存在するかどうかを確認する必要がありますか?

データベースはそのIDが存在するかどうかを教えてくれるので、データベースもそうします。

ただし、2つのクエリを実行する必要があります。1つは削除用、もう1つは挿入用です。

于 2012-10-22T06:16:29.680 に答える
0

以前のエントリを削除してそのIDを使用してそのユーザーの新しい行を作成するよりも、特定のユーザーのidまたはproduct_idを保存できるかどうかを考えます。または、IDを使用してその行を更新します。

于 2012-10-22T06:21:58.363 に答える
0

私は2つの解決策があると思います:

  1. テーブルからすべてのIDを選択し、チェックボックスが選択されているかどうかを確認する必要があります。

    $array = array();
    $sql = mysql_query("SELECT collor_id FROM my_table WHERE product_id='x'");
    while($row = mysql_fetch_array($sql)) {
        array_push($array, $row['collor_id']);
    }
    
    if(count($_POST['my_collors']) > 0) {
        foreach($_POST['my_collors'] as $value) {
            if(!in_array($value, $array)) {
                 // insert it into db
                 // unset the array value for this collor id
            } else {
             // unset the array value for this collor id
            }
        }
    }
    
    // foreach remained array value delete them from the db
    
  2. 選択した製品のテーブルからエントリを削除*してから、新しい値を挿入することができます

于 2012-10-22T06:25:11.983 に答える