Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeit setzen!??
Downline 29-11-2001, 15:41 Hi! Also! Ein User ruft seine Seite über URL auf:
http://www.adresse.de/start.php?id=123
start.php
<?
$db = mysql_connect("localhost","./","");
mysql_select_db("Userdb",$db);
$res = mysql_query("select * from statistik where UserID=$id");
$sql = "update statistik set Stasei = (Stasei +8) where UserID=$id";
mysql_query($sql);
header("Location:$data->StaUrl");
?>
Also nun habe ich in der Tabelle statistik die Spalten UserID, Pkt, Url, reload
Jetzt soll bei aufruf über obigen Link die tabelle reload auf die aktuelle zeit gesetzt werden! Vorher soll geprüft werden, ob der wert in der tabelle länger als 40 minuten zurück liegt! Wenn ja, dann weiterleiten, wenn nein dann meckern! Wie setze ich das mit der Zeit jetzt am besten um?
Thanx!
wenn du nur die vergleichstdaten brauchst, dann speicher doch einfach den timestamp, das ist am einfachsten zu vergleichen.
Downline 29-11-2001, 16:02 Sorry Joel! Bin erst seit ein paar Tagen in MySQL drin! Wie genau muß ich denn das machen! Nen Beispiel wär gut! Thanx!
also
$momtime = time();
naja und $momtime schreibst du in das entsprechende feld der DB, wenn der jetzt nochmal kommt dann liest du die DB aus und machst den vergleich
$jetzttime = time(); // wieder den Timestamp holen
if ($datenbank["timestamp"]+40*60>$jetzttime)
{
echo "sie waren in den letzten 40 min. schonmal da !";
}
wobei $datenbank["timestamp"] die Variable ist die du aus der DB ausliest. das 40*60 bedeutet einfach 40min. mal 60 sec. da der timestamp die sekunden sind seit 1.1.1970
Downline 29-11-2001, 16:33 Welchen Typ und welche Funktion muß ich in der Spalte reload wählen, damit das richitg übernommen wird?
Downline 29-11-2001, 16:55 Mmmh. Okay! Er schreibt mir nix in die Spalte rein! Was mach ich falsch?
start.php
<?
$db = mysql_connect("localhost","./","");
mysql_select_db("Userdb",$db);
$res = mysql_query("select * from statistik where UserID=$id");
$jetzttime = time(); //JETZTZEIT HOLEN
if ($reload["momtime"]+40*60>$jetzttime) //PRÜFEN
{
echo "sie waren in den letzten 40 min. schonmal da !";
} //WENN NICHT
$momtime = time();
$sql = "update statistik set reload = ($momtime) where UserID=$id"; //SPALTE RELOAD auf momtime aktualisieren und weiter wie bisher!!
$sql = "update statistik set Stasei = (Stasei +8) where UserID=$id";
mysql_query($sql);
header("Location:$data->StaUrl");
?>
Downline 29-11-2001, 19:21 Alles klar hab da mal was korrigiert!
$sql = "update statistik set reload = ($momtime) where UserID=$id";
$sql = "update statistik set Stasei = (Stasei +8) where UserID=$id";
mysql_query($sql); ------> Falsch
$relo = "update statistik set reload = ($momtime) where UserID=$id";
mysql_query($relo);
$sql = "update statistik set Stasei = (Stasei +8) where UserID=$id";
mysql_query($sql);
So. Jetzt schreibt er mir auch was in die Spalte!
1007058058 Diese Zahl!???? Und weiter?? Hab den Typ auf int gesetzt!
ja und ?
Ist doch richtig, der Unixtimestamp ist die Zeit in Sekunden die seit dem 1.1.1970 vergangen ist, das sind ca. 1Mrd. Sekunden. momentan, naja und jetzt kannste immer testen ob die aktuelle Zeit 40*60 (=40 min. in Secunden) grösser ist als die Zeit die du gespeichert hast, das ist von der performance her besser als einen Datumsstring ein zu bauen.
Downline 30-11-2001, 13:15 Alles klar! Aber irgendwas stimmt mit der Query noch nicht! Er tut bei jedem aufruf aktualisieren und nicht vergleichen! Hier nochmal die Query!
<?
$db = mysql_pconnect("localhost","./","");
mysql_select_db("Userdb",$db);
$res = mysql_query("select * from statistik where UserID=$id");
$jetzttime = time(); // wieder den Timestamp holen
if ($relstasei["momtime"]+40*60>$jetzttime)
{
header("Location:./info.php");
}
$momtime = time();
$relo = "update statistik set relstasei = ($momtime) where UserID=$id";
mysql_query($relo);
$sql = "update statistik set Stasei = (Stasei +8) where UserID=$id";
mysql_query($sql);
header("Location:$data->StaUrl");
?>
Downline 11-12-2001, 10:17 Also ich hab das prob, das diese query immer noch nicht funzt! Und ich weiß nicht warum?? Er aktualisiert mir den timestamp jedesmal und prüft nicht die daten!!
<?
$db = mysql_pconnect("localhost","./","");
mysql_select_db("Userdb",$db);
$res = mysql_query("select * from statistik where UserID=$id");
$jetzttime = time(); //den Timestamp holen
if ($statistik["relstasei"]+40*60>$jetzttime)
{
header("Location:./info.php");
}
$momtime = time();
$relo = "update statistik set relstasei = ($momtime) where UserID=$id";
mysql_query($relo);
Thanx
schmalle 11-12-2001, 10:45 ich will mich ja nicht einmischen, und um gottes willen nicht sagen, dass joelhs vorschläge nicht gut sind, aber ich empfehle dir statt mit timestamp mit datetime zu arbeiten. das sollte speziell bei anfängern einfacher sein. wenn du hilfe brauchst: SCHREI :D
Downline 11-12-2001, 11:05 Schrei! :)) Kann ich da die genaue tageszeit und das datum setzen?? Wie?? Thanx!
schmalle 11-12-2001, 11:37 das ist sehr einfach!
die spalte muss auf das format datetime // sollte klar sein :cool:
dann mit folgendem befehl aktuelle zeit setzten:
$neu = mysql_query(" update tabelle set spalte_datum=now() ");
und das wars. evtl. muss das now() in quotes: 'now()'
Downline 11-12-2001, 12:08 OK! Und wie kann ich den vergleich anstellen, ob die aktuelle zeit länger als 30min her ist!
<?
$db = mysql_pconnect("localhost","./","");
mysql_select_db("Userdb",$db);
$res = mysql_query("select * from statistik where UserID=$id");
/// Jetzt schauen ob die aktuelle zeit länger als 40 min her ist! Und wenn dann -->
{
header("Location:./info.php");
}
///Ansonsten setze die zeit neu!
$neu = mysql_query("update statistik set relstasei=now() where UserID=$id");
Original geschrieben von schmalle
und das wars. evtl. muss das now() in quotes: 'now()'
Das glaube ich nicht, ohne Quotes bist du auf jeden Fall zu 100% auf der richtigen Seite...
schmalle 12-12-2001, 08:20 da war ich mir gerade mal nicht so sicher. ich kanns mir auch nie so genau merken :D
|
|