如何控制单选按钮?从数据库、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
<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";
【问题讨论】:
单选按钮不需要数组,因为用户只能选择一个选项。所以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
<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']."'
,但为了使其更好,您应该将$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";
?>
您的表单(我猜您在此之前有一个开头的<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/>
【讨论】:
感谢您的帮助,复制第二个PHP代码时,由于没有正确插入php打开和关闭而显示错误。 这只是一个关于如何动态创建单选按钮的指南。我不知道你的代码的其余部分是什么样子的,所以它并不是一个“复制粘贴”的解决方案。我只是想给你指出一个合适的方向。以上是关于如何控制单选按钮?从数据库、PHP、MYSQL 回显的数据的主要内容,如果未能解决你的问题,请参考以下文章