为什么mySQL查询结果在PHP中执行时不显示表中的文本?

时间:2016-12-03 12:14:09

标签: php mysql

以下代码返回复选框行(每个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>

我哪里错了?提前谢谢。

1 个答案:

答案 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属性。我不确定你是否需要它,但也许你需要两者:价值和标签。如果是这样,你可以像以前一样放回那个属性,只要你确保在打开标签之前关闭输入元素。