2015-10-21 107 views
-3

我在尋求兩件事的幫助。所以基本上我已經爲我的朋友和我一個短信網站,但我已經橫跨兩件事情來了:PHP和MySQL錯誤&更新

  1. 我的消息的網站告訴你什麼時間發來的消息,但在每一個你打刷新時間的分鐘時間更改到當前時間

  2. 在一分鐘你必須刷新以查看新消息,所以我想知道如何使這個自動,我聽說過Ajax,但我不明白它是如何工作的你需要向我解釋它

代碼如下:

<?php 
    $username = ""; 
    $password = ""; 
    $server = ""; 
    $database = ""; 
    mysql_connect($server, $username, $password); 
    @mysql_select_db($database) or die("Unable to select database"); 
?> 

<!DOCTYPE HTML> 
<html lang="en"> 

    <head> 
    <meta charset="UTF-8"/> 
    <title>b!ip</title> 
    </head> 

    <body bgcolor="#0000FF"> 

    <?php 
     date_default_timezone_set('Europe/London'); 

     $searchQuery = "SELECT * FROM messages"; 
     $searchResults = mysql_query($searchQuery); 

     $firstnameData = mysql_result($searchResults, 0, 'forename'); 
     $lastnameData = mysql_result($searchResults, 0, 'surname'); 
     $messageData = mysql_result($searchResults, 0, 'message'); 
     $datetimeData = mysql_result($searchResults, 0, 'datetime'); 

     if(isset($_POST["submit"])) 
     { 
     $firstname = $_POST["forename"]; 
     $surname = $_POST["surname"]; 
     $message = $_POST["message"]; 
     $datetime = date('Y-m-d H:i:s'); 

     mysql_query("UPDATE messages SET `forename` = '$firstname' WHERE `id` = '1'"); 
     mysql_query("UPDATE messages SET `surname` = '$surname' WHERE `id` = '1'"); 
     mysql_query("UPDATE messages SET `message` = '$message' WHERE `id` = '1'"); 
     mysql_query("UPDATE messages SET `datetime` = '$datetime' WHERE `id` = '1'"); 

     } 

     // date_default_timezone_set('Europe/London'); 
     // echo date('Y-m-d H:i:s'); 
    ?> 

    <center> 
     <table cellpadding="0" cellspacing="0" width="100%" height="50"> 
     <!-- MSCellFormattingTableID="12" --> 
     <tr> 
      <td height="50" width="100%"> 
      <!-- MSCellFormattingType="content" --> 
      <p align="center"><font face="Comic Sans MS" color="#FFFFFF"> 
      <span style="font-size: 60pt">b!ip</span></font></td> 
     </tr> 
     </table> 
    </center> 
     <table cellpadding="50" cellspacing="0" width="100%" height="50%"> 
      <tr> 
       <td height="50" width="100%"> 
        <form action="#" method="POST"> 
         <center><p><font color="#FFFFFF">First name: <input type="text" name="forename"/>&nbsp;&nbsp;&nbsp; 
         Last name: <input type="text" name="surname"/>&nbsp;&nbsp;&nbsp; 
         Message: <input type="text" name="message"/>&nbsp;&nbsp;&nbsp;&nbsp; 
         <input type="submit" value="Send" name="submit"/></font></p></center> 
        </form> 
       </td> 
      </td> 
     </table> 
     <table cellpadding="50" cellspacing="0" width="100%" height="50%"> 
      <tr> 
       <td height="50" width="100%"> 
        <center><h1><font color="#FFFFFF" face="Comic Sans MS"><?php echo "$messageData <strong>by $firstnameData $lastnameData at $datetimeData</strong>"; ?></font></h1></center> 
       </td> 
      </td> 
     </table> 
    </body> 
</html> 
+0

1 - 您正在使用'$ datetime = date('Y-m-d H:i:s');',這將始終返回當前時間。你什麼時候保存它,所以它不會改變?你可能存儲'message',爲什麼不''date/time' ?.你也許應該把它插入到數據庫中。 2 - 我不認爲教程適合這裏。 – FirstOne

+0

您可以一次更新多個列。這是開放的SQL注入。 – chris85

+0

我在這種事情上是初學者,再加上我14歲,所以你可以更多地解釋它,謝謝 –

回答

0

您應該切換到PDO或MySQLi,因爲MySQL已折舊並且將來會被刪除。按下後,您將遇到的未來錯誤是您無法使用引號(也容易受到SQL注入攻擊),這是因爲您沒有采取任何措施來防止此問題。爲了解決這個問題,確保從$ _POST或$ _GET任何事情是包裹着mysql_real_escape_string

解決你的時間的問題,你可以使用MySQL的函數NOW()

解決您的AJAX的問題,你可以從這個方便的學習YouTube的播放列表教程:https://www.youtube.com/watch?v=tp3Gw-oWs2k&list=PL6gx4Cwl9DGDiJSXfsJTASx9eMq_HlenQ

後修補一切提到你的代碼應該是這個樣子:

if(isset($_POST["submit"])) 
{ 
    $firstname = mysql_real_escape_string($_POST["forename"]); 
    $surname = mysql_real_escape_string($_POST["surname"]); 
    $message = mysql_real_escape_string($_POST["message"]); 

    mysql_query(
     "UPDATE messages SET 
      `forename` = '$firstname', 
      `surname` = '$surname', 
      `message` = '$message', 
      `datetime` = now() 
     WHERE `id` = '1'" 
    ); 

} 

東西拿的注意的是,在我離開的id =「1」是因爲我對你的數據庫不熟悉;不管它看起來只是改變一條消息的值。

希望這會有所幫助!

+0

日期仍然會到當前日期,我認爲這是因爲我的數據庫中有CURRENT_TIMESTAMP,所以我刪除它,但它仍然不起作用 –

+0

您是否正在刷新在您發送消息的頁面上?如果是這樣,那麼$ _POST數據仍然存在,並會再次更新消息。 – Jujunol

+0

是的,這一切都在同一頁面上 –