php - 从表单插入多个值

标签 php html mysql

我的表格包含三列,即 Roll_No、Name 和 Marks。我正在从数据库中获取 Roll_no 和 Name。老师只需根据相应学生的学号和姓名在表格中输入分数。我的编码如下所示,但只有最后输入的值才会为数据库中的所有学生设置。其插入侧板和卷轴的方式不正确,但会产生标记问题。我的标记数据库结构是 sid、roll_no、marks。

这是我的代码:请纠正我哪里出错了。

<form method="post" action="">
<table width="900" height="49" border="1" cellpadding="0" cellspacing="0" align="center" >
 <?php if(isset($_SESSION['response']))
      { 
echo "<tr><td colspan=\"7\">".$_SESSION['response']."</td></tr>";    unset($_SESSION['response']);} ?>

    <tr>
        <td align="center" width="20"> Roll No.</td>
        <td align="center" width="200"> Name</td>
        <td align="center" width="20"> Marks</td>
    </tr>
    <tr><input type="submit" name="next" value="submit" /></tr>
    <?php
    $sub = $_GET['sid'];

    $result = mysql_query("select * from student_record_by_faculty where sid='$sub'");
    $numrows = mysql_num_rows($result);
    if($numrows!=0)
{
        while($r=mysql_fetch_array($result))
        {
            $r2=mysql_fetch_array(mysql_query("select name from login where username='$r[reg_no]'"));


    ?>
    <tr>
    <td align="center"><?php echo $r['reg_no']; ?></td>
    <td align="center"><?php echo $r2['name']; ?></td>
    <td align="centre"><input type="number" name="marks" />
    <?php
    if(isset($_POST['next']))
    {
        $marks = $_POST['marks'];
        $q=mysql_query("INSERT INTO marks(sid, reg_no, first_sessional) VALUES('$sub','$r[reg_no]','".$_POST['marks']."')");
        echo $q;
        if($q)
        {       echo "marksheet updated you are being directed to marksheet page";
             sleep(2);
                header("Location:marksheet.php");
        }
    }
    ?>    
    </td></tr> 


  <?php                         
     }
}
    else
    {
   die('Error: ' . mysql_error());
}
//mysqli_close($con);*/
?> 

最佳答案

您的问题是您将插入逻辑包装在显示表行的循环内。这是完全错误的执行方式。我已经调整了您的代码,这是一个可以工作的版本。这也不是使用最佳实践的 100 个,我只是进行了调整,以便您可以了解所做的更改。

<form method="post" action="">
<table width="900" height="49" border="1" cellpadding="0" cellspacing="0" align="center" >
<?php 
    if(isset($_SESSION['response']))
    { 
        echo "<tr><td colspan=\"7\">".$_SESSION['response']."</td></tr>";    unset($_SESSION['response']);} ?>
<tr>
    <td align="center" width="20"> Roll No.</td>
    <td align="center" width="200"> Name</td>
    <td align="center" width="20"> Marks</td>
</tr>
<tr><td colspan='3'><input type="submit" name="next" value="submit" /></td></tr>
<?php
$sub = $_GET['sid'];

$result = mysql_query("select * from student_record_by_faculty where sid='" . mysql_real_escape_string($sub) . "'");
$numrows = mysql_num_rows($result);
if($numrows!=0)
{
    while(($r=mysql_fetch_array($result)) != FALSE)
    {
        $r2=mysql_fetch_array(mysql_query("select name from login where username='$r[reg_no]'"));
        ?>
<tr>
    <input type="hidden" name="reg_no[]" value="<?php echo $r['reg_no']; ?>" />
    <td align="center"><?php echo $r['reg_no']; ?></td>
    <td align="center"><?php echo $r2['name']; ?></td>
    <td align="center"><input type="number" name="marks[]" /></td>
</tr> 
<?php                         
    }
}    ?>
</table>
    <input type="hidden" name="subid" value="<?php echo $_GET['sid']; ?>" />
</form>

<?php 
//mysqli_close($con);*/


if(isset($_POST['next']))
{
    $marks = $_POST['marks'];
    $i=0;
    foreach ($marks as $mark) {
        $q=mysql_query("INSERT INTO marks(sid, reg_no, first_sessional) VALUES('" . $_GET['subid'] . "','" . $_POST['reg_no'][$i++] . "','" . $mark ."')");
    }
    header("Location:marksheet.php");

}


?> 

关于php - 从表单插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17140379/

相关文章:

php - 检测表格中的段落

php - 使用 PHP 和 MySql 匹配两个表中的重复条目

php - 无法在 PHP 中使用 Get 方法

php - 在 PHP 中访问对象成员

html - 对齐 HTML 列表

html - 需要 CSS 侧边栏高度来扩展内容

mysql - Elasticsearch PutMapping API : MapperParsingException Root type mapping not empty after parsing

php - 使用 PHP 将多个 HTML 字段更新到 MySQL 数据库中

html - 元素对齐有什么问题

mysql - Hibernate实体标注时无法创建表?