2012-03-20 18 views
0

PHPにもう一度気付き、次の更新コードがあります。これは機能しますが、挿入された最後のものについてのみですか?すべてのgritem idについて更新する必要があります。私は一意ではないフォームフィールドに[]を追加すると、PHPは配列として解析することができますが、それはまだ1つのフィールドとして認識されますか?私が持っているPHPで同じフォーム名で複数の行を更新する

マイHTML:

<input type="hidden" name="gritemid[]" value="<?PHP echo $row2['gritemid']; ?>"> 
<input type="text" name="grqty[]" id="grqty[]" value="" /> 

次のPHPコード

if(isset($_POST['storageloc'])) 
{ 
    //Set the GRQTY to subtract from the Orderqty on each item in the list if selected 
    // find out how many records there are to update 
    $size = count($_POST['gritemid']); 

    // start a loop in order to update each record 
    $i = 0; 
    while ($i < $size) { 
     // define each variable 
     $gritemid= $_POST['gritemid'][$i]; 
     $grqty= $_POST['grqty'][$i]; 
     if ($grqty > "0") { 
      // do the update and print out some info just to provide some visual feedback 
      $query = "UPDATE gr_items SET orderqty = orderqty - $grqty WHERE gritemid = '$gritemid' LIMIT 1"; 
      mysql_query($query) or die ("Error in query: $query"); 
     } 
     ++$i; 
    } 
    mysql_close(); 
+0

まず、print_r($ _ POST)を実行して、何を得ているかを確認します。明白なエラーは見られません。 id = "grqty []"は、IDが一意でなければならないため、削除する必要があります。しかし、あなたは何か起こっているjavascriptを持っていない限り、害を引き起こしてはいけません。 – Cerad

答えて

0

まず第一に、あなたは本当に、クエリにそれらをドロップする前に、あなたのポストのVARSのいくつかの検証/消毒を行う必要があります。あなたはprint($query);とするmysql_query()へお電話、あなたが期待するあなたが複数のクエリを参照してくださいかを交換する場合

// define each variable 
$gritemid = intval($_POST['gritemid'][$i]); 
$grqty = intval($_POST['grqty'][$i]); 

- VARSの両方として、あなたは私がintval()を使用することをお勧めし整数であるように見える使用していますか?

+0

それは、なぜ違いが単にintvalを追加していたのか分かりませんでした。他を推測しているImは文字列として見られ、無視されましたか? –

関連する問題