台灣最大程式設計社群網站
線上人數
784
 
會員總數:246035
討論主題:189623
歡迎您免費加入會員
討論區列表 >> PHP >> mysql資料呈現
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
mysql資料呈現
價值 : 200 QP  點閱數:638 回應數:11
樓主

momo
門外漢
0 2
92 8
發送站內信

各位好
要做討論室線上預約
網頁要呈現的樣子如圖
https://imagizer.imageshack.us/v2/931x689q90/923/jtAXuV.png
點選上面日期後,下面會呈現當日被預約的時段以及可預約的時段
討論室左右各有兩個欄位
以第一列為例,由左至右四個欄位分別為:討論室左08:00-08:30、討論室左08:30-09:00、討論室右08:00-08:30、討論室右08:30-09:00
之後以此類推
被預約的時間,以藍底呈現

程式碼如下:


但呈現出來結果表格會重複(如附圖框圈處)
https://imagizer.imageshack.us/v2/882x761q90/921/HjGYxF.png
且只會出現一個時段的開始時間,其他時段的開始時間不會出
(如有三筆紀錄分別為:0800-0830、0900-0930、1100-1130,只會出現0800-0830這個時段的開始時間0800)
好像是因為for($i=0 ; $i<$total_records ; $i++){....} 這行的關係
想請問是否有其他方法可以解決?
謝謝!

搜尋相關Tags的文章: [ mysql ] , [ array ] ,
本篇文章發表於2016-03-09 11:11
1樓
回應

彩虹
檢舉此回應
一整個看不懂你在寫什麼阿~~~~

1.為什麼你下面整個表格會包在迴圈裡阿~~
for($i=0 ; $i<$total_records ; $i++){....}

2.你說;「只會出現一個時段的開始時間,其他時段的開始時間不會出,(如有三筆紀錄分別為:0800-0830、0900-0930、1100-1130,只會出現0800-0830這個時段的開始時間0800)
因為你$row你沒有跑迴圈,只會有第一筆的值..

3.你好多判斷式我看不懂用途在哪

本篇文章回覆於2016-03-09 11:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

momo
檢舉此回應
您好,

本來表格是沒有包含在迴圈裡的
顯示結果就會變成只出現紀錄的最後一筆
才想說試放在迴圈裡
所以是因為$row沒有迴圈囉?

if($queryCount[0] != 0){
這行前面的那些判斷是顯示當天日期,那個只是順便貼上去沒有影響
寫在for迴圈後面的判斷,是判斷mysql抓的資料是討論室左還是右,時間是什麼時候,並將表格對應的位置改顏色

謝謝您!
本篇文章回覆於2016-03-09 11:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

彩虹
檢舉此回應
我覺得你先學會把全部資料都列出來

後續再來談如何將資料放入到對應的位置上
本篇文章回覆於2016-03-09 12:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

momo
檢舉此回應
您好,

之前有把資料全部列出
這部分已刪掉
我會再看看如何放到對應位置
謝謝!
本篇文章回覆於2016-03-09 13:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

momo
檢舉此回應
您好,

我將程式碼改為以下:


現在可以對應表格並顯示顏色
但要如何才能連續顯示顏色?
例如預約時間是08:00-10:00
第一列的第一欄代表08:00-08:30 所以這欄有變顏色沒錯
但要怎麼讓08:30-10:00的相對欄位位置也跟著變顏色?

我的資料庫裡有討論室左、日期、開始時間與結束時間

謝謝~
本篇文章回覆於2016-03-09 15:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

彩虹
檢舉此回應
是有一個方式比較簡單,但這是很笨的方法就是了...將就用一下,我延用你的程式瑪

兩個步驟就可以結束
1.在該資料表加上一個新的欄位,如「tdName」,在新增預約時,同時紀錄該位置(L1 or L2 or R7 or R8...等)
2.


這邊就完全不用套入任何地方,很乾淨

本篇文章回覆於2016-03-09 15:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

彩虹
檢舉此回應
依你現在的設計,你只能把那三個時間切割成各自一個了...
不然只會越加越多判斷式,且再多的判斷式,到最後一定會出問題
本篇文章回覆於2016-03-09 15:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

momo
檢舉此回應
您好,

請問您說的三個時間切割成各自一個
是說08:30-10:00
分別切成08:30-09:00、09:00-09:30、09:30-10:00
這樣嗎?

謝謝!
本篇文章回覆於2016-03-09 16:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

彩虹
檢舉此回應
08:30-10:00分別切成08:30-09:00、09:00-09:30、09:30-10:00 存到資料庫
本篇文章回覆於2016-03-09 17:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我只說幾個問題點給你參考

1.css定義。沒必要用程式來區分。直接定義就行了。可以善用class處理。10~42行就可以省略掉了。還有其下有用style定義的。都沒必要後置定義。直接定義就行了。

2.善用 while($row = mysql_fetch_array($resultQueryCurrentDate)){} 的方式來取得資料。沒必要還得獲取資料數然後用for跑

3.同1的意思。td實在沒必要給它name。如果只是為了變色處理。class不就行了。(這招是哪學的啊,我好想知道)

4.td用colspan="1".....這個.....該怎麼說。知道colspan的意思嗎??不宣告colspan其預設就是1了。不明白你宣告這個做什麼。

5.資料庫及參數名不要用中文。免除一些不必要的麻煩。

至於時間判斷的部份。我會偏向用區域性的方式定義。反正就4塊。直接判斷預約的時間點。在給與參數就行了
正常的規化我會用二維陣列
如 $arr[區段時間][區格]

區段時間。由於你的每一行都是整點為主。我會讓它是8~22的值。區格則是1~4 1和2就代表左的半小時區段。3如4就是右的半小時區段
這樣可以先在資料載入時先行建立出來。

如:登記了左8:00~9:30的使用時間
其陣列就是
$arr[8][1] = 1;
$arr[8][2] = 1;
$arr[9][1] = 1;
登記了右9:30~10:30
$arr[9][4] = 1;
$arr[10][3] = 1;



以上是其中一招。

另外一招就是區分法。

最後再帶入陣列值來呈現表格。並用class來定義變色。
本篇文章回覆於2016-03-09 17:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

momo
檢舉此回應
謝謝兩位大大!!
我來試試看~
本篇文章回覆於2016-03-10 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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