2013-10-19 20 views
-2

如何在php上執行查詢並對其進行編碼?Php/Mysql查詢以列表形式列出組

我從sql的查詢名稱,但我希望這是在PHP列出它按名稱開始,A,B,C等,如下所示。

我的代碼運行這樣

$sqlquery = <squery string> 
$d=sql(sqlquery) 
while(fetch(d)) 
{ 
echo data 
} 

我希望它是回波列表如下

一個
阿隆
加速
阿曼

巴爾特
Balbon
Basty
Ç



ž

如何運行每次它與每一個新的字母就會呼應第一首字母第一個組作爲查詢貫穿啓動時檢查?我想在一個查詢中完成,因此我不必運行查詢來匹配每個起始字母就可以對它們進行分組。

+0

'$ start =''; while(fetch($ d)){.. if($ start!= $ row ['field'] [0]){$ start = $ row ['field'] [0]; showsomeletterhtml($ start);} ..' – Wrikken

回答

1

沒有什麼與它太複雜的,只要使用類似的東西:

$sqlquery = <squery string> 
$d=sql(sqlquery) 
$firstletter = ''; 
while(fetch(d)) 
{ 
if (substr(d, 0, 1) !== $firstletter) { 
    if (!empty($firstletter)) {echo '</div><hr />';} 
    $firstletter = substr(d, 0, 1); 
    echo '<div>'.$firstletter; 
} 
echo d; 
} 
+0

我不確定這是否正確。從我看到的檢查ti開始檢查數據的第一個字母,如果不等於空的$ firstletter,它將得到空變量的首字母,並且什麼也不迴應。我試圖在while語句中進行檢查,只要有第一個新的字母,它將首先回應該字母(A-Z),以便數據按字母組合 – imryanz

+0

現在應該更清楚。 'ORDER BY'你的查詢,就是這樣。 – Sylvain

+0

就是這樣。我現在明白了。有用。難以置信的。它真的按我的意思工作。非常感謝。我知道substr,但我無法得到如何執行檢查的邏輯。我的代碼始終顯示每個數據的全部首字母。你真的救了我。非常感謝。 – imryanz

2

你可以做的是運行此查詢

注意,因爲你使用SQL有些人會認爲這是錯誤的格式HTML代碼,但你會得到非常乾淨的客戶端代碼

select 
    UPPER(LEFT(name.name, 1)) "capital" 
, GROUP_CONCAT(name.name SEPARATOR '<br />') "name_formatted" 
from 
name 

group by 
capital asc 

看到這個演示http://sqlfiddle.com/#!2/6ec58/8 一個不好的就是「使用文件排序」,所以它的更好,如果你運行該查詢並獲取它,你得到一個這樣的數組有一個分離啓動資金列在你的數據庫

..

$names = array(
    'A' => 'Aron<br />Accel<br />Aman' 
    , 'B' => 'Balter<br />Balbon<br />Basty' 
); 

西港島線是什麼很容易的環路(注意例如環路)

foreach ($names as $capital => $name_formatted) { 
    echo '<b>' . $capital . '</b>' . '<br />'; 
    echo $name_formatted . '<br />'; 
} 

什麼將輸出

A 
Aron 
Accel 
Aman 
B 
Balter 
Balbon 
Basty 
+0

聰明的做法,但肯定也會起作用。我沒有意識到,也不知道有可能在sql語句上有一個html代碼。非常感謝。當然也有幫助。 – imryanz

+1

你甚至不需要在你的語句中至少有一個FROM和表名,MySQL SELECT「HTML」爲「html」;但這顯然是濫用.. –