2012-04-29 5 views
1

私はDHTMLX javascriptライブラリを使ってフォームにグリッドを表示しています。私のユーザーはグリッド内に何百もの製品を持つことができましたが、価格を追加する行だけをキャプチャしています。私はそれらの行をいくつかの他の情報と共にMySQLデータベースに追加する必要があります。グリッド配列からDBを更新する

標準の$ 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']); 

私の質問は、私はgridbox変数を私ができるように、キャプチャしない方法ですそれらをINSERT文で使用しますか?変更される唯一の数字は、別のテーブルに挿入する必要のある製品のデータベースの主キーを表す中間の数字です。私は何とか$ POST変数を爆発させる必要があると仮定していますか?それから私はのようなものを使用してそれらを挿入しますか:

アレイ上の私の読書のすべての今日は、私に彼らは100フィートビューからどのように働くかをよく理解して与えているではなく、どのように具体的にどのようにしても私の問題を解決したりするために
"INSERT INTO submissions 
         (product_id, user_id,submission_id, sugg_price) 
         VALUES ('" . $gridbox_id . "','" . $myid . "','NULL', '" . $sugg . "')"; 

開始。私はコミュニティが正しい道を私に送ってくれることを願っています。

答えて

2

あなたは$_POSTアレイ全体loopとは、各キーのregular expression match実行することができます。ちょうど*実際の例なし*プリペアドステートメントを言及するため

// 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 
    )); 
    } 
} 
+0

-1を、唯一の愚かな役に立たない漫画代わり –

+0

@YourCommonSense:私でしたしかし、それらを説明したサイトへのリンク。今すぐ例を含めるように更新されました。それ以外に、答えは依然としてOPの質問に完全に対処しているということを考えると、私は実際には* downvote *に値するとは思わない? – eggyal

+0

はい、これが理由です。 –

関連する問題