2014-10-10 156 views
1

我已經創建了一個搜索功能,並能夠顯示行。選擇,插入MySQL和PHP

但我不知道該怎麼處理這件事件事是什麼:

比如,我搜索名稱以J,並列出了開始的J與登錄時的所有名稱並沒有被註銷。意思是,timeOut已經從第一位置爲空。它顯示爲:

1 | Johny | 7:58 | (timeOut) 
4 | Jess | 8:05 | (timeOut)` 

(timeOut)是input type="button"。我想要的是每當我點擊註銷時,例如,我點擊johnny的超時時間,它會爲超時插入值now(),不會影響Jess的行。

我有這樣的代碼:

<?php 
$result=mysqli_query($con,"SELECT * FROM records WHERE PlateNumber LIKE '%$name%'"); 
while($row = mysqli_fetch_array($result)) { 
    if($row['TimeOut'] == null){ 
    echo "<table border='1'>" . "<tr>" ."<td style='width:100px;'>" . $row['Number']. "</td>". "<td style='width:100px;'>" . $row['PlateNumber']. "</td>". "<td style='width:100px;'>" . $row['TimeIn'] . "</td>" ."<td style='width:100px;'>" . "<form>" . "<input type='submit' name='logout' value='Log Out'/>" . "</form>". "</td>" . "</table>" ; 
      if(isset($_POST['logout'])){ 
        //HELP ME IN THIS PART 
      } 
    } 
} 
?> 

我不是在PHP真的很好,所以請忍受我這。謝謝你的幫助。

+1

您需要根據被註銷用戶一個更新查詢? – underscore 2014-10-10 04:09:17

+0

SELECT * FROM記錄WHERE PlateNumber LIKE'%$ name%'您應該爲TimeOut添加另一個where子句,因此它沒有執行性能。同時還爲名稱你必須要準確,因爲如果你的代碼讓所有結果(2條記錄)循環 – 2014-10-10 04:12:34

+0

雖然只顯示一個記錄,這下超時更新所有列。我錯過了一些東西 – yun 2014-10-10 09:25:51

回答

1

我想你的意思是不更新插入,你必須養活用戶標識以更新特定行。

你也不必每次產卵形式循環。 用表格代替

if(isset($_POST['logout'])) { // if logout button is submitted 
    // do not insert but update 
    $id = $con->real_escape_string($_POST['logout']); 
    $query = $con->query("UPDATE records SET TimeOut = NOW() WHERE id = '$id'"); 
} 

$name = $con->real_escape_string($name); 
$result = mysqli_query($con, "SELECT * FROM records WHERE PlateNumber LIKE '%$name%'"); 

echo '<form method="POST">'; 
echo '<table boder="1" cellpadding="10">'; 

while($row = mysqli_fetch_assoc($result)) { 
    if(empty($row['TimeOut'])){ 

     $id = $row['id']; 
     echo 
      "<tr>" . 
       "<td style='width:100px;'>" . $row['Number']. "</td>". 
       "<td style='width:100px;'>" . $row['PlateNumber']. "</td>". 
       "<td style='width:100px;'>" . $row['TimeIn'] . "</td>" . 
       "<td style='width:100px;'>" . 
       "<button type='submit' name='logout' value='$id'>Logout</button>" . "</td>" . 
      "</tr>"; 
    } 
} 

echo '</table>'; 
+0

我可以知道$ id的目的是什麼嗎?對不起,我只是想不出 – yun 2014-10-10 09:18:37

+0

@yun im假設你的表有一個id的權利? – Ghost 2014-10-10 10:11:45

+0

是的,我把它命名爲'數字',就試試它。謝謝 – yun 2014-10-10 10:13:54

-1

相反,你需要使用一個更新語句,並使用where子句範圍記錄到當前用戶關閉基於用戶ID的select語句。因此,對於你

這將是這樣的:

UPDATE records 
SET logouttime=now() 
WHERE userid='4' 
+0

這是一條評論而不是答案 – underscore 2014-10-10 04:09:39

+0

對不起。我在移動設備上,無法足夠快地進行編輯。這很好現在 – Brandon 2014-10-10 04:14:06

+0

儘量避免鏈接到w3schools(使用php.net代替),這是爲什麼http://www.w3fools.com/ – webeno 2014-10-10 04:38:54

0

您需要在輸入的「值」部分放置某種記錄ID。不只是「註銷」。您需要發佈「註銷jess」(或者更好,只是「Jess」,所以當您檢索它以從字符串中刪除「註銷」時,您不必編輯它)。通常這是通過主鍵字段完成的。但它也可以用任何獨特的領域來完成。因此,而不是value='Log Out'嘗試value='Jess'

然後$_POST['logout']實際上將包含Jess,你可以從它建立您的更新SQL查詢。

另一種方法是完全跳過形式,只是建立在「退出」旁邊的「傑西」,這將包含「GET」的參數,而不是POST一個網絡鏈接。可能會更容易在眼睛上。