我有一个MySQL数据库,其中包含一个人的姓,姓,他们的国家,以及他们是否对他们的名字在网站上列出感到高兴。
字段名称是'firstname','lastname','country'和'listedagree'。在数据库中,'listedagree'结果为Y或N.
我只想列出那些同意列出名字的人,按国家/地区分组,并按姓氏排序
对于每个国家/地区,输出的标记应如下所示:
<h4>Country name</h4>
<ul>
<li>Amy Adams</li>
<li>Kenneth Branagh</li>
<li>Ray Charles</li>
</ul>
我的PHP技能非常有限 - 我真的很难找到我需要的代码来实现这一点。有人可以帮忙吗?
非常感谢提前!
答案 0 :(得分:3)
SELECT * FROM users WHERE listedagree = 'Y' ORDER BY country, lastname, firstname
然后用你的PHP循环记录。每次国家/地区名称更改时,都会关闭前面的ul并在回显用户名称之前添加h4并打开ul。例如:
<?php
$country = null;
while($row = mysql_fetch_assoc($result)) {
if($row['country'] != $country) {
if(!is_null($country)) {
echo '</ul>';
}
$country = $row['country'];
echo "<h4>$country</h4>";
echo '<ul>';
}
echo "<li>{$row['firstname']} {$row['lastname']}</li>";
}
echo '</ul>';
此代码假定您的国家/地区名称数据干净,并且您的数据库中没有英国和英国,美国和美国等国家/地区。
答案 1 :(得分:0)
我写了示例代码:)
<?php
$result = mysql_query("SELECT country FROM tablename group by country")
or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
$country = $result['country'];
$result2 = "SELECT country FROM tablename where country = '$country' and listedagree = 'y' order by surname";
echo '<h4>'.$country.'</h4>';
echo <ul>;
while($row2 = mysql_fetch_array( $result2 )) {
echo '<li>'.$row2["firstname"].' '.$row2["lastname"].'</li>';
}
echo '</ul>';
}
&GT;
答案 2 :(得分:0)
你需要做两件事,首先是一个SQL查询来检索值,你可以这样做:
SELECT firstname,lastname,country FROM TABLE WHERE listedagree='Y' ORDER BY country
当您在PHP上检索数据时,您需要对其进行迭代,将实际国家/地区保存在临时变量中,以便能够检测到它何时发生变化,例如您可能会喜欢以下内容:
//Conect to the database
mysql_connect("hostaddress.com", "username", "password") or die(mysql_error());
//Selet the database to work with
mysql_select_db("Database_Name") or die(mysql_error());
$sql = "SELECT firstname,lastname,country FROM TABLE WHERE listedagree='Y' ORDER BY country";
//retrive the data
$result = mysql_query($sql) or die(mysql_error());
//Now iterate over the result and generate the HTML
$html = '';
$tmp_country = '';
while($data = mysql_fetch_array( $result ))
{
//If the country have changed
if($tmp_country != $data['country'])
{
//Check if we need to close the UL
if($tmp_country != '') {$html .= "</ul>"};
//Print the country header
$html .= "<h4>$data['country']</h4>";
$htm l .= "<ul>";
//store the last country
$tmp_country = $data['country'];
}
//Add the names to each country
$html .= "<li>$data['firstname'] $data['lastname']</li>";
}
//Close the last UL
$html .= "</ul>";
我无法尝试代码,所以也许它需要一些精细的调整才能使它工作但是它会完成工作,如果你有任何问题让我知道,我会帮助你。