"timer" - helft mir bitte :)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
batax
Mitglied
Beiträge: 283
Registriert: 07.09.2002 21:52
Kontaktdaten:

"timer" - helft mir bitte :)

Beitrag 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 ? :D
I see the light at the end
But every time I take a step, it gets dim
Signaturen dürfen maximal 3 Zeilen lang sein
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Benutzeravatar
batax
Mitglied
Beiträge: 283
Registriert: 07.09.2002 21:52
Kontaktdaten:

Beitrag von batax »

hmm, könntest du da maln beispiel machen ? :cry:
I see the light at the end
But every time I take a step, it gets dim
Signaturen dürfen maximal 3 Zeilen lang sein
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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...
Benutzeravatar
batax
Mitglied
Beiträge: 283
Registriert: 07.09.2002 21:52
Kontaktdaten:

Beitrag von batax »

hm danke für die mühe, ich werds mal probieren.
I see the light at the end
But every time I take a step, it gets dim
Signaturen dürfen maximal 3 Zeilen lang sein
Antworten

Zurück zu „Coding & Technik“