Daten zeitversetzt in MySQL eintragen

Memfis

Erfahrenes Mitglied
Hallo.

Ich plane zum richtigen lernen von PHP ein kleines Browergame (Kennt ihr vielleicht, Inselkampf, Ogame und soweiter)
Dazu muss ich aber Daten zeitlich versetzt in die Datenbank schreiben, beispielsweise wenn ein Gebäude ausgebaut werden soll, das aber erstmal eine gewisse Zeit dauern soll. Meine Frage liegt nun auf der Hand. Wie schreibt man Daten Zeitlich versetzt in eine Datenbank und wie kann ich entsprechend einen Countdown setzen ?

Vielleicht nebnbei gefragt. Ist es sehr schwer ein kleines Browsergame zu erschaffen, oder kann man das mit ein bischen anstrngung (und hilfe) schaffen ?
 
du machst einfach eine Spalte, wo die Zeit drin steht, wann das Gebäude angefangen wurde. Dann hast du ja irgendwo stehen, hoffe in einer Tabelle, wie lange sowas dauert oder du hast eine Formel. Auf jedenfall kannst du mit der Anfangszeit, der Bauzeit, und der aktuellen Zeit ja alles herausbekommen :)

Oder eine andere Variante. Du speicherst in der Tabelle die Zielzeit. Also

PHP:
$zielzeit = time() + $bauzeit;

Ob es schwer ist ein vernünftiges BG zu erschaffen.... Kommt immer drauf an, wie gut das Balancing sein soll. Du brauchst auch ein gutes Kampfscript. Und dann muss man sich überlegen, wie Multis vom Server vergehalten werden und man keine Scripte verwenden kann. Aber versuch nicht so eine Grafikbestätigung ala. Quakenet zu machen. Wenn man sich da beim Q-Bot anmelden will muss man erstmal glück haben diese Zahlengrafik zu entziffern und mit raten ist man da gut bedient. Die haben es mit Striche in die Grafik einbringen ein bisschen übertrieben.
 
Zuletzt bearbeitet:
Hey, das nenn ich mal Tempo. Danke.

Ich weis zwar nicht was Quakenet mit Browsergames zu tun hat, aber ist ja letzlich auch egal. Den PHP Ausschnitt habe ich SO nicht verstanden.
 
Das mit quakenet war OT. Ich wollte dir nur ein Tipp geben, wenn du vor hast eine Zahlengrafik zu machen, wo du die Zahl, die erscheint lesbar sein muss. Das haben die bei der Anmeldung beim Q-Bot übertrieben.

Was ist an dem php-Code sp schwer zu verstehen? Der User klickt auf ein Gebäude und du liest nun aus irgendeiner Quelle deine Daten zu diesem Gebäude aus. Da wird mit Sicherheit auch die Bauzeit da stehen. Oder wenn du eine Formel zum Berechnen der Beuzeit hast, benutzt du eben die. Fakt ist, dass du irgendwo ne Zeit haben musst, wie lange das Gebäude gebaut wird.

Diese Zeit wandelst du in Sekunden um, wenn es nicht schon so ist, und addierst die zu dem Wert, den die Funktion [phpf]time[/phpf] ausgibt. Dieses Ergebnis ($zielzeit) schreibst du dann in die entsprechende Spalte deiner Datenbank. Und dann fragst du einfach immer ab, ob dieser Wert schon erreicht ist.

PHP:
//Auslesen der Gebäudedaten
$bauzeit = leseBauzeit(); //ist nur fiktiv der name. Das Return der Fkt. ist in Sekunden angegeben :)

$zielzeit = time() + $bauzeit;

schreibeZielzeit($zielzeit); //schreibt das Ende des Baus in die Datenbank


//Überprüfung des Bauvorhabens
$zielzeit = leseZielzeit();
$aktZeit = time();

if($aktZeit >= $zielzeit) {
 //Gebäude gebaut
} else {
// Gebäude wird noch gebaut
}

?>

edit: Das ist nur fiktiver Code und du musst es natürlich noch php-tauglich machen. Soll ja auch nur ein Anreiz sein.

[OT]
Ich nenne meinen Computer nun Wespenvernichter . Warum die Viecher auch immer zu den Lüftern müssen :-)
[/OT]
 
Zuletzt bearbeitet:
PHP:
$zielzeit = time() + $bauzeit;
$Zielzei ist die Ziet in der es fertiggestellt ist.
Mit [phpf]time[/phpf] erstells`t einen Timestamp von "jetzt".
In $bauzeit ist die Zeit die es brauch.
Dann traegst du per UNIX_TIMESTAMP() im mysql Query den jetzigen Timestamp ein ,und ueberpruefst per $now = time(); if($now >= $row[timestamp_ausser_db']) ob es entweder gleich mit der jetzigen Zeit oder groesser ist.

E: da wer fixer :(
 
Öhm ... tja ... also ...
Ich bin noch Anfaänger. Mehr als Daten in die DB eintragen, auslesen, editieren , löschen und mails via php verschicken kann ich nicht. (Kann man ja sogar noch aufzählen, was ich kann)
Was ist jetzt was und welche Dinge muss ich in der DB anlegen um es dort einzutragen. (Ich bin kein "geborener Programmierer", das weis ich auch, da mit programmieren 8lernen) schwer fällt, aber ich WILL es lernen und wenn es einmal sitzt kann ichs auch, nur das bis
 
Lern die Mysql Basics.
Zum Beispiel hier:
http://www.little-idiot.de/mysql/

Wir koennten dir zwar auch die Scripte geben hat aber keinen Sinn.

Ich bin kein "geborener Programmierer", das weis ich auch, da mit programmieren 8lernen) schwer fällt, aber ich WILL es lernen und wenn es einmal sitzt kann ichs auch, nur das bis
»Geborene Programmierer« sind Leute die genug Zeit haben um sich wirklich in sowas reinzu- steigern/versetzen ;).
 
Habe noch nie einen gesehen, der wirklich fürs Programmieren geboren wäre ;)

Aber wenn ich mal Kinder bekommen sollte, dann bekommen die keine ABC-Bücher in die Hand. Nein sie bekommen "C++ erlernen für Dummies" ;)

Jeder hat mal klein angefangen aber durch bestimmte Anzahl an Tutorials und an nervenden Fragen schaffst du auf jedenfall hinter eine Sprache zu steigen. Nur darfst du nicht den Mut und die Lust verlieren.
 
Original geschrieben von KristophS
Wir koennten dir zwar auch die Scripte geben hat aber keinen Sinn.


»Geborene Programmierer« sind Leute die genug Zeit haben um sich wirklich in sowas reinzu- steigern/versetzen ;).

Die fertigen Scripte will ich auch nicht. Schließlich will ich das schon irgendwie selber programmieren und nicht "nach Bedarf abändern"

Mit "geborener Programmierer" meine ich Leute, denen das programmieren (lernen) leicht fällt. Ist eine Redensart.
 
du wirst doch in deiner db bestimmt irgendwo eine Tabelle besitzen, wo du alle Bauaufträge speicherst. Da machst du einfach noch eine Spalte rein, die diese Zeit eben speichert. Hast ja gemeint, dass du Sachen in die Db eintragen kannst. Also darf das ja nicht so schwierig sein.
 
Zurück