2011-11-22 18 views
0

人が注文できるWebサイトを構築しています。これは一度に複数の行を挿入しなければならなかったので、私は失われています。私はこれを実行するためにFORループが必要であることを知っていますが、ループを構築する方法については分かりません。私はjQueryでPHP、MySQL(明らかに)を使用しています。私は、クライアントが別の項目を選択できるようにフォームに新しい選択ボックスを.append()するためにjQueryを使用しています。PHPとMySQLで複数の行を挿入する

私は通常、ユーザーがデータベースに挿入できるように自分のコードを構築しています。私の質問は、どのように、どこに複数行をまとめて挿入することなく一度に送信できるようにループを挿入するかということです。何かが助けになる、ありがとう。

<?php 

if (isset($_POST['submit'])) { 

    if (!$_POST['col1'] | !$_POST['col2'] | !$_POST['col3']) { die ("error"); } 

    if (!get_magic_quotes_gpc()) { 
     $_POST['col1'] = addslashes ($_POST['col1']); 
     $_POST['col2'] = addslashes ($_POST['col2']); 
     $_POST['col3'] = addslashes ($_POST['col3']); 
    } 

    $insert = "insert into table (col1, col2, col3) values ('".$_POST['col1']."', '".$_POST['col2']."', '".$_POST['col3']."')"; 
    mysql_query ($insert); 

} else { 
    ?> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
<table> 
    <tr> 
    <td><input type="text" name="col1"></td> 
    <td><input type="text" name="col2"></td> 
    <td><input type="text" name="col3"></td> 

//I'm using jQuery .append() to insert more text boxes with names (col1, col2, col3) here 

    </tr> 
</table> 
<input type="submit" name="submit" value="Submit"> 
</form> 

    <?php 
} 
?> 

ループを配置する場所を私の混乱は...私はそれがループのためにする必要があります知っているが、私は1つが仕事を得ることができませんでした。助けてくれてありがとう。

+0

SQLインジェクションの脆弱性もチェックしてください。 –

+0

私はこのページの「関連する」セクションに気付きましたか? –

答えて

2

入力に固有の名前を付けるようにしてください。あなたがループに使用してPHPを経由して列にアクセスすることができます

<input type="text" name="column1[]" /> 
<input type="text" name="column2[]" /> 
<input type="text" name="column3[]" /> 

その方法:しかし、あなたは、この(例えばhereを参照)などのすべての列に名前を付けることができます。 (:hereをも参照)

for($i = 0; $i < $n; $i++) // If you have $n rows 
{ 
    echo($_POST["column1"][$i]); 
    echo($_POST["column2"][$i]); 
    echo($_POST["column3"][$i]); 
} 

は、次の構文を使用してMySQLデータベースに複数の行を挿入します。

INSERT INTO 
    tbl_name (column1, column2, column3) 
VALUES 
    (1,2,3), 
    (4,5,6), 
    (7,8,9); 

これで、SQLクエリを作成するように設定する必要があります。

+0

恐ろしい!ありがとう、これは私がやろうとしていたことです。 – BRHETT

+0

これが役に立った場合は、アップして回答として受け入れてください。 –

0

最初に避けたいのは、同じ名前のセットを使用することです。それらにrowNcolMという名前をつけ、ポスト変数をチェックするところでそれらを抽出することができます。

関連する問題