myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

MySQL Eintrag alle 24 Stunden

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Ungelesen 03.07.11, 17:14   #1
Teke1337
<php> echo ''; </php>
 
Registriert seit: Dec 2010
Beiträge: 182
Bedankt: 52
Teke1337 gewöhnt sich langsam dran | 95 Respekt Punkte
Standard 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:
$time time();
$time_query mysql_query('SELECT * FROM videos WHERE time='.$time.' AND ip='.$ip.'') or die(mysql_error());
$time_db mysql_fetch_assoc($time_query);

if(
$time_query time() + 86400)
{
    echo 
'<body bgcolor="black"><font color="red"><b><center><center>Du kannst nur alle 24 Stunden ein Video einsenden!</center></b></font></body>';

Funktionert aber nicht. Was kann ich tun? Danke für jede Hilfe.
Teke1337 ist offline   Mit Zitat antworten
Ungelesen 03.07.11, 19:04   #2
Pillewutz
Banned
 
Registriert seit: Jun 2011
Beiträge: 62
Bedankt: 40
Pillewutz ist noch neu hier! | 0 Respekt Punkte
Standard

Wie soll man Dir helfen, wenn wir den Datentyp nicht kennen an dem es ganz sicher liegt!

P.S.: Schon mal über Injection nachgedacht?
Pillewutz ist offline   Mit Zitat antworten
Ungelesen 03.07.11, 19:12   #3
Teke1337
<php> echo ''; </php>
 
Registriert seit: Dec 2010
Beiträge: 182
Bedankt: 52
Teke1337 gewöhnt sich langsam dran | 95 Respekt Punkte
Standard

Ich verstehe nicht was Du meinst...? Injectionen sind ausgeschlossen bzw gefixxt.
Teke1337 ist offline   Mit Zitat antworten
Ungelesen 05.07.11, 23:17   #4
siegener89
Anfänger
 
Benutzerbild von siegener89
 
Registriert seit: Sep 2010
Beiträge: 23
Bedankt: 5
siegener89 ist noch neu hier! | 0 Respekt Punkte
Standard

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 Mitglieder sichtbar. Bitte einloggen oder neu 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
siegener89 ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 00:19   #5
sirleo
is poking \\Device\\Beep
 
Registriert seit: May 2011
Beiträge: 201
Bedankt: 84
sirleo ist noch neu hier! | 0 Respekt Punkte
Standard

je nachdem wie weit du zugriff auf das sytem hast, lautet das Zauberwort Trigger.
Damit macht dein DBMS die ganze arbeit.
mfg

sirleo
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
sirleo ist offline   Mit Zitat antworten
Ungelesen 06.07.11, 19:20   #6
siegener89
Anfänger
 
Benutzerbild von siegener89
 
Registriert seit: Sep 2010
Beiträge: 23
Bedankt: 5
siegener89 ist noch neu hier! | 0 Respekt Punkte
Standard

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
siegener89 ist offline   Mit Zitat antworten
Ungelesen 10.07.11, 21:36   #7
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

das kannste auch direkt den mysql-server entscheiden lassen:

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu 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
    -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
machst du aus der 30 eine 1 und gut ist.
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Ungelesen 10.07.11, 22:20   #8
bufomyva
Anfänger
 
Registriert seit: May 2011
Beiträge: 20
Bedankt: 5
bufomyva ist noch neu hier! | 0 Respekt Punkte
Standard

aendere mal deinen query, beispielsweise wie folgt:

Code:
SELECT date FROM videos WHERE ip = '.$ip.' DESC LIMIT 1;
(ein pro kann ja drueberschauen ob es so hin haut *g)

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:
$ip //whatever
$now time();
$result $db->query("SELECT date FROM videos WHERE ip = '.$ip.' DESC LIMIT 1;");
$then $result->fetch_row();

$msg = if ($then $now 86400) ? "yeah" "<body bgcolor='black'><font color='red'><b><center><center>Du kannst nur alle 24 Stunden ein Video einsenden!</center></b></font></body>"//etwas andere syntax
echo $msg
(auch hier der verweis an einen pro *g)

//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
bufomyva ist offline   Mit Zitat antworten
Ungelesen 11.07.11, 13:11   #9
Pain12345
Newbie
 
Registriert seit: May 2010
Beiträge: 81
Bedankt: 49
Pain12345 ist noch neu hier! | 0 Respekt Punkte
Standard

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:
$now time();
$result $db->query("SELECT date FROM videos WHERE ip = '.$ip.' DESC LIMIT 1;");
$result $result->fetch_row();

$msg = if ($result +86400 >= $now)
{
// das video darf eingestellt werden
}
else
{
echo 
"<body bgcolor='black'><font color='red'><b><center><center>Du kannst nur alle 24 Stunden ein Video einsenden!</center></b></font></body>";

Pain12345 ist offline   Mit Zitat antworten
Ungelesen 11.07.11, 20:30   #10
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

so sollte das ganze in etwa ausehen:

Code:
$sql = 'SELECT date FROM videos WHERE DATE_SUB(NOW(),INTERVAL 1 DAY) <= date ';
// oder auch:
// $sql = 'SELECT date FROM videos WHERE DATE_SUB(NOW(),INTERVAL 24 HOUR) <= date ';
if ($ip_abfrage) {
  $sql .= "and ip like '%$ip%' ";
}
$sql .= 'LIMIT 1'; 
// das limit 1 kann man sich eigentlich schenken, da es max 1 datensatz geben sollte...

$result = $db->query($sql);
if (mysql_fetch_row ($result) !== false) {
 // es gibt datensätze in der DB mit date > (jetzt - 1tag)
 echo 'du darft kein neues video hochladen';
}
else {
 $sql = 'insert into ..... ';
}
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.


Sitemap

().