如何控制单选按钮?从数据库、PHP、MYSQL回显数据
在为教师创建考勤界面时,我在整理单选按钮时遇到问题。当我从mysql数据库中提取数据以编辑形式显示时,我试图选中正确的单选按钮 有一个由四列组成的表,其中的列按名称、当前、不存在和延迟分开。通过获取MYSQL数据库,姓名列表将在网页中回显,这意味着如果在列表中添加了新学生,则该姓名列表将与缺席、出席和迟到选项一起自动回显到网页中。请看一下下面的代码,我用它分别呼出了姓名列表和其他选项如何控制单选按钮?从数据库、PHP、MYSQL回显数据,php,html,mysql,controls,radio,Php,Html,Mysql,Controls,Radio,在为教师创建考勤界面时,我在整理单选按钮时遇到问题。当我从mysql数据库中提取数据以编辑形式显示时,我试图选中正确的单选按钮 有一个由四列组成的表,其中的列按名称、当前、不存在和延迟分开。通过获取MYSQL数据库,姓名列表将在网页中回显,这意味着如果在列表中添加了新学生,则该姓名列表将与缺席、出席和迟到选项一起自动回显到网页中。请看一下下面的代码,我用它分别呼出了姓名列表和其他选项 while($row = mysqli_fetch_array($result))
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/>";
?>
你把它展示错了。您需要为每次出席提供不同的名称 这样做:
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/>";
?>
但是我再次强烈建议您使用主键而不是名字。否则,当两个人的名字相同时,您会遇到问题。我认为我们缺少很多信息来正确帮助您,但我希望您可以使用我为您编写的这段代码。假设当前数据库中的“status”为1(如您的示例所示),缺席为2,迟到为3。我还假设您在结果顶部的查询以某种方式包含此状态。此外,我还为每个表行创建了一个表单,因为我没有看到任何教师ID可以为复选框的名称标记分配数组 处理表单的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";
}
}
?>
单选按钮不需要数组,因为用户只能选择一个选项。因此name=“attent”
是您应该进行的第一次编辑make@zeeks,谢谢。我试过你的解决方案,但没有用。谢谢你的帮助。第一个很好,填充了单选按钮,但是因为有变化,我也不得不改变我的foreach。请您解释一下,这样我就可以理解新的foreach函数了。$names是所有名称的数组。你可以从我发布的第一个代码的while循环中得到这个。而($row=mysqli_fetch_array($result)){$names[]=$row['name'];}这将创建可以在foreach循环中使用的$names数组。一旦您从while循环中获得$names数组,就可以按原样使用我的foreach循环。感谢您的帮助,在复制第二个PHP代码时,它显示了错误,因为PHP打开和关闭没有正确插入。这只是一个关于如何动态创建单选按钮的指南。我不知道您的代码的其余部分是什么样子的,所以它不是一个“复制粘贴”解决方案。我只是想给你指出一个合适的方向。
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.
}
<?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";
}
}
?>
<?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/>