台灣最大程式設計社群網站
線上人數
688
 
會員總數:245123
討論主題:189032
歡迎您免費加入會員
討論區列表 >> PHP >> 在畫面輸出時省略資料相同的欄位
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
在畫面輸出時省略資料相同的欄位
價值 : 25 QP  點閱數:727 回應數:13

樓主

Sanji
門外漢
0 36
533 79
發送站內信

舉例來說:
<< SQL 搜尋語法 >>
得到資料如下:
國家 血型 姓名
英國 A KEN
英國 A BEN
英國 B GG
英國 B YY
美國 O AMER

那我需要輸出在畫面上的結果是:
國家 血型 姓名
英國 A KEN
BEN
B GG
YY
美國 O AMER

請問要怎麼用出這樣的輸出呢
我嘗試過 在 搜尋語法前 先用變數紀錄會有相同欄位的值
讓它在找下一筆的時候 如果一樣就不輸出
可是這樣會碰到一個問題
就是萬一一次搜尋有好多筆
那就都會輸出那一次重複的了
請各位大大幫幫我 謝謝




搜尋相關Tags的文章: [ MYSQL ] , [ PHP ] , [ 程式 ] , [ 幫助 ] , [ help ] ,
本篇文章發表於2017-08-03 21:32
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

Sanji
檢舉此回應
輸出畫面範例那邊的排版跑掉了抱歉
我在這邊再打一次
國家 血型 姓名
英國 A KEN
BEN
B GG
YY
美國 O AMER
本篇文章回覆於2017-08-03 21:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小魚
檢舉此回應
一次搜尋有好多筆
那就都會輸出那一次重複的了

這句話聽不懂,
資料是一列一列處理,
怎麼會有一次搜尋好幾筆?
另外如果你有排序的話,
就會很容易判斷了。
本篇文章回覆於2017-08-03 22:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Sanji
檢舉此回應
小魚大大
因為我的搜尋條件是在其他搜尋條件完後再搜尋
類似明細表這樣
所以迴圈在跑的時候
第一次 會出現可能兩筆
那這兩筆的重複欄位我就沒辦法省略了
本篇文章回覆於2017-08-03 23:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
你也可以第一圈就先省略,
只要留下主鍵(關聯欄位)就可以了。
本篇文章回覆於2017-08-04 07:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
搜尋時先做排列,將國家、血型做為排序條件放在最前面
輸出時用變數記錄上筆資料的國家和血型,然後比較是否相同,相同就不輸出
本篇文章回覆於2017-08-04 09:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Sanji
檢舉此回應
回覆小魚大大
因為我做的東西是類似訂單這樣
第一次的搜尋可能是交易時間 訂單價格 訂單名稱之類的
然後再從符合這些訂單的條件中
再搜尋一次 把旅客的資料找出來輸出
所以一次就有可能出現多筆符合的
所以我也沒辦法在第一次迴圈中省略

回覆迷路大大
我目前的做法就是如此
我用變數來記錄前一筆
這是我的方法:
假設欄位名稱是國家=country, 血型=blood
我先用變數紀錄
$country = $ac[0];
$blood = $ac[1];
然後搜尋
if($country <> $ac[0])
輸出
else
不輸出
blood亦同

只是就會出現一次兩筆的搜尋結果
所以輸出結果就會如下:
國家 血型 姓名
英國 A KEN
英國 A BEN
B GG
B YY
美國 O AMER

由於KEN 和 BEN 的資料是一起出現的 所以他們的資料都被輸出
但GG YY 是第第二次搜尋出來的 所以變數有記錄到 故 國家不輸出 但因為血型不同 所以也都被輸出
請問我有沒有辦法能在一次搜尋中抓到一筆資料來記錄呢?




本篇文章回覆於2017-08-04 16:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

彩虹
檢舉此回應
建議你直接把這整個程式碼貼上來
不要用文字描述,你提供這樣子的資訊,我們一樣只能用猜的
本篇文章回覆於2017-08-04 16:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Sanji
檢舉此回應
抱歉彩虹大大
因為程式碼很冗長
所以我才沒有貼
而且主要原因我覺得敘述或舉例可能會比較清楚
本篇文章回覆於2017-08-04 17:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

彩虹
檢舉此回應
你覺得敘述或舉例可能會比較清楚

對舉例是會比較請出沒錯,我們也看得懂

但最怕不貼程式碼的
因為你會認為你程式沒問題
然後我們也看不到你到底是怎樣運作
你的判斷式 你的變數位置 你的迴圈 我們都看不到

==============================================
題外話
#5樓迷路說的方式就是你要方法了,他也敘述得很清楚了

然後你是不是一樣聽不懂,或不知道怎麼做
這時候你是不是會希望我們丟程式碼給你看,你才能真正懂


所以...嗯? 思考一下










本篇文章回覆於2017-08-04 17:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

os_dd
檢舉此回應
看了一下需求還蠻不一樣的
寫一個送你
這段程式我試過了 是完全符合你要的
只要改一改code就行了


本篇文章回覆於2017-08-04 17:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

os_dd
檢舉此回應
$arr1[] .= $F1['country'];
這個 點可以拿掉 我在寫其它的時候忘了刪
本篇文章回覆於2017-08-04 17:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
@os_dd

我覺得你因該不了解他的需求。
而且~~~~~我居然看到count操作陣列的方式。
你不知道什麼是foreach嗎???

再來~~~你知道array_unique 的用法,這樣處理下去會死人吧??

麻煩@Sanji 最好還是忽略#10的程式碼。

在這邊我先了解一下你的實際問題
你希望將如下的資料

變成如下的顯示方式嗎??


因為你排版沒排好。我只能依片段猜測。

一般來說,如果排序的欄位是固定的。我會直接用指定變數來儲存。
不過照你的需求是欄位不固定的。會依搜尋欄位來區分。

這邊我會需要了解的是,欄位的先後順序為何。畢竟這是會影響到連續性。

如 sort 國家、血型、姓名
會不會變成用血型、國家、姓的排序方式
畢竟如果是變成血型、國家、姓的方式資料因該就會變成


所以你得先完整的說清楚情況。多重性為何。
因為這還會有跟sql語法相關的東西。
key值是需要用sql語法先取出name後。才能去做程式控制。
本篇文章回覆於2017-08-04 18:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

可樂快跑
檢舉此回應
麻煩@Sanji 最好還是忽略#10的程式碼。

這絕對是這篇文章今日最中肯的一句話,沒有比這個更中肯的了。
但我想說的是,最好還是忽略os_dd所有的程式碼。
從以前到現在幾乎沒有一次code幫上忙的,還越幫越忙。

看看那一堆亂七八糟的echo
本篇文章回覆於2017-08-04 18:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.