我需要从数据库中打印酒单。 我需要首先打印一个类别,然后打印出所有内部的项目。那个订单。我有多个类别。所以最后结果将是分类1,许多项目,类别2很多项目......
这是我现在写的代码:我认为我的问题是根据alcool_categorie的id打印项目!!
$q_vine = "SELECT * FROM alcool_categorie ";
$r_vine = mysql_query($q_vine,$connection);
$n_vine = mysql_num_rows($r_vine);
$q_bouteille = "SELECT * FROM alcool_item where ALCNID = '$alid'";
$r_bouteille = mysql_query($q_bouteille,$connection);
$n_bouteille = mysql_num_rows($r_bouteille);
for($i = 0; $i < $n_vine; $i++){
echo mysql_result($r_vine,$i,'named').'<br/><br/>';
for($z = 0; $k < $n_bouteille; $k++){
echo mysql_result($r_bouteille,$k,'name').'<br/>';
}
}
答案 0 :(得分:1)
在查询中以及第一个id
循环内正确提供类别while
字段名称后尝试此操作。
$q_vine = "SELECT id, named FROM alcool_categorie ";
$r_vine = mysql_query($q_vine,$connection);
$n_vine = mysql_num_rows($r_vine);
while ($row = mysql_fetch_assoc($r_vine)) {
$categories[$row['id']] = $row;
}
$q_bouteille = "SELECT name, ALCNID FROM alcool_item ";
$r_bouteille = mysql_query($q_bouteille,$connection);
$n_bouteille = mysql_num_rows($r_bouteille);
while ($row = mysql_fetch_assoc($r_bouteille)) {
$items[$row['ALCNID']] = $row;
}
foreach ($categories as $category_id=>$category) {
echo "<ul><li>{$category['named']}<ul>";
foreach ($items[$category_id] as $item) {
echo "<li>{$item['name']}</li>";
}
echo "</ul></li></ul>";
}
答案 1 :(得分:1)
我认为最好在查询中使用“JOIN”,然后按照您希望的方式对行进行排序,那么您只需要一个循环。运行循环时,将类别名称与先前的类别名称进行比较,如果更改,则显示类别名称。
实施例
$sql = "SELECT categoryName, bottleName FROM category INNER JOIN bottle ON category.categoryId = bottle.categoryId ORDER BY category.categoryId";
$result = mysql_query($sql,$connection);
$categoryName = ''; //just to make sure the first time the Category is named
while ($row = mysql_fetch_assoc($result)) {
if($categoryName != row['categoryName']){
$categoryName = row['categoryName'];
echo '<h1>'.$categoryName.'</h1>';
}
echo row['bottleName'].'<br/>';
}
答案 2 :(得分:0)
您将需要查看PHP的foreach构造。 Foreach循环遍历整个结果数组,对于数组中的每个元素,它会提取其值以及可选的其键。这不需要使用mysql_num_rows。
您可以使用mysql_fetch_assoc从mysql_query中获取行的值,而不是调用mysql_result。行要获取所有值,您可以将其合并到循环中。如果你执行后者,你可以创建自己的键/值对数组,并在foreach结构中使用它。
另外请注意,mysql的使用已经过时,你现在要使用mysqli,这与mysql非常相似。