php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.11.2008, 13:05  
Benutzer
 
Benutzerbild von anjoflo
 
Registriert seit: 18.11.2008
Beiträge: 41
PHP-Kenntnisse:
Fortgeschritten
anjoflo befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] DB-Inhalt nach Abgelaufener Zeit löschen

Ich grüsse Euch,

ich habe ein Problem mit dem löschen von DB-Inhalten nach einer abgelaufenen Zeit:

Vorgeschichte:
Beim Seitenaufruf der Home-Seite erstelle ich eine Session, die ich zusätzlich in eine DB-Tabelle "session" eintrage.
Hinein schreibe ich (mittels Flash vom Client) im Intervall von 1 min einen Timestamp "ses_time2" - D.h. "ses_time2" hat so ziemlich die gleiche Zeit wie der Server hat.

Wenn jetzt der User die Hompage verlässt, weis die DB ja nicht, dass er wieder weg ist.
D.h. der Inhalt der Users-Session möchte ich wieder entfernen.
Das versuche ich wie folgt zu lösen:

PHP-Code:
<?

include ("db_zugang.php");            //ausführen vom "db_zugang.php"

// Variablen setzen

$del_time 5;  //Zeit, nachdem ein inaktiver Sessioneintrag gelöscht werden soll

$time date ("Y-m-d-H-i",time());                            // Datum + Zeit

$time_ex explode("-",$time);

$todo "SELECT ses_time2 FROM session";
$ergebnis mysql_db_query($db_name$todo);

while(
$inhalt mysql_fetch_array$ergebnis ) ) {
    
$time2 $inhalt['ses_time2'];
    
$time2_ex explode("-",$time2);
    
$min $time_ex[4]-$time2_ex[4];
    
$stu $time_ex[3]-$time2_ex[3];
    
$tag $time_ex[2]-$time2_ex[2];
    
$mon $time_ex[1]-$time2_ex[1];
    
$jahr $time_ex[0]-$time2_ex[0];
    
$gesamt $min+($stu*60)+($tag*60*24)+($mon*60*24*30)+($jahr*60*24*30*12);
    
    
$todo2 "DELETE FROM session WHERE '$gesamt' > '$del_time'";
    
$delete mysql_query($todo2);
    
echo 
$gesamt."<br>";
};

?>
Aber !!! wenn einer der User über die in "$del_time" eingetragenen 5 Minunten darüber hinaus kommt, löscht er mir den gesamten Inhalt der Tabelle.

Wiso?
anjoflo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.11.2008, 13:09  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

$todo2 = "DELETE FROM session WHERE '$gesamt' > '$del_time'";

weil Du immer alles löschst sobald $gesamt > $del_time ist und zwar alles ohne Einschränkung. lass Dir mal das Query ausgeben, dannw irste sehen dass da sowas wie where 6 > 5 steht, da das wahr ist wird alles gelöscht
HPR1974 ist offline  
Alt 24.11.2008, 13:11  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

lol, du vergleichst hier ja auch 2 Werte aus deinem Script im Query und greifst auf nichts in der Tabelle zu. Dein Query sieht dann ja so aus

Code:
DELETE FROM session WHERE '7' > '5
#

das heisst die Bedingung ergibt ja. Genauso könntest du

Code:
DELETE FROM session WHERE 1=1
schreiben. Das macht keinen Sinn.
cycap ist offline  
Alt 24.11.2008, 13:14  
Neuer Benutzer
 
Registriert seit: 21.11.2008
Beiträge: 12
Element H8 befindet sich auf einem aufstrebenden Ast
Standard

Da liegt wohl ein Denkfehler vor. Wenn der Benutzer deine Seite verlässt, kann er ja dein Script gar nicht mehr ausführen und die Einträge bleiben in der Datenbank stehen. Ausserdem führt er den DB-Update nur beim erneuten Laden des Scripts aus. Wenn er die Seite mehr als 5 Minuten offen hat, ist die Bedingung zum Löschen aus der Datenbank erfüllt.
Element H8 ist offline  
Alt 24.11.2008, 13:17  
Benutzer
 
Benutzerbild von anjoflo
 
Registriert seit: 18.11.2008
Beiträge: 41
PHP-Kenntnisse:
Fortgeschritten
anjoflo befindet sich auf einem aufstrebenden Ast
Standard

oh ja, du hast recht.

Mir fehlt ein Bezug, den ich zusätzlich vergleichen muss mit WHERE.

Mhhh - den hab ich nicht. Was kann ich da nehmen?
anjoflo ist offline  
Alt 24.11.2008, 13:22  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Wie sieht dein Datums- / Zeitformat in der DB aus? Dein Skript lässt mich böse Sachen ahnen.
cycap ist offline  
Alt 24.11.2008, 13:22  
Benutzer
 
Benutzerbild von anjoflo
 
Registriert seit: 18.11.2008
Beiträge: 41
PHP-Kenntnisse:
Fortgeschritten
anjoflo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Element H8 Beitrag anzeigen
Ausserdem führt er den DB-Update nur beim erneuten Laden des Scripts aus. Wenn er die Seite mehr als 5 Minuten offen hat, ist die Bedingung zum Löschen aus der Datenbank erfüllt.
Nein, das erledigt ein Flash-Element auf der Website. Die ruft im Zyklus von 1 min ein script zum updaten auf...
anjoflo ist offline  
Alt 24.11.2008, 13:23  
Benutzer
 
Benutzerbild von anjoflo
 
Registriert seit: 18.11.2008
Beiträge: 41
PHP-Kenntnisse:
Fortgeschritten
anjoflo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
Wie sieht dein Datums- / Zeitformat in der DB aus? Dein Skript lässt mich böse Sachen ahnen.
Jahr-Monat-Tag-Stunde-Minute

also jetzt:

2008-11-24-13-24
anjoflo ist offline  
Alt 24.11.2008, 13:25  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

das hab ich mir gedacht

Setz den Typ des Feldes auf DATETIME und verwende 2008-11-24 13:24:00
cycap ist offline  
Alt 24.11.2008, 13:34  
Benutzer
 
Benutzerbild von anjoflo
 
Registriert seit: 18.11.2008
Beiträge: 41
PHP-Kenntnisse:
Fortgeschritten
anjoflo befindet sich auf einem aufstrebenden Ast
Standard

Wie tue ich dann den Timstamp zerlegen, wenn ich "-" zur Datumstrennung und ":" zur Zeittrennung habe?
anjoflo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
input text oder textarea feld inhalt mit einem klick löschen noskule HTML, Usability und Barrierefreiheit 10 26.05.2009 21:47
Hilfe, Seite im Internet Explorer Buggy trowman HTML, Usability und Barrierefreiheit 4 15.09.2008 08:32
Bild verschafft sich platz HTML, Usability und Barrierefreiheit 14 11.08.2008 23:45
Verzeichnis samt Inhalt löschen? litterauspirna PHP Tipps 2008 7 24.07.2008 21:09
Datenbank Inhalt löschen alfonsodiecko Datenbanken 2 08.05.2008 08:26
einträge automatisch nach gewisser zeit löschen nieselfriem Datenbanken 6 31.12.2007 13:33
Per FTP einen Ordner inkl. Inhalt löschen? BartTheDevil89 PHP Tipps 2006 2 10.09.2006 11:46
Kann ich den inhalt der POST-Daten löschen nieselfriem PHP Tipps 2005-2 2 13.10.2005 10:53
Tabelle nach bestimmter zeit löschen zwerg PHP Tipps 2005-2 4 12.10.2005 12:56
Inhalt einer Text-Datei löschen PHP Tipps 2005-2 3 11.07.2005 23:21
verzeichnis löschen mit inhalt PHP Tipps 2005 10 06.03.2005 20:53
Inhalt eines Ordners komplett löschen Filewalker PHP Tipps 2004 2 05.10.2004 16:58
Variablen inhalt verändern (löschen und einfügen) PHP Tipps 2004 2 16.09.2004 11:57
Inhalt einer .txt-Datei löschen PHP Tipps 2004 5 28.08.2004 22:16
Inhalt einer Textdatei löschen PHP Tipps 2004 3 10.08.2004 13:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php inhalt ordner löschen zeit, db inhalt löschen, txt inhalt nach bestimmter zeit löschen php, php script ausführen nach abgelaufener zeit

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum