2016-07-29 11 views
1

ich eine SQL-Tabelle haben: Mytable, wie:Wie i1 neue Zeile aus SQL-Tabelle auswählen, nachdem alle 24 Stunden

id  | val1 | val2 
----------------------------------- 
1   a    567 
2   zzx   7678 
3   gtft    5435 

Nun habe ich eine PHP-Seite - magic.php, mit so etwas wie :

$query = "SELECT * FROM mytable WHERE id='$id'"; // id keeps changing per day(i want this) 
$result=mysqli_query($conn, $query); 
$data = mysqli_fetch_assoc($result); 

echo "Value1 is:".$data['val1']."<br/>"; 
echo "Value2 is:".$data['val2']; 

Jetzt möchte ich $ query id = 1 holen & dann neben id, nach jeweils 24 Stunden zu beginnen. Und wenn die Zeilen fertig sind, springt es zurück zum Neustart.

Ich habe viel probiert: sleep(), für/while-loops, Ausgangspufferung mit Verzögerung & CRON JOBS. Aber noch kein Erfolg. Irgendeine Vermutung, wie man das genau erreicht? Vielen Dank im Voraus für Ihre wertvolle Zeit.

+2

Cron-Jobs Ihr Freund sind –

+2

versuchen Sie einen anderen Tisch mit dem Sie einfügen, was das Programm Zeile eingeschaltet ist, statt den „Zustand des Speicherns "im Schleifen- oder Cron-Job selbst. –

+0

Ändern sich die Werte in 'mytable' stark? –

Antwort

0

Wie wäre es damit?

Zuerst, lassen Sie uns herausfinden time() starten und notieren. Jetzt

$start = 1469804863; 

, lassen Sie uns die Anzahl der Zeilen in der Tabelle finden:

$num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0); 

nun den Unterschied in Tagen Berechnung:

$delta = (time() - $start)/86400; 

Nun wollen wir herausfinden, an welchem ​​Tag wir brauchen :

$row_number = (int)$delta % $num_rows; 

Das ist es! Wählen Sie jetzt die richtige Reihe!

$row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1"); 

Auf diese Weise wird $ row_number von 0 und wächst wie 1,2,3,4 beginnen und so weiter, bis es die Anzahl der Zeilen erreicht, wird 0, dann wieder und so, 1,2,3 wird auf, in einer endlos-Schleife

Jetzt

, um es kurz zu halten:

$num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0); 
$row_number = floor((time() - 1469804863)/86400) % $num_rows; 
$row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1"); 
+0

Ehrfürchtige Logik. Hüte aus :) –

+0

@ luna.romania, hat es für Sie funktioniert? Ich dachte, Sie könnten meine Antwort als Gewinner markieren, wenn es so wäre –