我想将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
答案 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