2016-08-12 16 views
0

問題は、私の変数$target_timeがうまく動作しないということです。フォームの送信後に変数が変更されない

ユーザプレス送信ボタンが、名前が bidある要素の値は、 if (isset($_POST['bid'])) {によって実行されるが、 $target_time$current_time以下であり、それは単に 1470996804 >= 900を実行する代わりに、フォームの提出に15分を加算
if (isset($_POST['bid'])) { 
    $stmt10->execute(array(
    'user_id' => $usid, 
    'user' => $login, 
    'bid' => $_SESSION['bid'] 
)); 
} 

$target_time = strtotime('+15 minutes', strtotime($stmt14)); 
$current_time = time(); 

echo $current_time . ' >= ' . $target_time; 

$seconds_left = $target_time - $current_time; 
$minutes_left = floor($seconds_left/60); 
$seconds_left -= $minutes_left * 60; 
$seconds_left = floor($seconds_left); 

if ($current_time >= $target_time) { 
    $stmt9->execute(); 
    $r1 = $stmt9->fetch(PDO::FETCH_ASSOC); 
    $stmt12->execute();  
    $r2 = $stmt12->fetch(PDO::FETCH_ASSOC); 
    $stmt11->execute(array(
      'win' => $r1['bid'], 
      'user_id' => $r2['user_id'] 
)); 
    $stmt13->execute(); // Clears bid table 
} 

日付。 if ($current_time >= $target_time) {の条件の真である1470996804 >= 900の結果を与えるので、フォームをサブミットした直後に実行され、$stmt13->execute();が実行されるので、すべてのテーブル内容が削除されます。フォーム提出時に何をすればいいですか?$target_timeがデータベースから取得され、if ($current_time >= $target_time) {の条件はすぐには成立しませんが、送信ボタンが押された15分後にのみ実行されますか?

+0

私はあなたが求めていることを理解するのに苦労しています。ユーザーがフォームを送信してから15分後にクエリを実行しますか? – BadHorsie

+0

はい、まさに私が欲しいものです。 – Luke

+0

私は15分遅れるのではなく、ユーザーがフォームを送信した直後にエラーを表示しません。 – Luke

答えて

0

私はそれを自分で解決しました。はい、$stmt14はPDOステートメントで、実行前にフェッチされます。 if ($current_time >= $target_time && $stmt2 >= 1) {ここで、$stmt2はPDOのカウントステートメントなので、1行あることを確認して最後に挿入された行の値を取得します:)

関連する問題