2013-07-17 152 views
0

可以说我有一个充满手机的列表。 可以很容易地打印所有手机出在无序列表,如:对结果进行排序mysql/php

$get_phones = $mysqli->query(" 
SELECT 
    a.id, 
    b.phone_id, 
    a.phonename AS pname, 
    b.modelname AS mname, 
FROM phone_brands 
a LEFT OUTER JOIN phone_models b 
ON a.id = b.phone_id"); 

while($phones = $get_phones->fetch_assoc()){ 
echo $phones['pname'] . $phones['mname'];} 

但我怎么可以让列表中排序的所有模型和手机一样更具可读性:

iPhone
3G
3GS
4G

诺基亚
的Lumia 1020
的Lumia 925
的Lumia 520个

我的猜测是,我应该这样做:

if($phones['pname'] == $phones['pname']{} 

但我不知道我是不是很远吗?任何帮助,将不胜感激:)

+0

您将需要订购和检查值以前 – exussum

+1

为什么不'ORDER BY a.phonename,b.modelname'在在第一个平面查询e? –

+0

我需要改进代码,我在想使用像foreach这样的东西,所以它比以后更容易使用:P – simon

回答

0

那么ofcourse你可以命令由MNAME查询:

$get_phones = $mysqli->query(" 
SELECT 
    a.id, 
    b.phone_id, 
    a.phonename AS pname, 
    b.modelname AS mname, 
FROM phone_brands 
a LEFT OUTER JOIN phone_models b 
ON a.id = b.phone_id 
ORDER BY mname"); 

然后在PHP做这样的事情:

$currentModel = ""; 

while($phones = $get_phones->fetch_assoc()){ 
    if($currentModel != $phones['mname']){ 
     echo $phones['mname'].'<br/>'; 
     $currentModel = $phones['mname']; 
    } 
    echo $phones['pname']; 
} 
+0

我认为这是我可能要找的一些东西。但是,当我使用您的脚本,它不会正确排序。什么是printet是一个混乱的名单,当我尝试这段代码:) – simon

+0

你试过[k] sort()在$ phones数组(在我的情况下)? http://php.net/sort http://php.net/ksort – DarkMantis

0

数据库级排序是多少更快,最后,结果是一样的。你可以在PHP数组中读取它并对其进行排序。

$get_phones = $mysqli->query(" 
SELECT 
    a.id, 
    b.phone_id, 
    a.phonename AS pname, 
    b.modelname AS mname, 
FROM phone_brands 
a LEFT OUTER JOIN phone_models b 
ON a.id = b.phone_id 
order by pname, mname"); 
0
SELECT 
    a.id, 
    b.phone_id, 
    a.phonename AS pname, 
    b.modelname AS mname, 
FROM phone_brands AS a 
LEFT OUTER JOIN phone_models AS b 
    ON a.id = b.phone_id 
ORDER BY pname, mname DESC 

这应该做从你的问题问什么工作?

[编辑]

我需要改进的代码,我使用的东西像一个foreach所以它更可用迟只是为了想:P - 西蒙Duun

去上发表评论,你可以通过在查询仍然使用顺序,但这样做:

$phone_array = array(); 
while($phones = $get_phones->fetch_assoc()){ 
    $phone_array[$phones['pname']] = $phones['pname'] . $phones['mname']; 
} 

ksort($phone_array); 

foreach($phone_array as $phone_pname => $phone_value){ 
    echo $phone_pname . ' -> ' . $phone_value . "\r\n"; 
} 
+0

嗯...但是,这似乎也得到了结果unsortet - 不知道发生了什么事:/ – simon

相关问题