2 MySQL - Probleme

iBooot

Grünschnabel
Hallo!
Ich habe mit Hilfe dieses Tutorials ein Login-System für meine HP zusammengebaut und habe jetzt folgende Frage:
Wenn man eingeloggt ist, soll angezeigt werden, ob eine bestimmte Datei seit dem letzten Besuch aktualisiert wurde.
Wenn nicht, soll z.B. "Nicht aktualisiert" und wenn doch "Aktualisiert" angezeigt werden.
Wie mache ich das am besten?
Ich hatte mir das so überlegt:

ENTWEDER:
Vorhanden:
Jeder User hat z.B. einen Nicknamen, ein Passwort und einen Zähler in der MySql - Tabelle. Abrufbar sind diese dann mit $_SESSION["user_nickname"] und $_SESSION["user_zaehler"].

1) Die Datei immer gleich aufbauen. (kein Problem)
2) Mit php z.B. die Zeilen der Datei zählen. (kein Problem)
3) Die Zahl mit $_SESSION["user_zaehler"] vergleichen. (kein Problem)
4) Wenn Zahl größer, dann "Aktualisiert" anzeigen und wenn gleich dann "Nicht Aktualisiert" anzeigen. (kein Problem)
5) Entsprechendes Feld in der MySql - Tabelle ändern (Problem)
6) $_SESSION["user_zaehler"] auch aktualisieren. (Problem)

ODER
Das gleiche wie oben, nur dass ich anstatt den Zähler in der MySql-Tabelle speicher, den Zähler in eine Textdatei speichere. Aber nur dafür extra eine neue Datei anlegen? Und das für jeden User?
Außerdem habe ich das schon probiert, doch das hat nicht funktioniert.. :D

ODER
Man speichert das Datum in der MySql-Tabelle und vergleicht es mit dem Veränderungsdatum der Datei (notfalls steht dieses auch einfach ganz oben in der Datei). Aber dann bleibt das Problem, dass ich das Datums feld in der Tabelle ändern muss.

Und noch ein Problem :D
Wo wir schonmal dabei sind:
Wie kann ich einen bestimmten Eintrag in einer MySql-Tabelle bearbeiten, ohne extra die komplette MySql-Tabelle in Variablen auszulesen, das entsprechende Feld in der Variable zu verändern und dann die komplette MySql Tabelle neu zu schreiben?
Weil wenn z.B. mehrere Leute gleichzeitig on sind, könnte das doch zu Problemen führen, oder?
Außerdem würde das doch zu viel längeren Ladezeiten der Seite führen!?

Ich hoffe ihr könnt mir helfen..

LG
-iBooot
 
Den letzten Zugriff auf eine Datei bekommst Du mit fileatime():
PHP:
// Letzten Zugriff auf Datei erfassen
$lastAccess = fileatime("datei.txt");

// Ausgabe formatieren
$ausgabe = gmdate("d. M Y - H:i:s",$lastAccess);

// Testhalber ausgeben auf Bildschrim
print "Letzter Zugriff: ".$ausgabe;

Die Funktion fileatime() gibt ein UNIX-Timestamp zurück. Für eine formatierte Ausgabe benötigst Du halt eine Funktion, wie gmdate().

Wenn Du den letzten Login in der DB gespeichert hast (am besten als UNIX-Timestamp), brauchst Du die Werte nur vergleichen.
Ist der letzte Zugriff auf die Datei länger her als der letzte Login, dann "Nicht aktualisiert!"

Wenn ich Dein Problem richtig verstanden habe, sollte es so gehen...

Es gibt übrigens auch filectime() und weitere Funktionen, die Dir helfen könnten!
 
Zuletzt bearbeitet:
Ohh wenigstens einer der antwortet ^^
Ne Spaß bei Seite..
Danke für die Antwort :D
Aber mein größtes Problem ist, dass ich nicht weiß, wie ich die MySql bearbeite, ohne die Tabelle komplett auszulesen, einen wert ändern und dann komplett neu einzutragen..
Wie kann ich das umgehen?

LG
-iBooot
 
Wenn Deine DB richtig aufgebaut it, solltest Du für jeden Eintrag eine eindeutige Kennung (ID) haben!

Beispiel eines Tabellenschemas:
Code:
ID          benutzer                    passwort               letzterlogin
1           Admin                       --------------------   1233863872
2           Noman                       --------------------   9078564533
3           KeineAhnung                 --------------------   6633599696

Dann kannst Du mit
Code:
UPDATE tabellenname SET letzterlogin=7365291765 WHERE ID=2
den letzten Login vom User Noman neu setzen.
Dazu muß man die Tabelle nicht auslesen und neu schreiben!

In der Tabelle würde dann folgendes stehen:
Code:
ID          benutzer                    passwort               letzterlogin
1           Admin                       --------------------   1233863872
2           Noman                       --------------------   7365291765
3           KeineAhnung                 --------------------   6633599696

Damit sind wir aber im falschen Forum, weil es sich hierbei um MySQL handelt und nicht um PHP...
;)
 
Zurück