0

この質問に対する答えを広く検索しましたが、何も見つかりませんでした。

各行が新しいレコードである php と javascript を使用して、html テーブルの内容を mysql データベースに追加したいと考えています。

以下にテーブルの例を示します。

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">ID</th>
    <th scope="col">NAME</th>
    <th scope="col">EMAIL</th>

  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="20" /></td>
    <td><input name="NAME" type="text" value="Peter" /></td>
    <td><input name="EMAIL" type="text" value="peter@gmail.com" /></td>
  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="21" /></td>
    <td><input name="NAME" type="text" value="Jhon" /></td>
    <td><input name="EMAIL" type="text" value="jhon@yahoo.com" /></td>
  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="22" /></td>
    <td><input name="NAME" type="text" value="Mike" /></td>
    <td><input name="EMAIL" type="text" value="mike@hotmail.com" /></td>
  </tr>
</table>

<input name="Btn" type="button" onclick="addRecords()" value="Add"/>
</form>

そして、私が試したJavaScriptのサンプル:

<script>
function addRecords()
{
    var row = document.getElementById("row")


    for (x in row)
    {
        $.post="<? $insertSQL = sprintf("INSERT INTO accounts (acc_id, acc_name, acc_email) VALUES (%s, %s)",
                       GetSQLValueString($_POST['ID'], "integer"),
                       GetSQLValueString($_POST['NAME'], "text"),
                       GetSQLValueString($_POST['EMAIL'], "text"));

  mysql_select_db($database_G3CSAdminControlPanel, $G3CSAdminControlPanel);
  $Result1 = mysql_query($insertSQL, $G3CSAdminControlPanel) or die(mysql_error()); ?>"
    }
}

</script>

上記が行うことは、テーブルの最後のレコードのみをデータベースに追加することです。私の問題はphpコードにあり、各入力は行だけでなく配列にも配置する必要があると思いますが、その方法はわかりません。

UPDATE 私が示したコードは、私がやろうとしていることのほんの一例です。実際の Web ページでテーブルを作成するスクリプトを使用しているため、行の ID は同じままにする必要があります。

基本的に私は次のことをしたいのですが、PHPで:

<script>
function addRecords()
{
    var row = document.getElementById("row");
    var n = 0;
    var q = 0;
    for (x in "row")
    {
        n++;
        var code = document.getElementsByName("ID")[q].value;
        var desc = document.getElementsByName("NAME")[q].value;
        var price = document.getElementsByName("EMAIL")[q].value;
        alert(code + ' ' + desc + ' ' + price);
        q++;
    }
    alert('There is ' + n + ' rows in the table');
}
</script>

スクリプトは、各行の入力の値を返します。PHPで同様のことをしたいのですが、各行の入力からの値をデータベーステーブルのレコードとして追加します。

そのため、行ごとに Javascript アラートを実行する代わりに、PHP スクリプトを実行してその行のレコードを挿入する必要があります。

4

4 に答える 4

0

次のように、同じ ID を持つ要素が複数ある場合:

 <tr id="row"> 

次に関数:

document.getElementById("row")

それらの最後の 1 つだけを考慮します (これはブラウザーによって異なります)。

すべての要素を確実に取得するには、異なる ID を指定する必要があります。お気に入り

<tr id="row1">...
...
<tr id="row2">...
...
<tr id="row3">...
...

幸運を!

于 2012-04-19T14:30:41.700 に答える
0

各行を一意に識別する必要があります (ID0、EMAIL0 など)。これは、PHP またはスクリプトを使用してテーブルを構築するときに簡単に実行できます。次に、PHP フォーム コードで $_GET に対して foreach を実行し、それぞれを読み取ります。あなたが今持っている方法では、後続の各ID、EMAILなどは前のものを上書きしています。

于 2012-04-19T14:16:04.777 に答える
0

挿入するフィールドは 3 つあります。そして、それぞれ数があります。したがって、入力フィールドの名前を html 配列として使用する必要があります。そうしないと、フォームの投稿時に、最後のフィールドが前のフィールドを上書きします。

具体的には、マークアップを次のように編集します。

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">ID</th>
    <th scope="col">NAME</th>
    <th scope="col">EMAIL</th>
  </tr>
  <tr id="row1">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
  <tr id="row2">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
  <tr id="row3">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
</table>
于 2012-04-19T14:18:28.390 に答える