2011-10-21 11 views
2

私はアイテムを在庫に追加できるフォームを持っています。現在、一度に追加できるアイテムは1つだけです。フォームのスクリーンショットはhttp://i.imgur.com/SdFBv.pngです。しかし、私はこれを達成したい:http://i.imgur.com/PoUpV.png(<ちょうどスケッチ)は、1つのフォームを使用してデータベースに複数のレコードを追加しています。これらは、私の現在の形である:1つのフォームから複数のレコードをデータベースに追加しますか?

add.html:

<form action="add.php" method="POST"> 
    <select name="category" id="category"> 
     <option value="1">Caviar In Canned Jars</option> 
    </select> 
    <input id="name" name="name" type="text"> 
    <input id="size" name="size" type="text"> 
    <input id="sku" name="sku" type="text"> 
    <input id="price" name="price" type="text"> 
    <input value="Add" type="submit"> 
</form> 

add.php:

$result = mysql_query(" 
    INSERT INTO `items` (name, size, sku, price, category_id) 
    VALUES ('$_POST[name]', '$_POST[size]', '$_POST[sku]', '$_POST[price]', '$_POST[category]');"); 
    if (!$result) { 
     echo "Something went wrong!"; 
    } else { 
    echo '<script type="text/javascript"> 
       <!-- 
        window.location = "add.html" 
       //--> 
      </script>'; 
} 

どのように私はPHPとSQLを有する第2のスクリーンショットの機能を実現することができます(http:/ /i.imgur.com/PoUpV.png)?

P.S:私はそれがSQLインジェクションになりやすいだと承知しているが、それはHTMLだけビットはデータの配列すべき

+4

HTMLとPHPのコード全体が必要ですか、それとも自分でできるのですか?どの部分に助けが必要ですか? –

+0

PHPとSQLのみ、マークアップを書くことができます – tmrhmdv

+1

@Timur Wetherはローカルまたは公開していますが、特定の習慣を発達させるのは悪くありません...それは少数のキャラクターですが、公開ウェブサイトあなたはこのことを忘れています。 –

答えて

3

ステップ1.変更入力名の後の括弧を追加することによって、ローカルのWebサーバー上で実行しています。

<form action="add.php" method="POST"> 
    <!-- row 1 --> 
    <select name="category[]" id="category"> 
     <option value="1">Caviar In Canned Jars</option> 
    </select> 
    <input id="name" name="name[]" type="text"> 
    <input id="size" name="size[]" type="text"> 
    <input id="sku" name="sku[]" type="text"> 
    <input id="price" name="price[]" type="text"> 
    <!-- row 2 --> 
    <select name="category[]" id="category"> 
     <option value="1">Caviar In Canned Jars</option> 
    </select> 
    <input id="name" name="name[]" type="text"> 
    <input id="size" name="size[]" type="text"> 
    <input id="sku" name="sku[]" type="text"> 
    <input id="price" name="price[]" type="text"> 
    <!-- submit at bottom --> 
    <input value="Add" type="submit"> 
</form> 

提出するのは1つだけです。ポストは配列内のすべてのデータを保持します。

ステップ2.個々の挿入を行うか、大きなクエリを作成するかのいずれかでデータをループします。

この例では、5行のデータがあります。

for($i = 0; $i < 5; $i++) 
{ 
    $name = $_POST['name'][$i]; 
    $size = $_POST['size'][$i]; 
    ... 

    /* verify data, do sql escaping */ 

    $result = mysql_query(" 
     INSERT INTO `items` (name, size, sku, price, category_id) 
     VALUES ('$name', '$size', '$sku', '$price', '$category'); 
    "); 

    /* do result handling */ 
} 
関連する問題