2016-09-08 84 views
-1

我有一个脚本,为我生成一个表,每次我按下一个按钮,它会产生一个行。如何使用php插入多个表行到数据库

当用户按下提交我想插入到数据库中的所有行一次。我尝试了一些东西,但不工作。我在那里查询只插入一行,但我不知道如何插入多行。

这里是我的代码:

<?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

如果你不得不问问如何插入多行,请比**请保留这个唯一的问题**没有任何HTML的东西,没有其他查询,没有JS代码。 –

+0

我把所有的代码,因为我认为字段名称将在PHP代码中使用。 –

+0

**如果你的问题不是关于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 [form]'); $ i ++){sqlite =“INSERT INTO theme(theme,t_detail)VALUES('$ _POST [theme] [$ i]','$ _POST [detail] [$ i ]')“; \t \t mysqli_query($ con,$ sqlT); } –

+0

欢迎您在我的空地上梳理出您的问题。根据需要,您可以增加多少输入和字段,只要它的通用方式插入无限制的行 –

1

最初,

你不需要两次'提交'POST的检查,你可以合并他们我n一个。

我建议你收集字段作为一个变量,并通过变量循环,你几乎已经完成,但有一些错误。 你只需要一个连接到数据库,我建议把它留在脚本的顶部。

变化

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

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

的“形式[]”不会给你任何东西,将其更改为“形式”,并将其分配给一个变量为简单起见,相同的格式,可以用复制的岗位“主题“。

if(isset($_POST['form')) 
{ 
    $Forms = $_POST['form']; 
    foreach($Forms as $detail) { 
     $SQL = "INSERT INTO theme (t_detail) VALUES ('$detail')"; 
     mysqli_query($con, $SQL); 

     //You actually need to send this query to the database, at the 
     //moment it doesn't do anything 
    } 
} 
+0

我尝试过使用您的方法,感谢您的回答。但是#Abbas方法有效。 –

相关问题