【发布时间】:2013-02-03 01:53:08
【问题描述】:
我在mysql中有下表:-
id |乐队名 1 |一个完美的圆圈 2 |航空史密斯 3 | b.b国王 4 |猫史蒂文斯
我在一个查询中获取所有结果:-
$result = mysql_query("SELECT id, bandname FROM bands ORDER BY bandname ASC");
在我的页面上,我有 A-Z 锚链接,它们会打开一个新标签:-
<ul class="tabs-nav">
<li class="active"><a href="#0">0-9</a></li>
<?php
// Print a-z link
for ($i=97; $i<=122; $i++) {
$curletter = chr($i);
echo '<li><a href="#'.$curletter.'" title="Band names beginning with letter '.$curletter.'" class="uppercase">'.$curletter.'</a></li>';
}
?>
</ul>
我无法在其标签下列出乐队。目前我的代码是:-
<div class="tabs-container">
<?php
// Print a-z tabs
for ($i=97; $i<=122; $i++) {
$curletter = chr($i);
?>
<div class="tab-content" id="<?php echo $curletter; ?>">
<?php
while($bands = mysql_fetch_array( $result )) {
$bandname = $bands['bandname'];
$bandid = $bands['id'];
$bandletter = strtolower(substr($bandname , 0 , 1));
}
if($curletter==$bandletter) {
echo '<a href="'.$bandid.'/" title="'.$bandname.'>'.$bandname.'</a>';
}
?>
</div>
<?php } ?>
</div>
我知道这是不正确的,因为我在 for 循环中调用了 while 循环,这对我来说似乎不正确 - 因为 A-Z 选项卡创建过程的每次迭代都必须通过 while 循环。
如果我要处理 5,000 个乐队,那么最好的方法是什么?一个 sql 结果循环多次,每个带的一个结果然后保存在一个字母数组中,或者每当用户单击其中一个锚链接时,一个 ajax sql 查询?
这些甚至都没有开始处理 0-9 选项卡,我认为考虑到我当前的代码,这本身就是一个问题。任何指针都将不胜感激。
我已经搜索了一个答案,但没有找到与我的问题类似的东西:)
【问题讨论】:
-
虽然我可以为你的循环问题找到更好的解决方案(一个循环就足够了),但我绝对不会向浏览器发送 5000 个结果,这不会带来非常愉快的浏览体验。
标签: php mysql alphabetical