我在为教师创建考勤界面时整理单选按钮时遇到问题。当我从mysql数据库中提取数据以在编辑表单中显示时,我正在尝试检查正确的单选按钮。
有一个包含四列的表,其中列分隔为名称,存在,不存在和后期。通过获取MYSQL数据库在网页中回显名称列表,这意味着如果在列表中添加了新学生,那么它将自动与缺席,现在和晚期选项一起在网页中回显。请查看下面的代码,我用它来单独回显名称列表和其他选项。
while($row = mysqli_fetch_array($result))
{
echo "<tr>
<td><img......../></td>
<td>" .$row['name']. $row['surname']."</td>
<td><input type='radio' name='attend' value='present' /> Present
<input type='radio' name='attend' value='absent' /> Absent
<input type='radio' name='attend' value='late' /> Late
<td>
</tr>";
}
echo "<input class='attendanceSubmitBtn' type='submit' name='btnSubmit' value='Submit'>";
echo "</table>";
echo "</form> <br/>";
?>
操作功能
foreach ($_POST['attend'] as $attendance => $value) {
if($value == 'present') {
$query = "INSERT INTO Test (date, status) VALUES (NOW(), '1')";
$close = mysqli_query($con, $query);
echo "present done properly";
答案 0 :(得分:1)
您正在错误地显示它。您需要为每次出席提供不同的名称。
这样做:
while($row = mysqli_fetch_array($result))
{
echo "<tr>
<td><img......../></td>
<td>" .$row['name']. $row['surname']."</td>
<td><input type='radio' name='attend".$row['name']."' value='present' /> Present
<input type='radio' name='attend".$row['name']."' value='absent' /> Absent
<input type='radio' name='attend".$row['name']."' value='late' /> Late
<td>
</tr>";
}
echo "<input class='attendanceSubmitBtn' type='submit' name='btnSubmit' value='Submit'>";
echo "</table>";
echo "</form> <br/>";
?>
正如您所看到的,我将name='attend'
替换为name='attend".$row['name']."'
,但为了使其更好,您应该使用唯一ID替换$row['name']
,例如主键。
当您需要遍历所有参与值时,您需要遍历所有名称。
foreach ($names as $name)
{
$value=$_POST['attend'.$name]; //this value could be absent , present or late
echo $name.' '.$value.'<br>'; //You have the name as well as value. Now you can insert or Update them in the database within this loop itself.
}
但是我强烈建议你在那里使用主键而不是名字。否则当两个人的名字相同时你会遇到问题。
答案 1 :(得分:0)
我认为我们缺少相当多的信息来帮助您,但我希望您可以使用我为您准备的这些代码。假设&#39;状态&#39;在数据库中,当前为1(如您的示例所示),因为缺少它2,并且已经晚了它3.此外,我假设您的结果顶部的查询以某种方式包含此状态。另外,我已经为每个表格行创建了一个表单,因为我还没有看到任何教师ID将数组分配给复选框“&#39;名称标签。
用于处理表单的PHP代码:
<?php
if ($isset($_POST['attend']) {
switch ($_POST['attend']) {
case 'present':
$status = 1;
break;
case 'absent':
$status = 2;
break;
case 'late':
$status = 3;
break;
default:
$status = 0;
break;
}
if ($status != 0) {
$query = "INSERT INTO Test (date, status) VALUES (NOW(), " . $status . ")";
$close = mysqli_query($con, $query);
echo $_POST['attend'] . " done properly";
}
}
?>
你的表单(我猜你在这之前的某个地方有一个开放的<table>
标签和一个表头):
<?php
$result = mysqli_query(" WHATEVER YOUR QUERY IS ");
$statuses = array(1 => 'Present', 2 => 'Absent', 3 => 'Late');
while ($row = mysqli_fetch_array($result)) { ?>
<tr>
<td><img......../></td>
<td><?php echo $row['name'] . " " . $row['surname']; ?></td>
<td>
<form action="" method="post">
<?php foreach ($statuses as $status) { ?>
<input type="radio" name="attend" value="<?php echo strtolower($status); ?>"<?php echo ($row['status'] == $status) ? ' checked' : ''; ?> /> <?php echo $status; ?>
<?php } ?>
<input class='attendanceSubmitBtn' type='submit' name='btnSubmit' value='Submit'>
</form>
</td>
</tr>
<?php } ?>
</table>
<br/>