如何使用单个提交按钮将多行插入新表

时间:2016-10-06 07:10:11

标签: php mysql

我尝试将多行插入到从其他表中获取的新表中,但问题是只插入了最后一行,而现在没有其他行正在插入,所以请告诉我缺少的问题

<?php
error_reporting(1);
session_start();
$s=$_SESSION['username'];


//connect database 
$con=mysql_connect("localhost","root","") or die(mysql_error());
	
// select database 
mysql_select_db("education",$con);
	  
	  
	 $date= date("Y/m/d");
//select all values from empInfo table
$data="SELECT * FROM student";

$val=mysql_query($data);
			
?>

<html>

<body>
<table>

</table>
        


<form action="submit.php" method="post" >
 <table>
<tr>

<th>Teacher name</th>
<th>Date</th>
<th>Roll No</th>
<th>Student name</th>
<th>Father name</th>
<th>Addhaar No</th>
<th>Status(P)</th>
<th>Status(A)</th>
<th>Status(L)</th>

</tr>
<?php while($r=mysql_fetch_array($val))
{?>
  
 
<tr style="border:2px solid black;">
<td><input type="text"  name="teacher" value="
<?php echo $s; ?>"></td>
<td><input type="text"  name="date" value="
<?php echo $date; ?>"></td>

<td ><input  name="roll_no" value="
<?php echo $r['roll_no']; ?>">

</td>
<td><input  name="student_name" value="
<?php  echo $r['student_name'] ?>">
</td>
<td><input  name="father_name" value="
<?php  echo $r['father_name'] ?>">
</td>
<td>
<input  name="addhaar_no" value="
<?php  echo $r['addhaar_no'] ?>">
</td>
<td>

<input type="checkbox" value="present" name="status"> Present
</td>
<td>
<input type="checkbox" name="status" value="absent">Absent
</td>

<td>
<input type="checkbox" name="status" value="leave">Leave

</td>


</tr>

</table>
   <?
}		

		
?>     
<input type="submit" name="submit" value="submit">


</form>

</body>

</html>

submit.php -

<?php

error_reporting(1);
$con=mysql_connect("localhost","root","") or die(mysql_error());
	
// select database 
mysql_select_db("education",$con);
	  
//get data from html form
$roll_no=$_POST['roll_no'];

$student_name=$_POST['student_name'];

$father_name=$_POST['father_name'];

$addhaar_no=$_POST['addhaar_no'];
$status=$_POST['status'];
	  
//Insert values in empInfo table with column name 

$query="INSERT INTO attandance
 VALUES ('', '$roll_no','$student_name','$father_name','$addhaar_no','$status'),

 VALUES ('', '$roll_no','$student_name','$father_name','$addhaar_no','$status')";


 echo $query;
 die();

mysql_query($query);			
			



?>

3 个答案:

答案 0 :(得分:0)

您需要为每个字段指定唯一名称。你可以做的是循环计数器,并添加字段的名称,使其独一无二。

样品:

$ctr = 0;

while($r=mysql_fetch_array($val)){

    echo "<input type="text"  name='teacher_".$ctr."'>";

$ctr++;
}

或者创建names数组,并在保存数据时循环遍历值。

while($r=mysql_fetch_array($val)){
    echo "<input type="text"  name='teacher[]'>";
}

答案 1 :(得分:0)

我认为你应该多学习一下PHP ......正如我在你的代码中看到的那样,你还没有理解PHP的基础知识。

1:通常,您不会像在第一个代码中那样混淆HTML和PHP。它只是令人困惑,而且后来读取代码真的太烦人了。

2:发布表单时,例如变量$ _POST ['student_name'];将只包含最后一行的值(您的问题)。所以为什么?因为您不能为变量分配多个值。或者至少,不是你尝试过的方式。对于这个问题,数组将是一个很好的关键。

3:请检查你的SQL语法......这就是为什么我说你不理解基础知识...... http://www.w3schools.com/sql/sql_insert.asp 为什么要重复你的价值观?您认为第二次变量将包含下一行的值?那只是假的。变量每次包含相同的值,只要您不为其赋值。

4:mysql被删除了。请改用mysqli或PDO。

我的提示:您需要拥有唯一的输入名称。只需看看PHP,/ while循环如何工作,再研究一下,再试一次。这并不难解决,但我认为如果我们不给你直接解决方案,你会学到更多东西。

答案 2 :(得分:0)

现在mysql被删除了。因此,您可以使用mysqli或PDO。 我现在可以使用PDO了。请仔细遵循以下代码:

<?php
$user = 'root';
$pass = '';
$dbh = new PDO('mysql:host=localhost;dbname=education', $user, $pass);

try {
    $select = $dbh->query('SELECT * from student');
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>
<html>
    <body>
        <form action="submit.php" method="post" >
            <table>
                <tr>
                    <th>Teacher name</th>
                    <th>Date</th>
                    <th>Roll No</th>
                    <th>Student name</th>
                    <th>Father name</th>
                    <th>Addhaar No</th>
                    <th>Status(P)</th>
                    <th>Status(A)</th>
                    <th>Status(L)</th>
                </tr>

                <?php
                foreach($select as $val) {
                ?>
                <tr style="border:2px solid black;">
                    <td><input type="text"  name="teacher" value="<?php echo $s; ?>"></td>
                    <td><input type="text"  name="date" value="<?php echo $date; ?>"></td>
                    <td><input  name="roll_no" value="<?php echo $r['roll_no']; ?>"></td>
                    <td><input  name="student_name" value="<?php  echo $r['student_name'] ?>"></td>
                    <td><input  name="father_name" value="<?php  echo $r['father_name'] ?>"></td>
                    <td><input  name="addhaar_no" value="<?php  echo $r['addhaar_no'] ?>"></td>
                    <td><input type="checkbox" value="present" name="status"> Present</td>
                    <td><input type="checkbox" name="status" value="absent">Absent</td>
                    <td><input type="checkbox" name="status" value="leave">Leave</td>
                </tr>
               <?php
                }           
                ?>   
            </table>  
            <input type="submit" name="submit" value="submit">
        </form>
    </body>
</html>

对于下面的submit.php代码

<?php
$user = 'root';
$pass = '';
$dbh = new PDO('mysql:host=localhost;dbname=education', $user, $pass);

$stmt = $dbh->prepare("INSERT INTO attandance (roll_no, student_name, father_name, addhaar_no, status) VALUES (?, ?, ?, ?, ?)");
$stmt->bindParam(1, $roll_no);
$stmt->bindParam(2, $student_name);
$stmt->bindParam(2, $father_name);
$stmt->bindParam(2, $addhaar_no);
$stmt->bindParam(2, $status);

//if you insert 2 time then
for($x=0; $x<2; $x++) {
    $roll_no = $_POST['roll_no'];
    $student_name = $_POST['student_name'];
    $father_name = $_POST['father_name'];
    $addhaar_no = $_POST['addhaar_no'];
    $status = $_POST['status'];

    $stmt->execute();
}
?>