我想参加特定的课程并将数值存储在数据库中。 我使用 INNER JOIN 从两个表中获取数据,并在表单名称出席时使用这些表值。
现在,一旦我使用表单出席我希望将该值存储在我的数据库中,所以我创建了另一个文件名insertattendance.php。
问题是它显示了未定义的索引变量。 ex.undefined index classid ..etc 所以我尝试在 *中使用它if(isset($ _ POST ['submit'])* 没有错误但是没有发布值。
我怀疑是因为我使用旧表的值是显示错误吗? 告诉我我该怎么做?
attendance.php
<html>
<head>
<title>grade1</title>
</head>
<body>
<table border="1" cellspacing="1" cellpadding="1" width="200" height="200">
<tr>
<th>classid</th>
<th>studentid</th>
<th>teacherid</th>
<th>locid</th>
<th>date</th>
<th>flag</th>
<th>comments</th>
</tr>
<?php
include 'conn.php';
$query = "(SELECT a.classid, a.fname, b.teacherid, c.locid
FROM class_master c JOIN student_master a
ON c.classid = a.classid JOIN teacher_link b
ON c.classid = b.classid
WHERE c.classid = 'grade1' )";
$result = mysql_query($query);
$ I = 1;
while( $row = mysql_fetch_array($result))
{
echo "<form action=insertattend.php method=POST>";
echo "<tr>";
echo "<td>" . "<input name=classid[$i] type=text value=" .$row['classid']." </td>";
echo "<td>" . "<input name=fname[$i] type=text value=" .$row['fname']." </td>";
echo "<td>" . "<input name=teacherid[$i] type=number value="
.$row['teacherid']." </td>";
echo "<td>" . "<input type=number name=locid[$i] value=" .$row['locid']." </td>";
echo "<td>" . "<input name=date[$i] type=date value='date'></td>";
echo "<td>" . "<input type=radio id=attend name=attend[$i] value='present'>";?>P
<?php echo "<input type=radio id=attend name=attend[$i] value='absent'>";?>A
<?php
echo"</td>";
echo "<td><input name=comment type=comment[$i] row=3 column=5></td>";
echo "</tr>";
$i++;
}
?>
</table>
<input type="submit" value="submit">
</form>
</body>
</html>
这是我的Insertattendance.php代码
<?php
if (isset($_POST['submit'])){
include 'conn.php';
$clnm = mysql_real_escape_string($_POST['classid']);
$stfn = mysql_real_escape_string($_POST['fname']);
$dt = mysql_real_escape_string($_POST['date']);
$fg = mysql_real_escape_string($_POST['attend']);
$tid = mysql_real_escape_string($_POST['teacherid']);
$lid = mysql_real_escape_string($_POST['locid']);
$cmt = mysql_real_escape_string($_POST['comment']);
$inquery =("INSERT INTO attendance(classid, studentid, dateid, flag, teacherid,
locid, comments) VALUES('$clnm', '$stfn', '$dt', '$fg', '$tid', '$lid', '$cmt')");
mysql_query($inquery, $dbconnection);
echo "<br>";
echo "values inserted successfully!!!!";
mysql_close($dbconnection);
};
?>
答案 0 :(得分:1)
修正您的html
代码:
<html>
<head>
<title>grade1</title>
</head>
<body>
<table border="1" cellspacing="1" cellpadding="1" width="200" height="200">
<tr>
<th>classid</th>
<th>studentid</th>
<th>teacherid</th>
<th>locid</th>
<th>date</th>
<th>flag</th>
<th>comments</th>
</tr>
<?php
include 'conn.php';
$query = "(SELECT a.classid, a.fname, b.teacherid, c.locid
FROM class_master c JOIN student_master a
ON c.classid = a.classid JOIN teacher_link b
ON c.classid = b.classid
WHERE c.classid = 'grade1' )";
$result = mysql_query($query);
while( $row = mysql_fetch_array($result))
{
echo "<form action='insertattend.php' method='POST'>";
echo "<tr>";
echo "<td>" . "<input name=classid type=text value=" .$row['classid']." ></td>";
echo "<td>" . "<input name=fname type=text value=" .$row['fname']." ></td>";
echo "<td>" . "<input name=teacherid type=number value=" .$row['teacherid']." ></td>";
echo "<td>" . "<input type=number name=locid value=" .$row['locid']." ></td>";
echo "<td>" . "<input name=date type=date value='date'></td>";
echo "<td>" . "<input type=radio id=attend name=attend value='present'>";?>P
<?php echo "<input type=radio id=attend name=attend value='absent'>";?>A
<?php
echo"</td>";
echo "<td><input name=comment type=comment row=3 column=5></td>";
echo "</tr>";
//echo "</form>";
?>
<input type="submit" name="submit" value="submit">
</form>
<?php } ?>
<!--<form action="insertattend.php">-->
</table>
</body>
</html>
答案 1 :(得分:0)
这些更改应该在 attendance.php
代码
首先将echo "<form action=insertattend.php method=POST>";
移出您的while
实际上,您正在关闭提交按钮前的 <form>
标记。
echo "</tr>";
echo "</form>"; //<--- Comment or Remove this line
此外,也删除此行(因为您已在while循环上方定义)
<form action="insertattend.php"> <!-- Remove this line -->
<input type="submit" value="submit">
</form>
另一件事是.. echo "<td><input name=comment type=comment row=3 column=5></td>";
我不认为有type=comment
的内容会将其替换为type=text
或使用<textarea>
答案 2 :(得分:0)
您在attendance.php表单中遗漏了姓名=“提交”。
<input type="submit" name="submit" value="submit">
使用表格打开和关闭标签,如下所示:
<html>
<head>
<title>grade1</title>
</head>
<body>
<table border="1" cellspacing="1" cellpadding="1" width="200" height="200">
<tr>
<th>classid</th>
<th>studentid</th>
<th>teacherid</th>
<th>locid</th>
<th>date</th>
<th>flag</th>
<th>comments</th>
</tr>
<?php
include 'conn.php';
$query = "(SELECT a.classid, a.fname, b.teacherid, c.locid
FROM class_master c JOIN student_master a
ON c.classid = a.classid JOIN teacher_link b
ON c.classid = b.classid
WHERE c.classid = 'grade1' )";
$result = mysql_query($query);
?>
<form action=insertattend.php method=POST>
<?php
while ($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>" . "<input name='classid[]' type=text value=" . $row['classid'] . " </td>";
echo "<td>" . "<input name='fname[]' type=text value=" . $row['fname'] . " </td>";
echo "<td>" . "<input name='teacherid[]' type=number value=" . $row['teacherid'] . " </td>";
echo "<td>" . "<input type=number name='locid[]' value=" . $row['locid'] . " </td>";
echo "<td>" . "<input name='date[]' type=date value='date'></td>";
echo "<td>" . "<input type=radio id=attend name='attend[]' value='present'>";
?>P
<?php echo "<input type=radio id=attend name='attend[]' value='absent'>"; ?>A
<?php
echo"</td>";
echo "<td><input name='comment[]' type=comment row=3 column=5></td>";
echo "</tr>";
}
?>
</table>
<input type="submit" name= "submit" value="submit">
</form>
</body>
</html>
您必须将值作为数组发布在循环内的表单字段中。然后,您必须在 foreach 中获取post值数组,以将所有记录插入到数据库中。
答案 3 :(得分:0)
There are two forms.
Input types are in one form and submit button in another one.So avoid that and put together in one form.There is no need for another form with same action value. There are more than one student so write form outside while loop and then array name for input values. Then in php page values in array so use loop to get all values seperately.
<html>
<head>
<title>grade1</title>
</head>
<body>
<form action=insertattend.php method=POST>
<table border="1" cellspacing="1" cellpadding="1" width="200" height="200">
<tr>
<th>classid</th>
<th>studentid</th>
<th>teacherid</th>
<th>locid</th>
<th>date</th>
<th>flag</th>
<th>comments</th>
</tr>
<?php
include 'conn.php';
$query = "(SELECT a.classid, a.fname, b.teacherid, c.locid
FROM class_master c JOIN student_master a
ON c.classid = a.classid JOIN teacher_link b
ON c.classid = b.classid
WHERE c.classid = 'grade1' )";
$result = mysql_query($query);
$i=1;
while( $row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . "<input name=classid[] type=text value=" .$row['classid']." </td>";
echo "<td>" . "<input name=fname[] type=text value=" .$row['fname']." </td>";
echo "<td>" . "<input name=teacherid[] type=number value="
.$row['teacherid']." </td>";
echo "<td>" . "<input type=number name=locid[] value=" .$row['locid']." </td>";
echo "<td>" . "<input name=date[] type=date value='date'></td>";
echo "<td>" . "<input type=radio id=attend name=attend[] value='present'>";?>P
<?php echo "<input type=radio id=attend name=attend[] value='absent'>";?>A
<?php
echo"</td>";
echo "<td><input name=comment[] type=text row=3 column=5></td>";
echo "</tr>";
}
?>
</table>
<input type="submit" value="submit">
</form>
</body>
</html>
在php页面中,您可以获取任何即将到来的数组的大小 例如:sizeof(classid);使用for for循环接受值