2012-02-05 6 views
1

に二つの配列要素一つずつ挿入:上記入力値がカンマで区切られている場合、フォームの提出時私はそのようないくつかのHTMLフォーム有するDBテーブル

... 
<input type="text" id="color" name="color" value="" placeholder="Color" /> 
<input type="text" name="size" id="size" value="" placeholder="Size" /> 
... 

を、私は確認しています。

  • は、ユーザが入力したとしましょう、1色:黒と複数のサイズ:はい、そのようなことやっている場合

    42、43、44のコードは、異なるサイズが、すべてで3回の時間を挿入します他の値は、

  • は言うことができます同じになり、ユーザ入力、複数の色:黒、イエロー、1サイズ:42のコードは、異なる色で2倍の時間が挿入されますが、他のすべての値が同じ

あろう

質問

複数の色と複数のサイズを入力した場合はどうなりますか?色:ブラック、オレンジ、ブルー、サイズ:45,46,48のようなもの。コードは9回の時間を挿入する必要があります:黒 - 45、黒 - 46 ...青 - 48。どうしたらいいですか?ここ

は、PHPコードである:

public function add() { 
     if ($_POST['formID'] == 'add_form') { 
      $stmt = $this->db->prepare("INSERT INTO `items` 
      (`refno`, `color`, `size`, `qt`, `stackno`, `notes`, `price`, `add_date`) 
      VALUES (?, ?, ?, ?, ?, ?, ?, NOW())") or die($db->error); 
      $count = array(); 
      $size_arr = explode(",", $_POST['size']); 
      $color_arr = explode(",", $_POST['color']); 
      $count['size'] = count($size_arr); 
      $count['color'] = count($color_arr); 
      if ($count['color'] > 1) { 
       foreach ($color_arr as $color) { 
        $stmt->bind_param("ssiiisi", $_POST['refno'], $color, $_POST['size'], $_POST['qt'], $_POST['stackno'], $_POST['notes'], $_POST['price']) or die($stmt->error); 
        $stmt->execute() or die($stmt->error); 
       } 
      } 
      if ($count['size'] > 1) { 
       foreach ($size_arr as $size) { 
        $stmt->bind_param("ssiiisi", $_POST['refno'], $_POST['color'], $size, $_POST['qt'], $_POST['stackno'], $_POST['notes'], $_POST['price']) or die($stmt->error); 
        $stmt->execute() or die($stmt->error); 
       } 
      } else { 
       $stmt->bind_param("ssiiisi", $_POST['refno'], $_POST['color'], $_POST['size'], $_POST['qt'], $_POST['stackno'], $_POST['notes'], $_POST['price']) or die($stmt->error); 
       $stmt->execute() or die($stmt->error); 
      } 
      $stmt->close(); 
      $this->ajax->respond("nb", "Successfuly added", 1); 
     } 
    } 
+0

を動作する必要があり、私は単一の列に対して複数の値を挿入することは良い考えではないことを言います。最初の場所でテーブルを正規化してみてください。このようにしたい場合は、データをバインドするために2^nループを使用してください – WordsWorth

答えて

1

ループのための2つを有するの強引な方法

foreach ($color_arr as $color) { 
    foreach($size_arr as $size) { 
      // insert into the database 
    } 
} 
関連する問題