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

Posted

技术标签:

【中文标题】如何控制单选按钮?从数据库、PHP、MYSQL 回显的数据【英文标题】:How to control radio buttons? data echoed from database, PHP, MYSQL 【发布时间】:2014-09-11 01:31:27 【问题描述】:

在为教师创建考勤界面时,我在整理单选按钮时遇到问题。当我从 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/>"; 
   ?>

操作函数

 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"; 

【问题讨论】:

单选按钮不需要数组,因为用户只能选择一个选项。所以name="attend" 是你应该做的第一个编辑 @zeeks,谢谢我已经尝试过你的解决方案,但它不起作用。 【参考方案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 &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/>"; 
   ?>

如您所见,我将name='attend' 替换为name='attend".$row['name']."',但为了使其更好,您应该将$row['name'] 替换为唯一的ID,例如主键。

当您需要遍历所有出席值时,您需要遍历所有名称。

    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.
    

但是我再次强烈建议您在此处使用主键而不是名称。否则当两个人的名称相同时,您会遇到问题。

【讨论】:

感谢您的帮助。第一个可以很好地填充单选按钮,但是由于发生了变化,我也必须更改我的 foreach。能否请您解释一下,以便我了解新的 foreach 函数。 $names 是所有名称的数组。您可以从我发布的第一个代码的 while 循环中获得它。 while($row = mysqli_fetch_array($result)) $names[]=$row['name'];这将创建您可以在 foreach 循环中使用的 $names 数组。从该 while 循环中获取 $names 数组后,您可以按原样使用我的 foreach 循环。【参考方案2】:

我认为我们缺少相当多的信息来适当地帮助您,但我希望您可以使用我为您整理的这段代码。假设当前数据库中的“状态”为 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";
  

?>

您的表单(我猜您在此之前有一个开头的&lt;table&gt; 标签和一个表格标题):

<?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/>

【讨论】:

感谢您的帮助,复制第二个PHP代码时,由于没有正确插入php打开和关闭而显示错误。 这只是一个关于如何动态创建单选按钮的指南。我不知道你的代码的其余部分是什么样子的,所以它并不是一个“复制粘贴”的解决方案。我只是想给你指出一个合适的方向。

以上是关于如何控制单选按钮?从数据库、PHP、MYSQL 回显的数据的主要内容,如果未能解决你的问题,请参考以下文章

编辑时如何回显单选按钮的值[关闭]

从 php 中检索单选按钮的 mysql 值

PHP - 单击单选按钮时如何将数据更新到 MySQL

使用 PHP 和 MySQL 进行自我发布的动态单选按钮

如果使用 PHP 选择了单选按钮(当前),如何在 Mysql 数据库中为出勤值添加 +1?

如何通过 PHP 将多个单选按钮值作为所有单独的值传递给 MYSQL 数据库,但将它们分成组?