2016-09-08 22 views
-1

私はテーブルを生成するスクリプトを持っています。ボタンを押すたびに行が生成されます。PHPを使ってデータベースに複数のテーブル行を挿入する方法

ユーザーがsubmitを押すと、すべての行を一度にデータベースに挿入したいと思います。私はそこに何かを試みたが、動かさなかった。私は1つの行だけを挿入するクエリがありますが、複数の行を挿入する方法を理解できません。ここで

は私のコードです:
は、あなたのフィールド応じてその店の後、カウント までindexsによって結果をループを実行してどのように多くの行最初

<?php 


echo'<!DOCTYPE html> 
<html> 
    <head> 
     <!-- <link rel="icon" type="image/png" href="images/logo4.png"/> --> 

     <link rel="stylesheet" type="text/css" href="css/home.css"> 

     <meta charset="utf-8"> 

     <meta content="noindex, nofollow" name="robots"> 

     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

     <meta name="viewport" content="width=device-width, initial-scale=1"> 

     <!--<link rel="stylesheet" href="styles.css"> --> 
    </head> 

<body> 
    <nav> 
      <ul class="fancyNav"> 
       <li><a href="#Instructions">Instructions</a></li> 
       <li><a href="#TeachersPage">Teachers Page</a></li> 
       <li><a href="#AddNewTable" onClick="genTab()">Add New Table</a></li> 
       <li><a href="#StudentsPage">Students Page</a></li> 
       <li><a href="#DataBase">Data Base</a></li> 
      </ul> 
    </nav> 

    <div id="content"></div> 

    <script> 
     var table = \'\'; //table from genTab 
     var rows = 1; //for genTab 
     var cols = 3; //for genTab 
     var rowCounter = 3; //starts from index 3 when add row on table 
     var nr = 2; // write the id at the number 
     var tableId = 1; 
     var indexTab=0; 


     function genTab() { 
      indexTab++; 
      table += \'<tr> <th class="window_cells" colspan="3"><form name="form[]" id="formId\'+indexTab+\'" class="window_form" action="home.php" method="post"><span>Coordinator: </span><input type="text" name="prof_name" placeholder="Prof. dr. First Name Last name" required/><input type="email" name="prof_email" placeholder="([email protected])" required/></form></th> </tr> <tr><td class="window_cells">Nr</td> <td class="window_cells">Theme</td> <td class="window_cells">Details</td> </tr>\'; 

      for(var r = 0; r < rows; r++) 
      { 
       table += \'<tr>\'; 
       for(var c = 0; c < cols; c++) 
       { 
        if(c==0) 
         table += \'<td class="window_cells">1</td>\'; 
       } 

       table += \'<td class="window_cells"> <textarea name="theme" rows="4" cols="30" form="formId\'+indexTab+\'"> </textarea> </td>\'; 
       table += \'<td class="window_cells"> <textarea name="detail" rows="4" cols="30" form="formId\'+indexTab+\'"> </textarea> </td>\'; 

       table += \'</tr> <tr> <th class="window_cells" colspan="3"> <form id="formTable\'+indexTab+\'"> <input type="button" value="Preview" /><input type="submit" name="submit" value="Submit" form="formId\'+indexTab+\'"/><input id="idRowButton" type="button" value="Add row" onClick="addRow(\'+indexTab+\')"/> </form> </th> </tr>\'; 
      }  
      document.getElementById("content").innerHTML+=\'<div name="div" class="window_wrap"> <table name="nameWTable" class="window" id="idWindowTable\' +indexTab+\'">\' + table + \'</table> </div>\'; 


      table = \'\'; 
     } 

     function addRow(intextablou) { 

       var windowTab = document.getElementById("idWindowTable"+intextablou); 
       var i = 0; 

       var roww = windowTab.insertRow(windowTab.rows.length-1); 
       var cell1 = roww.insertCell(0); 
       var cell2 = roww.insertCell(1); 
       var cell3 = roww.insertCell(2); 
       //cell1.innerHTML = nr++; 
       cell1.innerHTML = (windowTab.rows.length++)-3; 
       cell1.className = "window_cells"; 
       cell2.innerHTML = "<textarea name=\"theme\" rows=\"4\" cols=\"30\"> </textarea>"; 
       cell2.className = "window_cells"; 
       cell3.innerHTML = "<textarea name=\"detail\" rows=\"4\" cols=\"30\"> </textarea>"; 
       cell3.className = "window_cells"; 
     } 


     window.onload = function() { 
      genTab(); 
     } 

    </script> 
</body> 
</html>'; 

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

    $con = mysqli_connect('localhost', 'root', '', 'my_db'); 

    if(!$con) { 
     die("Cannot connect: " . mysql_error()); 
    } 

    $sqlC = "INSERT INTO coordinator (c_name, c_email) VALUES ('$_POST[prof_name]', '$_POST[prof_email]')"; 

    mysqli_query($con, $sqlC); 

    mysqli_close($con); 
} 

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

    $con = mysqli_connect('localhost', 'root', '', 'my_db'); 

    if(!$con) { 
     die("Cannot connect: " . mysql_error()); 
    } 

    $theme = mysqli_real_escape_string($con, $_POST['theme']); 

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

     foreach((array) $_POST['form[]'] as $theme) { 
      "INSERT INTO theme (theme) VALUES ('$theme')"; 
     } 

    } 

    else { 
     echo "nothing"; 
    } 

    $detail = mysqli_real_escape_string($con, $_POST['detail']); 

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

     foreach((array) $_POST["form[]"] as $detail) { 
      "INSERT INTO theme (t_detail) VALUES ('$detail')"; 
     } 
    } 

    else { 
     echo "nothing"; 
    } 

    //this works just to insert one row of data. 
    //$sqlT = "INSERT INTO theme (theme, t_detail) VALUES ('$_POST[theme]', '$_POST[detail]')"; 

    //mysqli_query($con, $sqlT); 

    mysqli_close($con); 
} 
?> 
+1

複数の行を挿入する方法を尋ねる必要がある場合は、**この唯一の質問に留意してください**他のクエリを使用せずに、JSコードなしでHTMLを使用しないでください。 –

+0

私はフィールド名がPHPコードで使用されると思ったので、私はすべてのコードを入れました。 –

+0

** IF **あなたの質問はSQLの挿入に関するものではなく、HTMLからPHPへのデータの送信についてです**これは唯一の質問です。 SQLのものなし –

答えて

1

あなたが数えるポスト値を持っている

for ($i= 0;$i<=count($_POST['form']);$i++) { 
       "INSERT INTO theme (theme) VALUES ('$_POST['theme'][$i]')"; 
      } 
+0

ありがとう、私は少しあなたのsintaxを変更し、今それが動作するだけでなく、インデックスを挿入..私はここに誰かが必要になる場合は正しいフォームに住んでいる ($ i = 0; $ i <= count ( '$ _POST [テーマ] [$ i]'、 '$ _POST [詳細]] [$ i] ] ')」; \t \t mysqli_query($ con、$ sqlT); } –

+0

私はあなたの問題を解決するための隙間を歓迎しています。必要に応じて何個の入力とフィールドを増やすことができますか? –

1

最初に

「送信」のPOSTを2回確認する必要はありません。それらをマージすることができます。 nを1にする。

私は変数としてフィールドを収集し、変数をループすることをお勧めします。これはほとんどやったことがありますが、いくつかの間違いがあります。 データベースに接続する必要があるのは1つだけです。スクリプトの先頭に置いておくことをお勧めします。

変更

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

    foreach((array) $_POST["form[]"] as $detail) { 
     "INSERT INTO theme (t_detail) VALUES ('$detail')"; 
    } 
} 

「形式[]」「フォーム」に変更し、簡単にするための変数に割り当て、あなたに何かを与えることはありません、同じフォーマットがで複製することができるのポスト "テーマも同様です。

+0

私はあなたのメソッドを試しましたが、あなたの答えに感謝します。しかし、#Abbasメソッドは動作します。 –

関連する問題