以下代码返回复选框行(每个mySQL表的正确数字)并且没有错误。问题是它没有抓取列值((按照:"。$ row [' Zone']。":"。$ row [&#39 ; RowNumber']。))放在所述复选框旁边。
null
我使用相同的方法运行查询,并按预期显示结果。这里唯一的区别是查询是LEFT JOIN。结果显示在shell中。这是结果的示例和一个复选框的预期输出。
<?php
include'connect.php'
?>
<form method="post" action="chooseDate.php">
<?php
$sql = "
SELECT s.RowNumber, s.Zone,
FROM Seat AS s
LEFT JOIN Booking AS b, ON s.RowNumber = b.RowNumber,
AND b.PerfDate = ?,
AND b.PerfTime = ?,
WHERE b.RowNumber IS NULL,
GROUP BY s.RowNumber
";
$date = "$_POST[Date]";
$time = "$_POST[Time]";
$handle = $conn->prepare($sql);
$handle->execute(array($date, $time));
$res = $handle->fetchAll();
foreach($res as $row) {
echo "<input name='Seat' type='checkbox' value='".$row['Zone'].":
".$row['RowNumber']."'><br>";
}
?>
<input class="mybutton" type="submit" value="Choose Seat"/>
</form>
我哪里错了?提前谢谢。
答案 0 :(得分:2)
你看过HTML输出了吗?您将文本放在input元素中。结束>
在文本之后。
你可以通过将>
移到前面来解决这个问题,但我认为在复选框后面或复选框周围生成一个<label>
元素是更好的选择。如果您给复选框一个id,并且标签指向该id的for
属性,那么该文本也是可点击的,这将成为一个非常棒的用户体验。 :)
所以我建议像这样更改for循环:
$idcounter = 0;
foreach($res as $row) {
$id = 'Seat' . ($idcounter++);
echo "<input name='Seat' type='checkbox' id='$id'><label for='$id'>".$row['Zone'].":".$row['RowNumber']."</label><br>";
}
请注意,我删除了value属性。我不确定你是否需要它,但也许你需要两者:价值和标签。如果是这样,你可以像以前一样放回那个属性,只要你确保在打开标签之前关闭输入元素。