所以我的网站允许用户创建联系人列表,现在我添加了用户命名的类别。我目前正在使用从我的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
?>
答案 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
?>
向数据库添加类别字段,并使用不同的类别调用查询