-2

このネストされたループを機能させようとしforeachていますが、運がありませんでした。これが私のコードです。

$q = 0;
$arrayCountTwo = count($_POST['quantity']);
$i = 0;
$arrayCountThree = count($_POST['items']);
foreach ($_POST['items'] as $items) {
    $sql = '';
    foreach ($_POST['quantity'] as $quantity) {
        $q++;
        if ($q > $arrayCountTwo) {
            break;
        } else {
            $sql .= "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$items."','".$startDate."', '".$endDate."','".$quantity."')";
        }
        var_dump($sql);
    }   
}

$itemsそれは、各反復で配列の最初の値を私に与え続けます。これを修正するにはどうすればよいですか?

リクエストしたアレイは次のとおりです。

アイテム配列と数量配列を順番に並べます。

array(3) {
  [0]=>
  string(2) "11"
  [1]=>
  string(1) "6"
  [2]=>
  string(1) "2"
}

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "1"
}

毎回これを行う必要があります。

INSERT INTO `ts_table` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('11','2013-4-11', '2013-4-25','1')

INSERT INTO `ts_table` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('6','2013-4-11', '2013-4-25','2')
4

3 に答える 3

2

これはあなたが望むことをするはずです:

foreach ($_POST['items'] as $key => $items)
{
  $sql = "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$items."','".$startDate."','".$endDate."','".$_POST['quantity'][$key]."')";
  echo $sql . '<br>'; 
}
于 2013-03-26T21:36:24.123 に答える
0
for($i = 0, $iMax = min(count($_POST['items']), count($_POST['quantity'])); $i < $iMax; $i++)
{
    $sql .= "INSERT INTO `trade_show_reserved` (ProductID, DateReserved, DateReservedEnd, QuantityReserved) VALUES ('".$_POST['items'][$i]."','".$startDate."', '".$endDate."','".$_POST['quantity'][$i]."')";
}

あなたが必要とするものの線に沿っています。

于 2013-03-26T21:36:15.537 に答える
0

あなたはこのようなものを探していると思います。item[1]quantity[1]が関連していると仮定します。

foreach ($_POST['items'] as $idx => $item) {
    // get the quantity with the same index as the item
    // if it does not exist, default to zero
    $quantity = isset($_POST['quantity'][$idx]) ? $_POST['quantity'][$idx] : 0;

    // insert query... 

}
于 2013-03-26T21:37:05.453 に答える