如何在数据库中按类别显示数据?

时间:2012-07-28 14:13:02

标签: php mysql

所以我的网站允许用户创建联系人列表,现在我添加了用户命名的类别。我目前正在使用从我的SQL查询生成的关联数组的while循环显示联系人列表。

所以它看起来像这样:

Contacts:
Contact 1 
Contact 2
Contact 3

现在我在数据库中有一个关于联系人类别的新列,我无法弄清楚如何订购它们,并显示联系人类别的名称。我试图让它看起来像这样:

Contacts:
Category 1
Contact 1
Contact 2
Contact 3
Category 2
Contact 1
Contact 2
Contact 3

如果您需要,我的实际代码:

<?php
                //START CONTACTS LOOP       
            $contacts_query = "SELECT id, name FROM contacts WHERE ownerid = '$userID' ORDER BY `name` ASC";
            $run_contacts_query = mysql_query($contacts_query);

            if($run_contacts_query){

                while($c_data = mysql_fetch_assoc($run_contacts_query)){
                    $id = $c_data['id'];
                    $name = $c_data['name'];
                    ?>
                    <li><a href="contact.php?id=<?=$id?>"><?=$name?></a></li>
                    <?php
                    }} //END CONTACTS LOOP 
            ?>

3 个答案:

答案 0 :(得分:4)

只需检索类别并按类别排序,然后按名称排序。并检查类别是否与上一个不同:

$contacts_query = "SELECT id, name, category";
$contacts_query.= " FROM contacts";
$contacts_query.= " WHERE ownerid = '$userID'";
$contacts_query.= " ORDER BY `category`, `name` ASC";

$run_contacts_query = mysql_query($contacts_query);

if($run_contacts_query) {
    $currentCategory = null;

    while($c_data = mysql_fetch_assoc($run_contacts_query)){
        if ($c_data['category'] != $currentCategory) {
            echo '<li>' . $c_data['category'] . '</li>';
            $currentCategory = $c_data['category'];
        }

        echo '<li><a href="contact.php?id=' . $id . '">' . $name . '</a></li>';
    }
} 

答案 1 :(得分:0)

我认为最好的方法是在架构中使用不同的表来存储联系人和类别。

 SELECT id, name FROM contact_categories WHERE ownerid = '$userID' ORDER BY `name` ASC;

然后

 SELECT id, name FROM contacts WHERE ownerid = '$userID' and contact_categoryid = '$catid';

答案 2 :(得分:0)

您需要更改sql查询以通过其ownerid和类别获取联系人。

<?php
            //CHANGE QUERY TO       
        $contacts_query = "SELECT id, name FROM contacts WHERE ownerid = '$userID' AND category = '$category' ORDER BY `name` ASC";

        $run_contacts_query = mysql_query($contacts_query);

        if($run_contacts_query){
            //You need to echo category here
            print("<h3>".$category.</h3>");

            while($c_data = mysql_fetch_assoc($run_contacts_query)){
                $id = $c_data['id'];
                $name = $c_data['name'];
                ?>
                  <li><a href="contact.php?id=<?=$id?>"><?=$name?></a></li>
                <?php
                }} //END CONTACTS LOOP 
        ?>

向数据库添加类别字段,并使用不同的类别调用查询