0

次のプログラムはまさにこれを行います!

<?php
/************************************
AIM: To retrieve and echo a random item from a database, and continue to echo the same item whenever and whereever the page is reloaded, for five seconds. After the five seconds is up, the program must echo another random item, and contine ad infinitum.
CONDITIONS: The program cannot echo two results in a row. (In effect the same result for ten seconds).
*************************************/
// Get ready to seed a random value from future 'rand()' function. Seed for 5 seconds.
srand(floor(time() / (5)));

// Retreieve all rows from table 'dogs'.
$result1 = $mysqli->query = new mysqli("SELECT * FROM dogs", MYSQLI_USE_RESULT);

// See how many rows are in 'dogs'.
mysqli_result::$num_rows;

// Generate a random value between 1 and the number of rows in 'dogs'.
echo $random = rand(1,$num_rows) . '<br>';

// Find the current date as a unix timestamp.
echo $currentdate = time() . '<br>';

// Find the time ten seconds ago.
echo $datetensecondsago = $currentdate - 10;
echo '<br>';

?>

ただし、同じランダムデータベースアイテムを2回続けてエコーしないようにする方法がわかりません!

データベースの図は次のとおりです。

Table Name = dogs
id  |  name  |  lastused
------------------------
1   |  Rover |  1362960167
2   |  Chip  |  1362960123
3   |  Rex   |  1362960178

答えは次のようなmysqlクエリにあると思います

SELECT * FROM dogs WHERE dateused<$datetensecondsago LIMIT 1

中古品の使用時間を更新しましたが、うまくいきません!

助けてくれてありがとう!

4

1 に答える 1

0

ランダムな行をセッション変数に保存できます (ページをリロードしても (セッションの有効期限が切れていなくても) アクセスできます)。

 session_start();
 // store session data
 $_SESSION['my_variable'] = 'something';

次に、要素がすでにエコーされているかどうかを確認するか、(より良い) SQL の WHERE 句を使用して除外することができます:
SELECT ... FROM ... WHERE id <> LAST_ID(幅 LAST_ID = 最後にエコーされた要素の id)。


SELECT COUNT(*) FROM tablemysql テーブルの行数を取得するために使用できます。


テーブルからランダムな行を取得する簡単な方法があります。

SELECT * FROM table ORDER BY RAND() LIMIT 1

類似しているがより高速な方法もあります(興味がある場合は、 google mysql randomのみ)


JavaScript や AJAX の使用を検討したことはありますか?
JavaScript を使用すると、コンテンツを変更するためにページをリロードする必要はありません。

于 2013-03-11T15:21:10.743 に答える