作者 主題: 搜尋完-->排序顯示搜尋結果  (閱讀 7491 次)

0 會員 與 1 訪客 正在閱讀本文。

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
搜尋完-->排序顯示搜尋結果
« 於: 2007-12-10 15:41 »
hey all,
           我如何在搜尋完後,按鈕 顯示 搜尋結果的排序?   有人可以告訴我我方式嗎?  是要多新增一個欄位嗎?  謝謝

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #1 於: 2007-12-10 17:14 »
hey all,
           我如何在搜尋完後,按鈕 顯示 搜尋結果的排序?   有人可以告訴我我方式嗎?  是要多新增一個欄位嗎?  謝謝

搜尋的時候,加個order by應該就可以做到吧?
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #2 於: 2007-12-10 17:17 »
我有啊!!!  我是希望再次針對搜尋出來的資料,再一次排序..............有沒有方法啊!!

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #3 於: 2007-12-10 17:40 »
我有啊!!!  我是希望再次針對搜尋出來的資料,再一次排序..............有沒有方法啊!!
既然已經排序好的東西何必在做一次排序??有看沒有懂
如果你是要作多個欄位的排序
SQL的order by就可以達到了
PS:
如果不愛善用google,那程度永遠不會進步
提示: sql order by
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #4 於: 2007-12-11 08:26 »
看懂了 :)那我就不做了.........因為已經有排序了><",SORRY 亂PO問題 :P

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1693
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #5 於: 2007-12-11 11:18 »
這是題外話....有時資料需要運算...如果簡單的 A+B 如果可以在 sql 算就可以用 order
但是並不是每次都能如願(沒有那麼好的事:P)...
這時就把運算完的資料丟到  array 裡 用  sort 去排序,很方便 ;D

ihy08

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #6 於: 2007-12-13 17:29 »
我想你想表達的意思...

應該說

預設是由大到小  然後使用者按一下 標題按鈕 就由小到大

類似

yahoo拍賣 那種方式嗎?

比如說今天我想看金額由小到大 按一下 按鈕 就會自動在排序一次


你指的是這個意思嘛!!= ="

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #7 於: 2007-12-13 17:37 »
恩!!! 我就是想表達這個,我現在只成功一半而已!!因為如果使用者連按二次,程式就會show出全部的資料><"

ex.search 標題 的 123 =>show 出有關123

第一次
按排序大->小  ok
按排序 小->大 ok

第二次
按排序大->小  show all  X
按排序 小->大 show all  X

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #8 於: 2007-12-13 17:41 »
恩!!! 我就是想表達這個,我現在只成功一半而已!!因為如果使用者連按二次,程式就會show出全部的資料><"

ex.search 標題 的 123 =>show 出有關123

第一次
按排序大->小  ok
按排序 小->大 ok

第二次
按排序大->小  show all  X
按排序 小->大 show all  X

($order == 'desc')? return 'asc': return 'desc';
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1693
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #9 於: 2007-12-13 17:50 »

($order == 'desc')? return 'asc': return 'desc';
我是這樣用
代碼: [選擇]
$order = (strtolower($_GET['order'])=='asc')?strtolower($_GET['order']):'desc';

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1693
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #10 於: 2007-12-13 17:56 »
恩!!! 我就是想表達這個,我現在只成功一半而已!!因為如果使用者連按二次,程式就會show出全部的資料><"
按的時候也要把 search 的變數送出去啊~~
--
才不會(程式就會show出全部的資料><")

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #11 於: 2007-12-14 08:15 »
我有把第一次變數送出去,只是要第二次,就show all,是不是還要另取一個變數再抓一次

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1693
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #12 於: 2007-12-14 09:02 »
我有把第一次變數送出去,只是要第二次,就show all,是不是還要另取一個變數再抓一次
啊就把(第一次變數送出去) 捉回來丟到連結裡:D

★Ann★

  • 可愛的小學生
  • *
  • 文章數: 24
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #13 於: 2007-12-14 09:05 »
有啊!!!! 只是再按一次排序就show all ><"

jaceju

  • 憂鬱的高中生
  • ***
  • 文章數: 106
    • 檢視個人資料
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #14 於: 2007-12-14 10:40 »
To ★Ann★:

基本原理是這樣的:

1. 保留你原先搜尋的條件,通常這個條件會放在網址。
2. 解析這段網址,把排序的欄位更換掉。

舉個例子,假設現在有個網址是這樣:

代碼: [選擇]
http://localhost/list.php?date=2007-12-25&status=1&col=id&order=asc
// 列出 2007-12-25 中 status 為 1 的資料

這裡資料列表預設排序欄位是 id asc ,也就是如果沒有指定的話,預設會在網址參數加上 &col=id&order=asc 。

假設我現在想依照人名反排序,那麼只要保留前面的 date=2007-12-25&status=1 ,然後把 &col=id&order=asc 換成 &col=name&order=desc 。

做法很多,我的方法主要是更動排序按鈕上的連結:

1. 利用 $_SERVER['QUERY_STRING'] 或 $_GET 排除掉 col 和 order 兩個參數,將剩下的條件參數保留下來 (也就是 date 和 status) 。強列建議使用陣列,而不要用字串剖析的方式。
2. 在建立排序按鈕時,先將剛剛保留的條件參數加上新的 col 和 order ,然後編成 Query String 。例如:
代碼: [選擇]
編號(遞增按鈕) => date=2007-12-25&status=1&col=id&order=asc
編號(遞減按鈕) => date=2007-12-25&status=1&col=id&order=desc
姓名(遞增按鈕) => date=2007-12-25&status=1&col=name&order=asc
姓名(遞減按鈕) => date=2007-12-25&status=1&col=id&order=desc
// 以此類推
3. 依序將目前的 http://localhost/list.php 加上剛剛編好的 Query String 然後放在每個按鈕的連結裡,這樣就完成了。

程式就讓你自己思考囉,因為這裡是不能給答案的。
« 上次編輯: 2007-12-14 10:45 由 jaceju »

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: 搜尋完-->排序顯示搜尋結果
« 回覆 #15 於: 2007-12-14 12:04 »
看一下這個,搭配一下 $_GET 就可以了....
http://tw.php.net/manual/tw/function.http-build-query.php
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/