Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zeit setzen!?? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




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!

 
JoelH
29-11-2001, 15:48 
 
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!

 
JoelH
29-11-2001, 16:09 
 
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?

 
JoelH
29-11-2001, 16:40 
 
ich glaub int reicht.

 
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!

 
JoelH
30-11-2001, 06:31 
 
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");

 
Sky
11-12-2001, 22:10 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:02 Uhr.