0

如果自该注册用户上次访问以来创建了一条 sql 记录,是否有可能有一个图像会改变,如果不满足条件,是否有另一个图像。

记录表matningar带有日期字段datum。也许下面的代码接近实现这一目标?!

    <?php

    $stmt = "SELECT * FROM matningar WHERE `datum` > date("F j, Y, g:i a", $database-    >getLastUserRegisteredDate()";
    $result=mysql_query($stmt);
    foreach($result as $rec){
    echo "<img src=\"images/somepicture.png\" />";
    } 
    ?>

非常感谢您对如何进行的一些意见!

4

2 回答 2

2

我相信最好的方法是在创建表时使用此方法存储更新的记录时间。

updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

这样,当您从数据库中选择记录并将它们显示在页面上时,您可以执行类似的操作以根据当前用户上次访问显示单独的图像:

foreach($results as $record) {
  if($record['updated'] > $currentUser->getLastVisited()) {
    echo "<img .... />"; // Has been modified since last visit
  } else {
    echo "<img .... />"; // Not been modified since last visit
  }
  // Display rest of this record
}
于 2012-05-31T15:29:26.627 回答
1

您可以计算返回的记录并使用条件语句来确定要显示的图像。例如使用您的代码:

/* Using a mysql query which is discouraged and will be depreceated in future */

      // declare variables
      $i = 0;
      $lastRegisteredDate = date("F j, Y, g:i a", $database->getLastUserRegisteredDate());

      // declare statement string
      $stmt = "SELECT * FROM matningar WHERE `datum` > $lastRegisteredDate";

      // execute query
      $result=mysql_query($stmt);

      // make sure query executed properly
      if (!$result) {
        die('Invalid query: ' . mysql_error());
      }

      // manually count the number of results
      while ($row = mysql_fetch_assoc($result)) {
        $i++;
      }

      // display image based on conditions
      if($i == 0) {
        // display one image
      }
      else {
        // display another image
      }

正如旁注 mysql 函数将在即将发布的 PHP 版本中被弃用,所以我将开始考虑使用 PDO 或 mysqli 库进行 mysql 查询。

/* Using the PDO library */

  // declare variables
  $i = 0;
  $lastRegisteredDate = date("F j, Y, g:i a", $database->getLastUserRegisteredDate());

  // declare database handler
  $DBH = new PDO( "mysql:host=$host;dbname=$dbname", $user, $pass );

  // prepare query
  $STH = $DBH->prepare( "SELECT * FROM matningar WHERE `datum` > ?" );

  // execute query
  $STH->execute( array( $lastRegisteredDate ) );

  // set fetch mode  
  $STH->setFetchMode( PDO::FETCH_OBJ );

  // manually count the number of results
  while ( $row = $STH->fetch() ) {
    $i++;
  }

  // display image based on conditions
  if($i == 0) {
    // display one image
  }
  else {
    // display another image
  }
于 2012-05-31T15:30:05.300 回答