2012-05-31 2 views
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\" />"; 
    } 
    ?> 

진행 방법에 대한 의견을 보내 주시면 감사하겠습니다.

답변

1

반환 된 레코드 수를 계산하고 조건문을 사용하여 표시 할 이미지를 결정할 수 있습니다. 예를 들어 코드를 사용하여 :

보조 노트의 MySQL의 기능은 내가 MySQL의 쿼리에 대한 PDO 또는 mysqli 라이브러리를 사용하여보고 시작하는 것, 그래서 곧 PHP 릴리즈에서 depreceated 할 예정 것처럼
/* 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 
     } 

.

/* 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 
    } 
+0

고마워요! 특정 값을 포함하는 레코드 만 선택하려는 경우 "SELECT * FROM"을 "SELECT value FROM"으로 바꿀 수 있습니까? 나 같은 초보자를 도우려는 너희들과 같은 사람들에게 정말 감사한다! :) sidenote에서 PDO 또는 mysqli 학습을 시작하는 것이 좋습니다. – user1424728

+1

"SELECT column FROM table WHERE column = desired value"를 사용하여 특정 값을 선택합니다. 저는 PDO를 좋아하지만 실제로 mysqli를 너무 많이 사용하지 않았습니다. 의견은 무엇을 사용해야하는지에 관해 꽤 분열되어 있습니다. 내 대답이 투표에 도움이되거나 대답을 수락하면 나를 도와 줄 것입니다. 감사. – chapman84

+0

좋아요! 나는 확실히 그것에 대해 조사 할 것이다! 그 못생긴'$ stmt' 문자열을 바꾸지 않은 것에 대해서는 – user1424728

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 
} 
+0

+1 'UP UPDATE CURRENT_TIMESTAMP'을 추천하고, 멋진 foreach-loop를 +1하십시오. (결과 세트에서'fetch_all'을 호출해야합니다 - PDO 나 mysqli가 사용된다고 가정 할 때) –

관련 문제