php - 我无法以正确的方式放置最后一个 div。循环

标签 php html mysql

我无法以正确的方式放置最后一个 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&amp;sub_cat=1">Phones</a>
<a href="?cat=1&amp;sub_cat=2">Mobile Phones Accessories</a>
</div>
<div id="Lifestyle " class="tab-pane">
<a href="?cat=2&amp;sub_cat=3">Arts</a>
<a href="?cat=2&amp;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&amp;sub_cat=1">Mobile Phones</a>
  <a href="?cat=1&amp;sub_cat=2">Mobile Phones Accessories</a>
<div id="homelifestyle" class="tab-pane ">
  <a href="?cat=2&amp;sub_cat=3">Art - Collectibles - Hobbies</a>
  <a href="?cat=2&amp;sub_cat=4">Books - Magazines</a>
  </div></div>

我的想法: 因为它是最后一个 while 循环,它如何理解打印 div 的即将到来的值(value)。

我试过各种方法都没有找到解决方案。请帮帮我。

注意:我知道如何使用循环查询来完成。但是,我想通过单个 mysql 查询来完成。

最佳答案

Important

Avoid using mysql_* functions! They are deprecated.

对于您的解决方案,您可以简单地使用这种方式:

<?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"] . '&amp;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&amp;sub_cat=1">Phone</a>
  <a href="?cat=1&amp;sub_cat=2">Mobile Phones Accessories</a>
</div>
<div id="Lifestyle" class="tab-pane">
  <a href="?cat=2&amp;sub_cat=3">Arts</a>
  <a href="?cat=2&amp;sub_cat=4">Books</a>
</div>

这应该可以解决问题。在评论中让我知道结果。

关于php - 我无法以正确的方式放置最后一个 div。循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19894467/

相关文章:

php - 是否有适用于PHP或Ruby的网络搜寻器库?

php - Apache 反向代理可以排除某些文件类型吗?

php - 验证 header 为 "origin"的 HTTP 请求

html - 表类的第一个 child TD

php - 使用 Navicat Premium 在 MySQL 中存储图像链接

php - is_int 为 "-10"之类的负值返回 false ?

html - Div 元素未扩展到其父容器的大小

javascript - :before and :after are not getting displayed in the actual page 中的图标

mysql - 将大型 html 文本存储在数据库中

mysql - 如何检查一个字符串是否看起来是随机的,或者是人为生成的和发音的?