thinkphp使用的數(shù)據(jù)庫(kù)是mysql,mysql多個(gè)字段排序的語(yǔ)句:
成都創(chuàng)新互聯(lián)公司專注于光山企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站定制開(kāi)發(fā)。光山網(wǎng)站建設(shè)公司,為光山等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
select
* from `表名` where 條件 order by 字段1 desc,字段2
asc,...
thinkphp中排序方法為
$User-where('score0')-order('score desc')....;
但是例子中只能單字段排序,不過(guò)可以理解成字符串,那就可以這樣寫試試
$User-where('score0')-order('score desc,id asc,...')....;
$order=$_GET['order'];
$fs=$_GET['fs'];
if(isset($order)){
$order=$_GET['order'];
}else{
$order="id";//默認(rèn)為id排序
}
if(isset($fs)){
$fs=$_GET['fs'];
}else{
$fs="asc";//默認(rèn)為asc,因?yàn)閍sc可以省略,所以可以留空
}
修整了下
多重排序,order by 字段 方式,字段 方式...
order by age desc,id desc 先按年齡降序,相同的年齡里按id降序
order by id,age desc 先按id升序,相同的id里按年齡降序
至于你到底需要什么樣的排序方式,按這個(gè)思路自己寫就可以了
樓上說(shuō)的比較正確
?php
首先鏈接你的數(shù)據(jù)庫(kù)
sql="select
*
from
test
order
by
t
desc
limit
0,100"
$ret=mysql_query($sql,$db);//$db為數(shù)據(jù)庫(kù)連接
$zone=1;
while($row=mysql_fetch_array($ret)){
echo
"名次:".$zone.",";
echo
$row['m'];//用戶名
echo
$row['t'];//積分
echo
$row['u'];//序號(hào)
echo
"br/";
}
?
從你要輸出的結(jié)果來(lái)看,你這樣實(shí)現(xiàn)法不太科學(xué),代碼不高效,數(shù)據(jù)量少時(shí)還算說(shuō)得過(guò)去,若上萬(wàn)數(shù)據(jù)的話,服務(wù)器會(huì)崩潰。建議你在數(shù)據(jù)庫(kù)結(jié)構(gòu)上進(jìn)行改進(jìn),對(duì)于排序的字段設(shè)計(jì)可以采用人為可控制的數(shù)值,這樣你要實(shí)現(xiàn)的話,一個(gè)sql語(yǔ)句搞定到數(shù)組后,你想輸出哪種格式都是可以的了。你去參考下那些知名的CMS系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu),我想你會(huì)受到啟發(fā)的。
記得給分!?。?/p>
php方法:
可以查一下“冒泡排序”,可以實(shí)現(xiàn)
只需要把往前推的規(guī)則改一下即可
mysql方法:
可以添加一個(gè)新的字段,name_type 你在輸入數(shù)據(jù)的時(shí)候,姓張的name_type = 1 ,類似
姓王的name_type= 2 ,查詢的時(shí)候order by name_type asc 即可;