我对while
循环感到困惑,需要一些帮助才能找到错误的代码。
我的SQL表看起来像这样:
make model model_body variant
M1 A ooo Va1
M1 B sss Va2
M1 B sss Va3
M1 A ooo Va4
M1 A ooo Va5
M1 B jjj Va6
M1 A www Va7
我想首先通过GROUP BY
对model_body
值输出HTML中的表内容,并仅列出带有循环的唯一循环列表,然后使用第二个循环列表列出所有可用的{{1}每个uqniue variant
的值。
model_body
我写的PHP代码就是这个,我尝试了几种不同的可能性,但总是会出现某种不匹配的情况:
The output should look something like this: However what I end up with is this:
ooo Va1 ooo Va1
Va4 Va4
Va5 Va5
www Va7 www
sss Va2 sss
Va3
jjj Va6 jjj
重要的是,如果我放置一些文本而不是第二个循环,则文本会显示在每个<?php while (!$rs_main_model->EOF) { ?>
<div>
<div>
<h2<?php echo $rs_main_model->fields['model']; ?></h2>
</div>
<div>
<?php while (!$rs_variant->EOF) { ?>
<?php echo $rs_variant->fields['variant']; ?>
<?php $rs_variant->MoveNext(); } ?>
</div>
</div>
<?php $rs_main_model->MoveNext(); } ?>
上,但是当循环完成时,model_body
值仅出现在第一个variant
1}},其余的都是空白的。
我的SQL查询如下:
model_body
以下是$catalogue_make = $_GET['m'];
$sql_all_models = "SELECT * FROM tbl_catalog WHERE make = '$catalogue_make'";
$rs_all_models = $db -> Execute($sql_all_models);
$sql_main_model = "SELECT * FROM tbl_catalog
WHERE make = '".$rs_all_models->fields['make']."'
GROUP BY model_body";
$rs_main_model = $db -> Execute($sql_main_model);
$sql_variant = "SELECT * FROM tbl_catalog
WHERE model_body = '".$rs_main_model->fields['model_body']."'";
$rs_variant = $db -> Execute($sql_variant);
查询的SQL小提示,如果此服务器为任何内容:
http://sqlfiddle.com/#!2/96044/3
我不确定这是否应该通过第二个循环实现,因此任何建议如何使这项工作将不胜感激。
修改 这会对问题有所启发,但仍无法在我的代码中使用它: http://board.phpbuilder.com/showthread.php?10373392-RESOLVED-Nested-While-Loops-and-mySQL 谢谢!
答案 0 :(得分:0)
为什么不让sql做你所有的工作?您只需要一个查询。此查询获取您想要的表,然后您可以在php中使用一个循环来浏览记录:)
SELECT model_body, variant FROM tbl_catalog WHERE make = 'M1' GROUP BY model_body, Variant;
答案 1 :(得分:0)
这是我最终解决的解决方案 - 如果它可以帮助任何人:
<?php while (!$rs_main_model->EOF) { ?>
<div>
<div>
<h2<?php echo $rs_main_model->fields['model']; ?></h2>
<?php $sql_variant = "SELECT * FROM tbl_catalog WHERE model_body = '".$rs_main_model->fields['model_body']."'"; $rs_variant = $db -> Execute($sql_variant); ?>
</div>
<div>
<?php while (!$rs_variant->EOF) { ?>
<?php echo $rs_variant->fields['variant']; ?>
<?php $rs_variant->MoveNext(); } ?>
</div>
</div>
<?php $rs_main_model->MoveNext(); } ?>