2017-09-20 53 views
-1

我目前正在構建一個基本的時鐘輸入/時鐘輸出系統。基於數據庫中的當前值顯示不同的按鈕PHP

我有絕大多數工作,但我只需要一些指導。

用戶最初顯示一個頁面(index.php),他們必須從下拉列表(從數據庫填充)中選擇他們的名稱,然後單擊「登錄」。當他們點擊「登錄」時,他們選擇的名稱會被髮布到顯示他們姓名的下一頁(clock.php),並通過2個按鈕要求他們進入時鐘輸入或時鐘輸出。

2個按鈕(時鐘輸入和時鐘輸出),我想基於存儲在我的MySQL數據庫'clockAction'列中的當前值(「In」或「Out」)來隱藏其中的一個。

當用戶單擊其中一個按鈕時,會將一個條目添加到數據庫,並使用唯一的ID,名稱和按下的按鈕。數據庫還在其自己的列中添加時間戳。

我基本上需要一個查詢表,以查明'登錄'用戶是否'Clocked in'(由ClockAction值指定爲「In」),如果是,只顯示'Clock Out'按鈕在頁面上。反之亦然。但這必須是他們最近的入場券。

我現在有這個SQL查詢:

SELECT id, user, time 
FROM clock 
WHERE user = '" . $user ."' 
    ORDER BY time DESC LIMIT 1 

,當輸入直接在phpMyAdmin的工作(顯然我必須手動指定$ USER)。但我不知道如何將它構造成if和else語句。

這聽起來令人困惑,但它的一個基本前提,我只是無法解決如何實現這一目標。

在此先感謝,如果有人需要任何澄清,我很樂意這樣做。

傑克:)

+0

'WHERE USER =胡說和的loggedIn = LOGGED_IN和clockin = clockedin' –

回答

1

clockAction字段添加到您的查詢。

SELECT id, user, time, clockAction 
FROM clock 
WHERE user = '" . $user ."' 
    ORDER BY time DESC LIMIT 1 

和比較這方面的內容(假設你已經讀過您的查詢的結果提供給assoziative陣列$result

if ($result['clockAction'] == 'In') { 
    // do something 
} else { 
    // do the opposite 
} 
+0

謝謝您的回覆!不,我沒有把結果讀到數組中,我該如何去做這件事?謝謝 –

+0

,因爲我對你的應用程序一無所知,以及你如何訪問數據庫,我無法告訴你。查看PHP Dokumentation的例子,例如http://php.net/manual/en/pdo.query.php如果使用PDO – mirsch

+0

也許你可以給一個位代碼,你如何讀取數據庫 – mirsch

1

如果我理解正確你的問題,你的clock.php腳本需要查詢數據庫以獲取當前登錄用戶的最新條目,並查看最後一個條目是否爲「In」或「Out」的clockAction。我會寫一個查詢爲:
SELECT clockAction FROM clock WHERE user = '.$user.' ORDER BY time DESC LIMIT 1
由於您只需要知道用戶的最新條目是「In」還是「Out」,查詢只需要返回clockAction列,並使用ORDER BY時間DESC,如果「時間」按時間順序排列,則會得到最新條目的降序列表,並且限制1僅返回最新條目。然後你的PHP腳本可以將查詢結果分配給一個變量,例如$ lastClockAction,並且該變量可以用於渲染一個按鈕或另一個像這樣:
if ($lastClockAction == 'In') //code to render "Clock Out" button
else // code to render "Clock In" button

即使登錄用戶沒有任何條目,因爲那麼你的腳本應該只顯示瀏覽器的「Clock In」按鈕。

+0

感謝您回覆,我將如何分配的查詢結果就像你建議?謝謝 –

+0

這將取決於你如何在PHP訪問數據庫,您使用的是舊的mysql_query,或者您使用的PDO? – Ingo

相關問題