![]() |
MySQL Eintrag alle 24 Stunden
Guten Tag,
ich schreibe zurzeit etwas neues in PHP. Das Skript ist schon fast fertig, dennoch brauche ich hilfe.. Ich möchte das gerne so haben, dass ein MySQL Eintrag nur alle 24 Stunden erlaubt ist. Ich habe es bereits mit time(); versucht, ich komme nicht weiter. Also zu der Datenbank: Tabelle: videos enthält diese Colums: id, video, time, ip Time etc wird alles schon gespeichert. Dann hab ich es mal so versucht: PHP-Code:
|
Wie soll man Dir helfen, wenn wir den Datentyp nicht kennen an dem es ganz sicher liegt!
P.S.: Schon mal über Injection nachgedacht? |
Ich verstehe nicht was Du meinst...? Injectionen sind ausgeschlossen bzw gefixxt.
|
Das Problem ist recht einfach...
Du fragst in dem qry nach einem Eintrag mit der aktuellen time... Das ganze kannst du wie folgt lösen: - Abfrage, nach dem letzten Eintrag (ORDER BY `time` DESC LIMIT 1) und dann der Vergleich mit der aktuellen Zeit - zB über die MySQL-Funktion [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Versuch dein Glück erstmal selbst - das fördert das Verständnis - wenns dann immernoch nicht klappt, poste deinen aktuellen Code und ich guck mal drüber... //edit: Was soll das qry denn genau machen? Evtl mal einen Cronjob bedacht? Den kann man dann ja zB mit .htaccess absichern... lg |
je nachdem wie weit du zugriff auf das sytem hast, lautet das Zauberwort Trigger.
Damit macht dein DBMS die ganze arbeit. mfg sirleo |
Und du hast einen Fehler in der if-Abfrage...
Du fragst nach "wenn $time 24 Std größer als jetzt"... Du fragst quasi nach morgen ;) lg |
das kannste auch direkt den mysql-server entscheiden lassen:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] erstes beispiel: The following query selects all rows with a date_col value from within the last 30 days: Code:
SELECT something FROM tbl_name |
aendere mal deinen query, beispielsweise wie folgt:
Code:
SELECT date FROM videos WHERE ip = '.$ip.' DESC LIMIT 1; hierbei wird nur die spalte "date" in der tabelle "videos" selektiert, gesucht wird nach dem wert der $ip zugewiesen wurde. ausgegeben wird das ganze absteigend (also neu-alt), das limit bewirkt, das nur die erste zeile (also die neuste) ausgelelesen wird. du suchst in deinem query nach der aktuellen zeit, die per time() an $time zugewiesen wird. du musst aber schon beim vorhergehenden erfolgreichen eintrag den timestamp hinterlegen, sodass ueberhaupt geprueft werden kann, ob das 24h-limit eingehalten wurde. simpler logikfehler ;) also: PHP-Code:
//achja: die idee mit der ip ist daemlich, es sei denn, du hast nur nutzer mit einer statischen ip-adresse, da wuerde der schutz was bringen ;) |
Ist es nicht völlig verkehrt herum wenn man in die Datenbank einträgt wann er das nächste mal ein video abschicken darf? Normalerweise würde man die Datenbank doch so aufbauen das man einen Eintrag macht mit dem aktuellen Datum, wann er das Video eingestellt hat und bei einem erneuten versuch folgende Abfrage macht:
PHP-Code:
|
so sollte das ganze in etwa ausehen:
Code:
$sql = 'SELECT date FROM videos WHERE DATE_SUB(NOW(),INTERVAL 1 DAY) <= date '; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.