1

私はこれを2日間調査してきましたが、私の問題に対する適切な解決策をまだ見つけていません. 基本的に、jQuery を使用して複数のチェック ボックスに基づいて ID でデータベース行を「リンク」しようとしていますが、ここで少し注意が必要です。

バックグラウンド:

  • 各行の横にチェック ボックスがpositionsある HTML テーブル ( ) として表示されるデータベース テーブル ( ) があります。#ct
  • 一度に最大 4 つの行をチェックして、相互に「リンク」することができます (ただし、チェックできるボックスの数の制限について心配する必要はありません)。
  • SHOULDから行をリンクすると、列(PK) 、、、、、でpositions1 つの新しい行が作成されます。covered_positionsidlinked_id1linked_id2linked_id3linked_id4

すでに行われていること:

  • 各チェックボックスには、すでにidそれぞれの行に値が割り当てられていますpositions
  • ドロップダウン選択ボックスはすでにJavascript 関数をトリガーしていますctActions()

私が必要だと思うもの:

  • ctActions()次のようなものを使用して、チェックボックスの値の配列を作成します。

    var linked_ids = [];
    
    $("#ct input[type='checkbox']:checked").each(function() {
        linked_ids.push(this.value);
    });
    
  • データをエンコードして PHP に送信します。

    var linked_ids_json = JSON.stringify(linked_ids);
    
    $.post('link-positions.php', { linked_ids_json: linked_ids_json } );
    

  • 私の中でlink-positions.php

    // Get & explode array
    $array = json_decode($_POST['linked_ids_json']);
    
    // Test whether each value is set -- Not sure if needed
    $linked_id1 = (isset($array[0]) ? $array[0] : "");
    $linked_id2 = (isset($array[1]) ? $array[1] : "");
    $linked_id3 = (isset($array[2]) ? $array[2] : "");
    $linked_id4 = (isset($array[3]) ? $array[3] : "");
    
    include('../mysqli-connect.php');
    $conn = dbConnect();
    
    $sql = "INSERT INTO `covered_positions` (
        linked_id1,
        linked_id2,
        linked_id3,
        linked_id4)
        VALUES (?, ?, ?, ?)";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('iiii',
                $linked_id1,
                $linked_id2,
                $linked_id3,
                $linked_id4);
    
    $stmt->execute();
    
    $conn->close();
    

しかし、このすべての後、何も起こりません。私のコードにはいくつかの露骨なエラーがあると確信しているので、経験豊富な人のために投稿すると思いました。

アップデート

  • に修正$stmt->executeしまし$stmt->execute()たが、それでも問題は解決しません。
4

3 に答える 3

0

Solved by the OP. This was originally edited into the question body:

I found link-positions.php file to be in the wrong directory! The code below works just fine.

于 2013-02-15T19:10:33.370 に答える
0

AJAXリクエストが正常に完了した場合、またはエラーが発生した場合は、FireBugをチェックインしてください。

次に、サーバーで取得しているデータを確認します。print_r($_POST);

HTMLを考えると

<form id="form1">
    <input class="cb" type="checkbox" value="a" name="cbTest[]" />
    <input class="cb" type="checkbox" value="b" name="cbTest[]" />
    <input class="cb" type="checkbox" value="c" name="cbTest[]" />
    <input class="cb" type="checkbox" value="d" name="cbTest[]" />
</form>

を使用してチェック値を取得することをお勧めします

// if the form only contains checkboxes
var linked_ids_json = $('#form1').serialize();

// Or
var linked_ids_json = $('.cb').serialize();
$.ajax({
    type: 'post',
    url: 'link-positions.php',
    data: linked_ids_json,
    success: function () {
        // callback
    }
});

次のようなPHPで使用します。

$array = $_POST['linked_ids_json'];

次のような値にアクセスできるようになります$linked_id[0];

于 2013-02-15T18:58:59.167 に答える
0

私は問題を解決することができました。コードは正常に動作します。link-positions.php が間違ったディレクトリにあっただけです。コードが同様のタスクで他の人に役立つことを願っています.

于 2013-02-15T19:25:11.313 に答える