我正在尝试创建一个3列宽的动态表。输入将自动从数据库中收集。
我的代码:
$var_product_list = mysql_query("SELECT c.link AS clink,s.section_id,s.link AS slink,s.name AS sname FROM category c,section s WHERE c.link='$_GET[category]' AND s.category_id=c.category_id ORDER BY s.name ASC", $db);
while($row_product_list = mysql_fetch_array($var_product_list))
{
$nbCols = 3;
$nbRows = count($row_product_list['section_id'])/$nbCols;
for($row=0; $row<$nbRows; $row++) {
array_push($arr_product_list, "<tr>");
for($i=0; $i<$nbCols; $i++) {
$var_product_count = mysql_query("SELECT COUNT(prod_id) FROM products WHERE section_id='$row_product_list[section_id]' GROUP BY section_id", $db);
$row_product_count = mysql_fetch_array($var_product_count);
$nr_of_products = $row_product_count['COUNT(prod_id)'];
if(empty($nr_of_products)){$nr_of_products = 0;}
$index = $indexes[$row + ($i*$nbRows)];
array_push($arr_product_list, "<td><a href=\"$bswConfig_live_site/browse/$row_product_list[clink]/$row_product_list[slink]\">$row_product_list[sname]</a> ($nr_of_products)</td>");
}
array_push($arr_product_list, "</tr>");
}
}
当我得到输出时,每行重复3次。
示例:
Other | Other | Other
House | House | House
Garage| Garage| Garage
而不是:
Other | House | Garage
Item4 | Item5 | etc..
答案 0 :(得分:1)
我没有重建你的循环,因为我不认为这是100%的问题。您应该使用连接而不是1,000个查询,它更快并且通常可以解决问题。由于我不确定您的数据库是如何设置的,因此通过1个查询可以获得所有信息。
现在你可以使用PHP构建你的行了,我不知道这些数据是如何回来真正构建一个表的。
在一个不相关的说明中,你应该使用PDO或Mysqli,不推荐使用mysql。
<?php
$cat = mysql_real_escape_string($_GET["category"]);
$prods = mysql_query("
SELECT c.link AS clink,s.section_id,s.link AS slink,s.name AS sname, count(s.prod_id) prod_count
FROM category c
INNER JOIN section s ON s.category_id = c.category_id
INNER JOIN products p ON s.section_id = p.section_id
WHERE c.link='$cat'
group by s.section_id
ORDER BY s.name ASC", $db);
while($row = mysql_fetch_array($prods)){
print_r($row);
}