PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Das soll nach 1 h ausgeführt werden!


Spike15
01.04.2005, 12:55:19
Hallo liebe Mitglieder und Teammitglieder, ich bin gerade dabei ein Browsergame zu erstellen, doch jetzt bin ich auf ein problem gestoßen, wo ich überhaupt nicht weiter weiß, ich hoffe ihr könnt mir helfen.

Also ich möchte das wenn ein User zum Beispiel 11:30 auf den Button bauen drückt, das um 12:30 also genau eine stunde später ein mysql update befehl erfolgt,
ich habe schon so meine gedanken mit date("H:i"); usw. aber ich wieß net weiter, könnt ihr mir vielleicht helfen?


Danke.

xabbuh
01.04.2005, 13:15:49
Speicher in der Datenbank (oder irgendwo anders ab), wann der Baubeginn erfolgte. Bei jedem weiteren Aufruf einer bestimmten Datei, überprüfst du, ob der Baubeginn schon eine Stunde (oder länger) her ist. Wenn dies der Fall ist, führst du den UPDATE-Befehl aus.

Spike15
01.04.2005, 13:22:13
mhh okay aber wie frage ich des ab?

mhh und was ist wenn er garnicht mehr baut? dann bekommt er doch auch keine rohstoffe, mhh kann man das irgendwie anders lösen?

trotzdem vielen dank!

xabbuh
01.04.2005, 13:23:48
mhh okay aber wie frage ich des ab?

<?php
if((time() - $baubeginn) > 3600) {
// update
}
?>


mhh und was ist wenn er garnicht mehr baut? dann bekommt er doch auch keine rohstoffe, mhh kann man das irgendwie anders lösen?
Da ich dein System nicht kenne, kann ich dir dazu auch nicht mehr sagen.

Spike15
01.04.2005, 13:34:28
vielendank,mhhh

kann man auch eine abfrage starte das immer alle 5 minuten rohstoffe hinzu kommen

also das 11:35 wieder etwas kommt 11:40 wieder ein update befehl

mhh was musstn du wissen, damit du mir vielelicht helfen könntest?

vielen Dank

|Coding
01.04.2005, 13:44:03
Die 5 Minutenschritte musst Du genau so Abfragen wie Du das auch mit dem stündlichen Update machst.

Spike15
03.04.2005, 11:55:42
Jo danke schön, das konnte ich mir irgendwie schon denkekn, bloß mein problem ist jetzt, ich weiß wirklich nicht man das stunden script macht wo aber erst eine stundegezählt wird wenn er geklickt hat, ich danke euch!

yozek
03.04.2005, 14:13:40
Hossa,

folgendermassen kann das gehen:


<form action='dobegin.php' method='post'>
<hidden name='konklave' value='1'>
<input type='submit' value='Konklave bauen'>
</form>


Datei dobegin.php

<?
include_once('mysql.inc.php'); // MySQL-Verbindung
$user_id = $_SESSION['user_id']; // Die ID des Users

if ($_POST['konklave']):
//Datenbank abfragen ob gerade ggf. schon was im Bau
$db->query("SELECT zeit from bauen where userid = $user_id, bauart = 'konklave'");
if ($db->num_row > 0):
die('Gerade im Bau! Netter Versuch ;)'); // Abbrechen, da schon vorhanden
else:
$db->query("INSERT INTO zeit SET (zeit, userid, bauart) (NOW(), $user_id, 'konklave'); // Eintragen
endif;
endif;
?>


Und die Abfrage, ob alles in Ordnung ist, kannst du so machen

$db->query("SELECT zeit, bauwerkid FROM bauen where userid = $user_id");
while ($row = $db->fetch_assoc()):
if ( time)() - $row['zeit'] > 3600):
$array_final_update[] = $row['bauwerkid'];
endif;
endwhile;
foreach ($array_final_update as $k => $v):
$db->query('INSERT INTO bautabelle SET (userid, bauwerkid) ($user_id, $k);
endforeach;


Schau dir das mal... habe das gerade in der Scnellnachrichtenseite eingetippt..
Fehler schleichen sich immer ein ;:)

Gruss

Lukas

|Coding
03.04.2005, 15:19:22
Jo, z.B. hier:

foreach($array_final_update as $k => $v):
$db->query('INSERT INTO bautabelle SET (userid, bauwerkid) (' . $user_id . ', '. $k . ')');
endforeach;

Spike15
04.04.2005, 15:26:39
Okay danke schön,aber ich habe mich jetzt so entschieden das immer etwas zur vollen stunde kommt, also wenn es 15:00 Uhr ist soll updatet werden wenn es 16:00 Uhr ist usw.

mhh nun habe ich etwas probiert, und habe auch ne stunde gewartet, doch es kommt irgendwie nichts, mhh wo kann hier der fehler liegen

/**********| pro Stunde |**********/
$a = date("H");
$stunde = $db->fetch_query("SELECT * FROM kosten WHERE user = '$ageUser'");
$stunde2 = $db->fetch_query("SELECT * FROM bauen WHERE user = '$ageUser'");
$G_stunde = $stunde2["gold"] + $stunde["Gstunde"];
$S_stunde = $stunde2["steine"] + $stunde["Sstunde"];
$H_stunde = $stunde2["holz"] + $stunde["Hstunde"];
$J_stunde = $stunde2["nahrung"] + $stunde["Jstunde"];
switch ($a) {
case "00":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "01":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "02":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "03":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "04":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "05":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "06":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "07":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "08":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "09":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "10":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "11":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "12":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "13":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "14":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "15":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "16":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "17":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "18":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "19":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "20":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "21":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "22":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
case "23":
$db->query("UPDATE bauen SET gold = '$G_stunde', steine = '$S_stunde', holz = '$H_stunde',
nahrung = '$J_stunde', WHERE user = '$ageUser'");
break;
default:
$b = "ERROR";

Am anfang das stunde["gold"] + stunde2["Gstunde"] sind einfahc nur werte die drinne stehen also z.b 200 also sollen zu den bestehenden 200 stück adiert werden, nicht das ihr nicht versteht^^

vielen dank.

xabbuh
04.04.2005, 15:53:31
Was sagt mysql_error() denn?

Opendix
04.04.2005, 16:13:46
öhm, ich blick nicht durch, wiso du da ein switch hast wenn du in jeder case-anweisung genau das gleiche hast???

ansonsten hab ich so schnell auch nichts gesehen :)

|Coding
04.04.2005, 16:29:57
So funktioniert das aber nicht, warum speicherst Du nicht einfach den aktuellen Timestamp (egal ob Unix oder MySQL) für jeden User in der Tabelle und updatest dann immer die Userdaten von den Usern, deren Timestamp älter als eine Stunde ist. Das was Du da machst ist nicht nur Auwand ohne Ende, nein, auch wird IMMER geupdatet, weil Du nur die Stunde abfragst und die ist immer 60 Minuten die gleiche.