如何控制单选按钮?从数据库、PHP、MYSQL回显数据

如何控制单选按钮?从数据库、PHP、MYSQL回显数据,php,html,mysql,controls,radio,Php,Html,Mysql,Controls,Radio,在为教师创建考勤界面时,我在整理单选按钮时遇到问题。当我从mysql数据库中提取数据以编辑形式显示时,我试图选中正确的单选按钮 有一个由四列组成的表,其中的列按名称、当前、不存在和延迟分开。通过获取MYSQL数据库,姓名列表将在网页中回显,这意味着如果在列表中添加了新学生,则该姓名列表将与缺席、出席和迟到选项一起自动回显到网页中。请看一下下面的代码,我用它分别呼出了姓名列表和其他选项 while($row = mysqli_fetch_array($result))

在为教师创建考勤界面时,我在整理单选按钮时遇到问题。当我从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 &nbsp;
   <input type='radio' name='attend' value='absent' /> Absent &nbsp;
   <input type='radio' name='attend' value='late' /> Late &nbsp; 
   <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 &nbsp;
   <input type='radio' name='attend".$row['name']."' value='absent' /> Absent &nbsp;
   <input type='radio' name='attend".$row['name']."' value='late' /> Late &nbsp; 
   <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; ?> &nbsp;
      <?php } ?>
      <input class='attendanceSubmitBtn' type='submit' name='btnSubmit' value='Submit'> 
    </form>
    </td>
  </tr>
<?php } ?>
</table>
<br/>