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 リリースで廃止される予定なので、mysql クエリに PDO または mysqli ライブラリを使用することを検討し始めます。

/* 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 に答える