3

所以我的网站允许用户创建联系人列表,现在我添加了用户命名的类别。我目前正在使用从我的 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 
            ?>
4

3 回答 3

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>';
    }
} 
于 2012-07-28T14:28:11.640 回答
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';
于 2012-07-28T14:27:54.333 回答
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 
        ?>

将类别字段添加到数据库并使用不同类别调用查询

于 2012-07-28T14:29:59.143 回答