2017-01-31 2 views
0

Ich bin fest mit dem Versuch, dieses Problem herauszufinden, es ist eine lange Zeit seit ich mysql Anrufe gemacht habe.mysql Unix timestamp überprüfen, ob 2 Stunden verflacht

ich will von Reihen „user_id“, „Eintrag“ und „Zeit“ und sehen, ob mindestens 30 Minuten vergangen sind zu überprüfen und, wenn es die Benutzer alarmiert hasnt

mein Code so weit ist:

$chkquery = "SELECT * FROM wpqi_myCRED_log WHERE entry='quiz' AND user_id='1' AND time < unix_timestamp() - 1800"; 

und dann, wenn es mehr als 30 Minuten waren dann vielleicht so etwas wie dies

if($time_diff >= 1800) { 
    echo "Yay! It has been 30 minutes!"; 

} else { 
    $remaining = (1800 - $time_diff); 
    echo "Wait! Its not been 30 minutes\n"; 
    echo "please come back in ".date ("i:s" , $remaining)." minutes"; 
} 

ich möchte nicht sie das Quiz tun mehr als alle 30 Minuten thx in ad vance

+0

Wenn Sie ein MySQL 'DATETIME'-Feld verwenden können, tun Sie es. Das heißt, Sie können Folgendes tun: 'WHERE ... time tadman

+0

es ist Teil einer Wordpress-Site und ich habe keine Kontrolle über das ich wünschte, sie hätten das Plugin so gemacht –

+0

Ah, in diesem Fall bist du irgendwie fest. Es ist immer nervig, mit ungeplanten UNIX-Zeiten in MySQL umgehen zu müssen. Ich denke, was Sie hier brauchen, ist eine Spalte, die die nächste Auslösezeit darstellt, Sie können diese dreißig Minuten voraus setzen, oder wenn Sie es auslösen, behalten Sie etwas in der Sitzung, die die letzte Auslösezeit darstellt. – tadman

Antwort

0

ok das ist, was ich getan habe, es ist wahrscheinlich chaotisch und kann aufgeräumt werden, aber scheint zu arbeiten, irgendwelche Vorschläge, die ich alle Ohren bin!

$user_id ="1"; 
$refType="completing_quiz_full"; 

//Minutes allowed between plays 
$minutesAllowed = 120; 

// take minutes allowed and subract 
$get2hour = time() - ($minutesAllowed * 60); 

$chkquery = "SELECT * FROM wpqi_myCRED_log WHERE ref='$refType' AND user_id='$user_id' AND time >= $get2hour order by time desc limit 1"; 
$chk = mysql_query($chkquery) or die($chkquery."<br/><br/>".mysql_error()); 
$num_rows = mysql_num_rows($chk); 

//echo "this many rows meet that criteria is : ". $num_rows. "<br>" ; 

if ($num_rows > 0) { 
    while($row = mysql_fetch_array($chk, MYSQL_ASSOC)){ 
     $entry = $row['entry']; 
     $coin = str_replace("%plural%","Burst",$entry); 
     echo "<br> You already received ". $coin. "<br>" ; 

     // get time from Table 
     $then =$row['time']; 
     $played = date('h:i:s A', $then); 

     //Get the current timestamp. 
     $now = time(); 

     //Calculate the difference. 
     $difference = $now - $then; 

     //Convert to nearest minute 
     $minutes = floor($difference/60); 

     //now subtract minutes we allowed 
     $timeLeft = $minutesAllowed - $minutes; 

     echo "You Have ". $timeLeft. " Minutes till you can play again<br> You Last Played at ". $played. "<BR>"; 

     } 

     } Else { 

    echo " now we can show your the content cause its been over 2 hours!! "; 

     } 
Verwandte Themen