将表中的所有值发布到数据库

时间:2014-02-04 08:56:20

标签: php mysql sql

我想将class1的出勤存储到数据库中,但不插入所有值。

在我的表格页面

我使用MySql查询用他们的名字填充了class1的所有学生。然后包括用于标记出勤和写作评论的附加列。

一切正常,但只有最后的学生价值观被张贴在数据库中。

表格代码:

<html>
<head>
    connected to db    
<title>grade1</title>
</head>
<body>
<h1 align="center"><font color="white"><b>ATTENDANCE FOR GRADE1</font></b></h1>
2014-02-04 
<font color='orange' size=18px>class Id: grade1<br/>Teacher Id: 1<br>
location Id:502
</font> 
<table id="attendance" border="1"  cellspacing="1" cellpadding="1" >
<tr >
<th>studentid</th>
<th width="150">Flag</th>
<th>comments</th>
</tr>
connected to db

<form action=insertattend.php method=POST> 
<tr><td align=center><input align=center name=fname[] type=text readonly value=udhayan   
</td>
<td><select name=flag[]>
<option value=none >--Mark attendance--<option value=present>Present
<option value=absent>Absent</select></td>
<td><textarea name=comment[] ></textarea></td>
</tr>
<tr><td align=center><input align=center name=fname[] type=text readonly value=Wade  
     </td>
<td><select name=flag[]>
<option value=none >--Mark attendance--<option value=present>Present
<option  value=absent>Absent</select></td>
<td><textarea name=comment[] ></textarea>  </td></tr>
<tr><td><input type=submit name=submit value=submit></td></tr>    
</table>
</form> 
</body>
</html> 

我的PHP邮政编码是:

    Array
(
[0] => udhayan
[1] => Wade
)
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' 
cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: 
#cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: 
sql in C:\wamp\www\app34\teacher\insertattend.php on line <i>13</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' 
bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th     
align='left' bgcolor='#eeeeec'>Function</th><th align='left' 
bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' 
align='center'>0.0035</td><td bgcolor='#eeeeec' align='right'>375392</td><td 
bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\app34\teacher\insertattend.php'   
bgcolor='#eeeeec'>..\insertattend.php<b>:</b>0</td></tr>
</table></font>

Query was empty

3 个答案:

答案 0 :(得分:2)

问题是您的表单有重复的名称,因此只发送一个。为了缓解这个问题,发送了使用数组的字段名称,即..

<input align=center name=fname[] type=text  
        value=" .$row['fname']." </td>

注意更改 fanme现在是fname [] 现在您可以发送一组信息,而不是只发送一个字段,重复其他字段。

你也需要在while循环之前启动表单,正如另一位评论者指出的那样。

答案 1 :(得分:0)

因为您的<form>标记位于循环中。并且</form>在while循环之外。因此,当循环完成它的工作时,您的表单只包含最后学生的信息。此外,您还需要使用循环插入考勤详细信息。然后,您需要关闭您的<input>名称标记。

好的看一个示例。这是一个名为 student 的表,其中包含两个字段名称和ID。试一试。

<html>
<body>
<?php
    $con=mysql_connect('localhost','root','') or die('Connection error');
    mysql_select_db('test',$con);
    $result=mysql_query("SELECT * FROM  student");

 ?>
    <table>
        <form method='post' action='#'>

                <tr><td>Name</td><td>Attnd</td><td>Comment</td></tr>
                <?php
                    while($row=mysql_fetch_array($result))
                    {
                        echo "<tr><td>".$row['name']."</td>
                            <td>
                            <select name='status_".$row['id']."'>
                            <option value='present'>Present</option><option value='Absent'>absent</option>
                            </select>
                            </td>
                            <td><input type='text' name='comment_".$row['id']."'></td></tr>";
                    }
                 ?>

            <tr><td><input type='submit'></td></tr>
        </form>
    </table>
    <?php
        if(isset($_POST) )
        { 
            $result2=mysql_query("SELECT * FROM  student");

            while($row=mysql_fetch_array($result2))
            {
                $status=$_POST['status_'.$row['id']];
                $comment=$_POST['comment_'.$row['id']];
                echo $qry="INSERT INTO attendance( studentid, flag, comments) VALUES($row[id], $status, $comment)";
            }

        }
     ?>
</body>
</html>

答案 2 :(得分:0)

扩展布莱恩的答案并修改你的代码: -

<?php

if (isset($_POST['submit']))
{
    foreach($_POST['fname'] AS $key=>$fname)
    {
        $stfn = mysql_real_escape_string($_POST['fname'][$key]);
        $cmt = mysql_real_escape_string($_POST['comment'][$key]);
        $fg = mysql_real_escape_string($_POST['flag'][$key]);
        $sql = "INSERT INTO attendance( studentid, flag, comments) VALUES('$stfn', '$fg', '$cmt')";
        echo $sql."<br />";
        mysql_query ($sql) or die(mysql_error());
    }
}

echo "<br>";
echo "values inserted successfully!!!!";
?> 

请注意,布莱恩值得赞扬。enter code here