PHP中的动态行列显示

时间:2013-06-18 15:17:50

标签: php html mysql

我在逻辑中提到了3个表。分类数和没有。每个类别的域名都不固定,因为它们是从管理面板管理的。因此,每行3列是固定的,但有多少行没有修复。

我想以下面提到的方式显示每个类别的类别和数据。

I want to display them in following way (as explained in below image.

我使用下面的逻辑来实现所需的输出它给出不同的输出。请帮助纠正我的逻辑,以便它可以像上面的例子一样工作。

<?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
            }
        }
    }
    ?>

虽然下面输出我得到了。请帮助解决此问题。 enter image description here

提前谢谢你, KRA

2 个答案:

答案 0 :(得分:0)

首先创建一个类别数组:

$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 =&gt; $ val){   //在这里你可以把上面的逻辑只使用$ cat数组来做事情    if(($ int_cnt%3)== 0){//每行显示3列         ?&GT;                                             “,$ val);             ?&GT;                          

        if (($int_cnt % 3) == 0) { // 
        ?>
    </tr>
        <?php
        }
    }

}

注意:请根据您的需要进行更改。

答案 1 :(得分:0)

只使用1行3列;

为类别中的每件商品打印固定尺寸的普通<div>