2011-05-01 119 views
2

嗨,html表未從MySQL表中填充

我正在修改通過Google發現的一些腳本,該腳本監視登錄到網站的用戶。

它由包括本每一頁中的我想監控:

<? 
include_once("config.php"); 
include_once("functions.php"); 
?> 

config.php文件看起來像這樣(我已刪除了實際的數據庫信息):

<?php 
     DEFINE ('DB_USER', '');// database username 
     DEFINE ('DB_PASSWORD', '');//database password 
     DEFINE ('DB_HOST', '');//database host, usually localhost 
     DEFINE ('DB_NAME', '');//and finally the database name 
     $dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error()); 
     @mysql_select_db (DB_NAME) OR die('Could not select the database: ' . mysql_error()); 
?> 

的functions.php看起來像這樣:

<?php 
$page = $_SERVER['PHP_SELF']; 
$user = $_SESSION["name"]; 
$logq = "INSERT INTO logs (Name, Page, Date) VALUES ('$user', '$page', NOW())"; 
$logr = @mysql_query($logq); 
?> 

這工作正常,即我的數據庫中的表填充correctl年。

但是,應該在網頁上生成表來顯示MySQL表中的信息的文件不起作用。該文件,logs.php,看起來是這樣的:「沒有結果」

<?php 
     $lq = "SELECT id, Name, Page, DATE_FORMAT(date, '%d %M, %Y') as sd FROM logs ORDER BY id DESC LIMIT 50"; 
     $lr = @mysql_query($lq); 

     if($lr){ 
     echo "<table><th>Name</th><th>Page</th><th>Date</th>"; 
     while($lf = mysql_fetch_array($lr, MYSQL_ASSOC)){ 
     echo "<tr><td>" . $lf['Name'] . "</td><td>" . $lf['Page'] . "</td><td>" . $lf['sd'] . "</td></tr>"; 
     } 
     echo "</table>"; 
     } 
     else 
     { 
     echo "No results!"; 
     } 
?> 

即使有在MySQL表,我永遠只是獲取數據顯示何時瀏覽到該頁面。

任何人都可以看到什麼問題是?

感謝,

尼克

+2

您應該刪除'@',看看它吐出。另外,請嘗試手動運行查詢 – JohnP 2011-05-01 12:25:23

+0

這需要進行基本的調試。從mysql_query調用中除去'@',並輸出可能的mySQL錯誤,例如使用'if(!$ lr)trigger_error(mysql_error());'。 – 2011-05-01 12:25:53

+0

你有「id」專欄嗎? – 2011-05-01 12:28:35

回答

1

也許你在logs.php沒有db連接?如果你的代碼是完整的文件,那麼這應該是問題。 如果是這樣,只需在頁面頂部添加config.php即可。

+0

謝謝,這的確是問題所在。在我從代碼獲得代碼的原始演示頁面中沒有提到這一點。 – Nick 2011-05-01 14:03:15

1

有一件事我可以在查詢中看到的是,date是一個保留字。

您需要包裝在反引號:

"SELECT id, Name, Page, DATE_FORMAT(`date`, '%d %M, %Y').... 

或重命名列。

這可能會在您的查詢中拋出一個錯誤,即使您推薦使用trigger_error()推薦:您的服務器上可能已關閉錯誤報告。這是生產環境中的正確行爲,因爲您不希望用戶看到錯誤消息。在開發過程中,您可以激活錯誤報告來查看錯誤。

0

嘗試做這樣的

$query = "SELECT * FROM logs ORDER BY id DESC LIMIT 50"; 
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result)) { echo "<table><th>Name</th><th>Page</th><th>Date</th>"; echo "<tr><td>" . $row['Name'] . "</td><td>" . $row['Page'] . "</td><td>" . $row['sd'] . "</td></tr>"; echo "</table>"; }

希望它有助於