2 votes

La table html n'est pas remplie à partir de la table MySQL

J'adapte des scripts que j'ai trouvés par le biais de Google et qui surveillent les utilisateurs qui se connectent à un site web.

Cela consiste à inclure ceci dans chaque page que je veux surveiller :

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

config.php ressemble à ceci (j'ai enlevé les informations sur la base de données actuelle) :

<?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 ressemble à ceci :

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

Cela fonctionne bien, c'est-à-dire que la table dans ma base de données est remplie correctement.

Cependant, le fichier qui est censé générer un tableau sur une page web pour afficher les informations de la table MySQL ne fonctionne pas. Le fichier, logs.php, ressemble à ceci :

<?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!"; 
      } 
?>

Bien qu'il y ait des données dans la table MySQL, j'obtiens toujours le message "Aucun résultat" lorsque je navigue sur la page.

Quelqu'un peut-il voir quel est le problème ?

1voto

Pekka 웃 Points 249607

Une chose que je peux voir dans votre requête est que date est un mot réservé.

Vous devez envelopper ça dans des backticks :

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

ou renommer la colonne.

Il s'agit probablement d'une erreur dans votre requête que vous ne voyez pas malgré l'utilisation de l'outil de gestion de l'information. trigger_error() recommandation : Les rapports d'erreurs sont probablement désactivés sur votre serveur. C'est le bon comportement dans un environnement de production, car vous ne voulez pas que l'utilisateur voie les messages d'erreur. Cependant, pendant le développement, vous pouvez activer le rapport d'erreurs pour voir ce qui ne va pas.

1voto

Tokk Points 2705

Peut-être n'avez-vous pas de connexion à la base de données dans logs.php ? Si votre code est le fichier complet, cela devrait être le problème. Dans ce cas, il suffit d'inclure config.php en haut de la page.

0voto

Tomasz Golinski Points 663

Essayez de le faire comme ceci

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

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X