我无法以正确的方式放置最后一个div。
我从数据库输出的查询:
SELECT a.id, a.name, b.sub_id, b.sub_name FROM cat a, sub_cat b WHERE a.id = b.cat_id
将是:
| id | name | sub_id | sub_name |
| 1 | moblie | 1 | Phone |
| 1 | mobile | 2 | Mobile Phones Accessories |
| 2 | Lifestyle | 3 | Arts |
| 2 | Lifestyle | 4 | Books |
我想制作这个结构:
<div id="moblie" class="tab-pane active">
<a href="?cat=1&sub_cat=1">Phones</a>
<a href="?cat=1&sub_cat=2">Mobile Phones Accessories</a>
</div>
<div id="Lifestyle " class="tab-pane">
<a href="?cat=2&sub_cat=3">Arts</a>
<a href="?cat=2&sub_cat=4">Books</a>
</div>
我的原始Php代码:
<?php $query = "SELECT a.id, a.name, b.sub_id, b.sub_name FROM cat a, sub_cat b WHERE a.id = b.cat_id";
$result = mysql_query($query);
$i=0;
$a=1;
$b=0;
while($row = mysql_fetch_assoc($result)){
$i++;
if($i == 1){$set = "active";}else{$set = NULL;}
$hre=strtolower(preg_replace("/[^a-zA-Z]+/", "", $row['name']));
while($a == $row['id']){ $a++;?>
<div id="<?=$hre?>" class="tab-pane <?=$set?>">
<?php }?>
<a href="?cat=<?=$row['id']?>&sub_cat=<?=$row['sub_id']?>"><?=$row['sub_name']?></a>
<?php while($b == $row['id']){ $b++;?></div>
<?php }
}?>
我收到的输出:
<div id="mobilephones" class="tab-pane active">
<a href="?cat=1&sub_cat=1">Mobile Phones</a>
<a href="?cat=1&sub_cat=2">Mobile Phones Accessories</a>
<div id="homelifestyle" class="tab-pane ">
<a href="?cat=2&sub_cat=3">Art - Collectibles - Hobbies</a>
<a href="?cat=2&sub_cat=4">Books - Magazines</a>
</div></div>
我的想法: 因为它是循环的最后一次,它如何理解即将打印div的价值。
我尝试过以不同的方式找不到解决方案。请帮帮我。
注意:我知道如何使用循环quires。但是,我想通过单个mysql查询来完成它。
答案 0 :(得分:0)
重要强>
避免使用
mysql_*
函数!它们已被弃用。
对于您的解决方案,您可以简单地使用这种方式:
<?php
$result = mysql_query($query);
$flag = 0;
while (false !== ($data = mysql_fetch_array($result)))
{
if ($data["id"] != $flag)
{
if ($data["id"] != 1) echo "</div>\n";
echo '<div id="' . $data["name"] . '" class="tab-pane', ($data["id"] == 1) ? ' active' : '', '">', "\n";
}
echo '<a href="?cat=' . $data["id"] . '&sub_cat=' . $data["sub_id"] . '">' . $data["sub_name"] . '</a>', "\n";
$flag = $data["id"];
}
?></div>
<强>输出强>
<div id="mobile" class="tab-pane active">
<a href="?cat=1&sub_cat=1">Phone</a>
<a href="?cat=1&sub_cat=2">Mobile Phones Accessories</a>
</div>
<div id="Lifestyle" class="tab-pane">
<a href="?cat=2&sub_cat=3">Arts</a>
<a href="?cat=2&sub_cat=4">Books</a>
</div>
这应该可以解决问题。让我知道评论中的结果。
答案 1 :(得分:0)
如果您按类别名称
迭代完整结果“分组”,该怎么办? $awesomearray=array();
while($row = mysql_fetch_assoc($result)){
$awesomearray[$row['name'][]=$row;
}
然后遍历分组数组
foreach($awesomearray as $category=>$data) {
echo '<div id="'.$category.'" class="tab-pane"> ';
foreach($data as $subcategory) {
echo '<a href="?cat='.$subcategory['id'].'&sub_cat='.$subcategory['sub_id'].'">'.$subcategory['sub_name'].'</a>';
}
echo '</div> ';
}
这不涉及'活跃课程',但我相信你可以解决它。
PD:如果您使用php-pdo_mysql而不是php-mysql,您可以跳过第一部分,使用fetchAll和PDO :: FETCH_GROUP。给它一个机会。