0

次のような 3 つの配列があります。

成分量は各行の最初の入力ボックス、測定値は各行の選択/ドロップダウン、成分名は各行の最後の入力ボックスです。ご覧のように、infiniteQTY 、individualNAME、および Measurementsは無限に存在する可能性があります。

写真

それらをphpスクリプトに送信すると、データは次のような配列になります。

IngredientQTY
(
  [0] => 5 //The first row 
  [1] => 5 //The next rows value
)   
Measurements
(
  [0] => Bunch  //The first row
  [1] => Bunch  //The next rows value
)   
IngredientName
(
  [0] => 5   //The first row
  [1] => 5   //The next rows value
)

ingredientNAMEingredientQTY、およびの3 つの列を持つ食材と呼ばれるテーブルにそれらをアップロードしようとしていますmeasurements

私のphpスクリプトでは、それらを多次元配列に結合しています。これは次のように割り当てられ$ingredientsROWます:

foreach($_POST as $key => $value) {
      $value = $this->input->post($key);
      $ingredientQTY = $this->input->post('ingredientQTY');
      $measurements = $this->input->post('measurements');
      $ingredientNAME = $this->input->post('ingredientNAME');
      $ingredientsROW[] = array($ingredientQTY, $measurements, $ingredientNAME);
      break;
}

私の質問は次のとおりです。フォーム要素の最初の行をすべてグループ化するにはどうすればよいですか (つまり、最初ingredientQTYの 、最初のmeasurementsドロップダウン、および最初の を意味し、ingredientNAMEそれらを行に挿入しますか?

私が考えることができる唯一の方法は、挿入する場所に1つの挿入を作成し、挿入ingredientQTYした行のIDを検索し、2つのmysql更新を使用して同じ行に入力することですが、より効率的な方法があると確信していますこれについて行くこと。

4

2 に答える 2

2

このようなものは機能しますか?

foreach($_POST['IngredientQTY'] as $index=>$qty)
    mysql_query("insert into ingredients ".
                 "set IngredientQTY='".addslashes($qty)."'".
                 ", measurements ='".addslashes($_POST['measurements'][$index])."'".
                 ", ingredientNAME ='".addslashes($_POST['ingredientNAME'][$index])."');
于 2013-03-27T16:19:40.263 に答える
1

データを繰り返し処理し、次のような配列を作成します。

for ($i = 0, $count = count($ingredientQTY); $i < $count; $i++) {
   $rows[] = array(
       'QTY'         => $ingredientQTY[$i],
       'measurement' =>  $measurements[$i],
       'name'        => $ingredientNAME[$i]
   );
}

この配列を使用すると、挿入を非常に簡単に作成し、行全体を挿入できます。

于 2013-03-27T16:12:18.163 に答える