• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datumsproblem

Net_Wolf

Neues Mitglied
Hallo Gemeinde!
Vorab, ich bin kein PHP-Freak :-)

Ich habe über einen Formulargenarator ein Formularscript erhalten.
Nun habe ich ein kleines Problem.
Im Formular sind ein paar Daten drin für bestimmte Events.
Organisatorisch soll es aber so sein, dass man sich ab 3 Tage vor dem Event nicht mehr anmelden kann und statt der Checkbox ein kleiner Hinweis "Anmeldung nicht mehr möglich" erscheint.

Würde mich freuen, wenn ich hier hilfe erhalte.

Schönen 3. Advent schon mal :-)
Wolf

Das Script im Anhang...
 

Anhänge

Ich kenn dich nicht. Ich lad die Datei sicher nicht runter. Zeig den betreffenden Quellcode lieber gleich hier. Und btw. finde ich solche Formulargeneratoren eher ungünstig. Ich kenne den erzeugten Code jetzt nicht, aber der wird einem die Arbeit (und in deinem Fall: Ergänzung) sicher nicht einfacher machen.
 
Hallo threadi,
verstehe ich und hatte es auch versucht.
Ich wollte den ganzen Code der vollständikeithalber reinkopieren... ging aber nicht, da er nur mx 10000 Zeichen zulässt.
Habe hier mal den betreffenden Teil kopiert und hoffe es geht so.
Danke auf alle Fälle schon mal:

<tr>
<td valign="top" bgcolor="#00FFCC"><span style="color: #000000; font-weight: bold;"<?php echo (!empty($errors["Glockenturmlaufserie"]) ? $errors["Glockenturmlaufserie"] : null); ?>>Glockenturmlaufserie</span><br />
<em>Strecken: M&auml;nner bis M55 12 km / ab M60, Frauen, Sch&uuml;ler A-B (1998-2000) 6 km / Sch&uuml;ler C-D (2001-2004) 3 km</em></td>
<td bgcolor="#00FFCC"><input type="checkbox" id="04.04.2012" name="Glockenturmlaufserie[]" value="04.04.2012"<?php echo $_checkbox_Glockenturmlaufserie_04_04_2012; ?> /><label for="04.04.2012">04.04.2012</label><br />
<input type="checkbox" id="15.08.2012" name="Glockenturmlaufserie[]" value="15.08.2012"<?php echo $_checkbox_Glockenturmlaufserie_15_08_2012; ?> /><label for="15.08.2012">15.08.2012</label><br />
<input type="checkbox" id="17.10.2012" name="Glockenturmlaufserie[]" value="17.10.2012"<?php echo $_checkbox_Glockenturmlaufserie_17_10_2012; ?> /><label for="17.10.2012">17.10.2012</label><br />
</td>
</tr>
<tr>
<td valign="top"><span style="color: #000000; font-weight: bold;"<?php echo (!empty($errors["swl"]) ? $errors["swl"] : null); ?>>14. Stadtwerke Leipzig Lauf</span></td>
<td><input type="checkbox" id="06.10.2012" name="swl[]" value="06.10.2012"<?php echo $_checkbox_swl_06_10_2012; ?> /><label for="06.10.2012">06.10.2012</label><br />
</td>
</tr>
 
Ok, diese Datumsangaben stehen also fest drinne, daher musst Du hier also händisch vorgehen. PHP hat einige Funktionen für Datumsbehandlungen, einige davon brauchst Du um das zu erreichen was Du willst. Es gibt viele Wege dafür.

Beispielhafter Vergleich:
PHP:
if( (int)date_diff( date("Ymd"), "2012-02-03") <= 3 )
{
 /* Textausgabe */
}
else
{
 /* Checkbox */
}

Weitere Möglichkeit:
Datumsangabe in Unix-Timestamps umwandeln und diese miteinander vergleichen.
 
Mit UNIX-Timestamp wäre es zwar etwas länger, aber funktioniert auch.

PHP:
<?php
    $event_date = '10.12.2011'; //Veranstaltungstermin
    $dead_line = 3600 * 24 * 3; // 3 Tage
    if (strtotime($event_date) - time() <= $dead_line) {
        echo 'leider zu spät gebucht.';
    } else {
        ...
    }
?>

date_diff() kannte ich gar nicht. :(
 
Hallo Trojaner,

danke, hab das mal ausprobiert.
aber ich kann das datum ändern wie ich will, ich bekomme immer nur "leider zu spät gebucht" :-(
 
habs gefunden, das datumsformat war falsch

$event_date = '20 December 2011';

Danke nochmal.
ich denke so bekomm ich das hin!!
 
Hallo,

Die Variante von Tronjer sollte man nicht verwenden, da sie anfällig für mögliche Fehler sein kann. Darauf weist auch das PHP Manual hin
PHP: Einführung - Manual

Zudem sollte man die Lokale Zeit einstellen, da sonst im Sommer eine Zeitdifferenz von 2Stunden auftritt Im Winter immer noch 1 Stunde, da die Serverzeit UTC Zeit ist.

Zum Beispiel am Anfang des Scripts folgenden Code einfügen:

date_default_timezone_set('Europe/Berlin');
 
Als kleine Anmerkung, ich liebe Timestamps. Legt man ein Datum mit PHP in der Form time(); in die Datenbank ist alles andere ein Klacks.
 
Wenn Du Unix-Zeitstempel in der DB speicherst, solltest Du die Datenbankfunktion dafür verwenden statt die PHP-Funktion. Zum Einen ist es performanter, zum Anderen könnte der MySQL-Server eine andere Zeit haben als der Server auf dem der PHP-Parser aufgerufen wird. Wenn man dann die Daten wieder ausliest könnte es schlimmstenfalls Zeitunterschiede geben. Kommt selten vor, kann aber passieren.

Code:
UNIX_TIMESTAMP()
 
Stimmt soweit, ich meinte auch eher in Hinsicht der Manipulation eines Datums, z.B. ein Ablaufdatum oder ein Datum in der Zukunft (Termine). Mit mktime() lässt sich jederzeit ein Unix Timestamp errechnen, den man mit einem aktuellen Timestamp vergleichen kann.

Auf SQL greife ich da eher zurück, wenn ich z.B. Aktionen loggen möchte b.z.w. keine Manipulation der Zeitstempel im Sinn habe.
 
Zurück
Oben