Seite 1 von 1
"timer" - helft mir bitte :)
Verfasst: 08.12.2002 15:03
von batax
Hi,
hätte folgende Frage :
Wenn eine Person auf einen Button/Link klickt, soll das registriert werden(also inner txt oder so vermerkt) und nach einer bestimmten zeit soll dann etwas ausgeführt werden also z.b. :
Manfred (*g*) klickt auf den Link "bauen" und nach 2 stunden kommt auf der hp "fertig gebaut" evtl noch eine zeitanzeige wielang es noch bis zur vollendung dauert
(wie) geht sowas ?

Verfasst: 08.12.2002 15:37
von Pyramide
Du legst dir in einer Datenbank eine Tabelle an, die u.a. ein Feld vom Typ Datum enthält. Wenn dann ein Link angeklickt wird, berechnest du anhand des aktuellen Datums, wann das Bauen fertig sein wird und schreibst das in die DB. Dann rufst du in der Abfrage die Differenz zwischen aktuellen Datum und gespeichertem ab. Dann kannst du entweder ablesen, wie lange es noch dauert oder wann es gebaut wurde und entsprechend Aktionen ausführen.
Verfasst: 10.12.2002 13:20
von batax
hmm, könntest du da maln beispiel machen ?

Verfasst: 10.12.2002 17:34
von Pyramide
Ich gehe mal davon aus, daß du sowas wie Die Ewigen erstellen willst...
Tabelle Planung: ID(primary key) - zeit(unix timestamp) - besitzer - typ - ?? (was du halt an informationen Speichern willst). Tabelle Ereignisse mit der gleichen oder einer ähnlichen Struktur.
In Planung wird das eingetragen was in Auftrag gegeben wird, in Ereignisse was wirklich passiert ist. Bei jedem Seitenaufruf machst du dann eine Abfrage die etwa so aussieht:
Code: Alles auswählen
//Alle Planungen, die bis jetzt hätten gebaut werden müssen
$r = mysql_query("SELECT * FROM planung WHERE zeit <= " . time());
//sofort löschen, damit der nächste Seitenaufruf (der ja bei vielen Usern sofort danach passieren kann) die Planungen nicht mehr erhält
mysql_query("DELETE FROM planung WHERE zeit <= " . time());
//Liste der erhaltenen Planungen durchlaufen
while($row = mysql_fetch_array($r))
{
//Die Planung ausführen, z.B. das Gebäude bauen.
mysql_query("INSERT INTO gebaeude (besitzer, typ) VALUES('" . $row['besitzer'] . "', '" . $row['typ'] . "')");
//das Ereignis eintragen
mysql_query("INSERT INTO ereignisse (zeit, besitzer, typ) VALUES (" . time() . ", '" . $row['besitzer'] . "', '" . $row['typ'] . "')");
}
Und auf der Übersichtsseite des Users:
Code: Alles auswählen
echo '<h1>Ihre Bauaufträge</h1>';
$r=mysql_query("SELECT * FROM planung WHERE besitzer=" . $logged_in_user_id . " ORDER BY zeit ASC");
while($row=mysql_fetch_array($r))
{
$noch_sekunden = $row['zeit'] - time(); //musst noch umrechnen in minuten, stunden, ...
echo "$typ: Wird in $noch_sekunden gebaut";
}
//die Ereignisse ähnlich auflisten
jetzt hätte ich durch nen "could not connect to database" (@HE: an dieser Stelle nochmal danke für den superschnellen

Server) beinahe den ganzen Text verloren, also schreibe ich besser nicht mehr...
Verfasst: 11.12.2002 14:07
von batax
hm danke für die mühe, ich werds mal probieren.