我正在做一个可用性系统。我需要在表格中显示记录。
我的系统基本上是关于房地产,它跟踪房产是否可用。样品是我在公寓有20层,每层有10个单元,所以我需要循环地板数量,并在特定楼层下显示每个单元。
1st flr | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
2nd flr | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
这是我迄今为止所尝试过的:
<table class="table table-bordered">
<?php
for($i=0; $row3 = $stmt3->fetch(); $i++){
$floor = $row3['floor'];
?>
<tr>
<td><?php echo $floor; ?></td>
<?php
for($i=0; $row4 = $stmt4->fetch(); $i++){
$unit_code = $row4['unit_code'];
?>
<td><?php echo $unit_code; ?></td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
但它只显示了一楼的所有记录。
这是实际发生的事情:
1st flr| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
2nd flr
实现我需求的正确方法是什么?有任何想法吗?我很乐意感谢你的帮助。感谢。
更新
$stmt3 = $conn->prepare( "SELECT DISTINCT floor
FROM tblunitsmaster
WHERE project_code = :code" );
$stmt3->execute(array(':code' => $code));
$stmt4 = $conn->prepare( "SELECT unit_code
FROM tblunitsmaster
WHERE project_code = :code
AND floor = :floor
AND sub_project_code = 'SUB-AX0001'" );
答案 0 :(得分:1)
我不知道你是否已经解决了它,但是Satish Sharma代码在第6行有一个拼写错误。该行应该是
$floor = $row3['floor'];
这将解决您的问题。我真的应该评论答案,但没有足够的分数。
更新了以下代码
<强>更新强> 每层楼的最新更新及其自己的单位。
<?php
$code = 'so';
$stmt3 = $pdo->prepare( "SELECT DISTINCT floor
FROM tblunitsmaster
WHERE project_code = :code" );
$stmt3->execute(array(':code' => $code));
$stmt4 = $pdo2->prepare( "SELECT unit_code
FROM tblunitsmaster
WHERE project_code = :code
AND floor = :floor
AND sub_project_code = 'SUB-AX0001'" );
?>
<table border="1px" class="table table-bordered">
<?php
$rows3 = $stmt3->fetchAll();
foreach ($rows3 as $row3) {
$floor = $row3['floor'];
?>
<tr>
<td><?php echo $floor; ?></td>
<?php
$stmt4->execute(array(':code' => $code, ':floor' => $floor));
$rows4 = $stmt4->fetchAll();
foreach ($rows4 as $row4) {
$unit_code = $row4['unit_code'];
?>
<td><?php echo $unit_code; ?></td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
输出:
1st flr 1 2 3 4 5 6 7 8 9 10
2nd flr 1 2 3 4 5 6 7 8 9 10
3rd flr 1 2 3 4 5 6 7 8 9 10
答案 1 :(得分:1)
我认为这可能会解决您的问题:
<table class="table table-bordered">
<?php
$stmt3 = $conn->prepare("SELECT DISTINCT `floor` FROM `tblunitsmaster` WHERE `project_code` = :code")->execute(array(':code' => $code))->fetchAll(PDO::FETCH_ASSOC);
$stmt4 = $conn->prepare("SELECT `unit_code` FROM `tblunitsmaster` WHERE `project_code` = :code AND `floor` = :floor AND `sub_project_code` = 'SUB-AX0001");
foreach ($stmt3 as $row3){
$floor = $row3['floor'];
echo '<tr></td>'.$floor.'</td>';
if ($stmt4->execute(array(':code' => $code, ':floor' => $floor))){
foreach ($stmt4->fetchAll(PDO::FETCH_ASSOC) as $row4){
echo '<td>'.$row4['unit_code'].'</td>';
}
}
echo '</tr>';
}
?>
</table>
答案 2 :(得分:0)
您需要重置$stmt4-
试试这个
<table class="table table-bordered">
<?php
$rows3 = $stmt3->fetchAll();
$rows4 = $stmt4->fetchAll();
foreach($rows3 as $row3){
$floor = $row['floor'];
?>
<tr>
<td><?php echo $floor; ?></td>
<?php
foreach($rows4 as $row4){
$unit_code = $row4['unit_code'];
?>
<td><?php echo $unit_code; ?></td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
答案 3 :(得分:0)
for($i=0; $row3 = $stmt3->fetch(); $i++)
$ stmt3是什么?
我认为您使用的是FOR loop错误。第二部分,即$row3 = $stmt3->fetch()
,应该是评估,而不是变量的设置。
你可能正在寻找类似的东西:
for($i=0; $stmt3->fetch() <> null; $i++){
$row3 = $stmt3->fetch()
第二个FOR循环相同。
答案可能有点不对劲。
答案 4 :(得分:0)
将sql调用放在循环中真的不是一个好主意。相反,构建您的数据库调用以正确分组数据 - “选择楼层,condo_unit逐层,condo_unit”。然后,遍历结果集。