正如我在逻辑中提到的,我有 3 个表。类别数量和数量每个类别的域名不固定,因为它们是通过管理面板管理的。所以每行 3 列是固定的,但有多少行是不固定的。
我想用下面提到的方式显示类别和每个类别的数据。
我正在使用下面的逻辑来实现所需的输出,它给出了不同的输出。请帮助纠正我的逻辑,以便它可以像上面的示例一样工作。
<?php
$str_query_select = "SELECT d.domainpkid,d.domainname,c.categorytitle,dc.categorypkid FROM tr_domainname_category dc ";
$str_query_select .= "LEFT JOIN t_domainname d ON dc.domainpkid=d.domainpkid ";
$str_query_select .= "LEFT JOIN t_domainname_category c ON dc.categorypkid=c.categorypkid ";
$str_query_select .= "WHERE c.visible='YES' AND d.visible='YES' ORDER BY c.categorytitle,d.domainname ";
$rs_cat_list = GetRecordSet($str_query_select);
if (!$rs_cat_list->eof()) { // Check if recordset is not empty
$int_cnt = 0; // Used to make new row
$int_cat_pkid = 0; // Used to validate categorypkid
while (!$rs_cat_list->eof()) { // loop starts
if (($int_cnt % 3) == 0) { // To display 3 columns per row
?>
<tr>
<?php } ?>
<td width="250" align="left" valign="top">
<?php
if ($int_cat_pkid != $rs_cat_list->fields("categorypkid")) {
$int_cat_pkid = $rs_cat_list->fields("categorypkid");
print("<b>" . $rs_cat_list->fields("categorytitle") . "</b><br/>");
}
print($rs_cat_list->fields("domainname") . "<br/>");
?>
</td>
<?php
$int_cnt++;
$rs_cat_list->MoveNext();
if (($int_cnt % 3) == 0) { //
?>
</tr>
<?php
}
}
}
?>
下面是我得到的输出。请帮助解决这个问题。
预先感谢您, 克拉克
最佳答案
首先创建类别数组:
$cat = array();
while (!$rs_cat_list->eof()) { // here is your while loop
$cat[$rs_cat_list->fields("categorypkid")][] = $rs_cat_list->fields("domainname");
$rs_cat_list->MoveNext();
}
现在使用$cat数组进行处理。
foreach($cat as $key=>$val) { //这里你可以把上面的逻辑放在$cat数组中来完成这些事情 if (($int_cnt % 3) == 0) {//每行显示 3 列 ?> “,$val); ?>
if (($int_cnt % 3) == 0) { //
?>
</tr>
<?php
}
}
}
注意:请根据您的需要进行更改。
关于php - PHP中的动态行列显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172652/