1

DHTMLX javascriptライブラリを使用して、グリッドをフォームに表示しています。私のユーザーはグリッドに何百もの製品を持っている可能性がありますが、私は彼らが価格を追加する行のみをキャプチャしています。次に、それらの行を他の情報とともにMySQLデータベースに追加する必要があります。

標準の$POST情報を取得し、それをPHPスクリプトで操作することは、これまでの私のスキルの限界についてです。助けが必要なのは、更新された行によって作成された配列です。$POSTにキャプチャされているものの例は次のとおりです。

Array
(
    [product] => 64
    [dept] => 000
    [submit] => Submit
    [gridbox_1_4] => 422
    [gridbox_64_4] => 534
    [gridbox_175_4] => 1234
    [gridbox_180_4] => 645
)

私は現在、基本的な$POST変数を次のようにキャプチャしています。

$itemcat  = filter($_POST['product']);         
$dept7    = filter($_POST['dept']);

私の質問は、グリッドボックス変数をキャプチャしてINSERTステートメントで使用できるようにするにはどうすればよいですか?変更される唯一の番号は、別のテーブルに挿入する必要がある製品のデータベースの主キーを表す中央の番号です。どういうわけか$POST変数を分解する必要があると思いますか?次に、次のようなものを使用してそれらを挿入するにはどうすればよいですか。

"INSERT INTO submissions 
                       (product_id, user_id,submission_id, sugg_price) 
                        VALUES ('" . $gridbox_id . "','" . $myid . "','NULL', '" . $sugg . "')";

今日のアレイに関するすべての読み物は、100フィートのビューからアレイがどのように機能するかをよく理解していますが、問題を具体的に解決する方法や、開始する方法さえも理解していません。コミュニティが私を正しい道に導いてくれることを願っています。

4

1 に答える 1

2

配列をループして、各キーで正規表現の一致実行できます$_POST

// PDO will make your life so much easier
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1', $user, $password);

// prepared statements are great - prepare once, use many
$stmt = $dbh->prepare('
  INSERT INTO submissions
    ( product_id,  user_id, submission_id,  sugg_price)
  VALUES
    (:product_id, :user_id, NULL         , :sugg_price)
');

// avoid SQL injection by passing your variables in as parameters
// see http://bobby-tables.com to understand why
$stmt->bindValue('user_id', $myid);

foreach ($_POST as $key => $val) {
  if (preg_match("/^gridbox_(\d+)_4$/", $key, $matches)) {
    $stmt->execute(array(
      ':product_id' => $matches[1],
      ':sugg_price' => $val
    ));
  }
}
于 2012-04-29T09:02:31.247 に答える