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

Zeit einfügen?

Witschi262

Blogger
Hi,
Ich möchte ien Art "Sendeplan". Das heißt, der Benutzer kann Tag, Monat und Jahr auswählen und natürlich volle Stunden.

Das möchte ich in der Datenbank festhalten. Jetzt ist natürlich das Problem, dass ich, wenn ich das in einem schönen <form> mache, es als Roher text behandelt wird, und somit nicht als Zeit Formatiert ist. Da ich aber später anhand der Zeit natürlich ermitteln möchte, wann was läuft, ist das Wichtig.

Kann ich evtl. einen Timestamp aus der Zukunft einfügen?
 
Werbung:
Javascript Kalender, definierter Select oder die Felder aufsplitten wären auchOptionen.

Zukunftszeit geht zB so:

PHP:
$nextmonth= date("d.m.Y", strtotime("$date + 1 month"));
 
Werbung:
Das Problem ist, dass ich ja das ich die Eingabe des Users im Time Format brauche.
Das kannst nicht erwarten. Du musst die Eingabe vor dem Submit validieren (Javascript) und eigentlich auf dem Server nochmal für die, die Javascript deaktiviert haben. Außerdem musst du bedenken, dass Javascript das Datum teilweise umwandelt, also gibt man Monat 13 ein so ist das Monat 2 + 1 Jahr (Monate 0..11). Aber vom Benutzer war das eventuell ein Tippfehler. Sicher gibt es schon entsprechende Validierungen im Netz.
 
dann musst aber die Seite erst übermitteln und die Fehlermeldung zurücksenden. Man versucht aber, diesen Neuaufbau der Seite zu vermeiden. Dazu kommt, dass der Benutzer ungern gemachte Eingaben dann nochmal macht.Musst ihm also das teilgefüllte Formular zurück geben. Und wie gesagt, eigentlich brauchst beides, 1x wegen State-of.-the-Art und 1x wegen der Javascript-Verweigerer.
 
Werbung:
Du musst ja davon ausgehen das der Benutzer das Format anders eingibt wie du willst.
Wenn du kein JS verwenden willst gib einfach in nem <input> aktuelles Datum bzw Zeit aus wie du die Eingabe erhoffst und validierst die Eingaben.

Oder:
Wenn du zB für die nächsten 2 Wochen stündlich auswählen lassen willst mach doch einfach ein Select mit dem Tag und 1 Select für die volle Stunde.
In dem Fall kann der User eigentlich nichts Falsch machen.
 
Ich möchte ien Art "Sendeplan". Das heißt, der Benutzer kann Tag, Monat und Jahr auswählen und natürlich volle Stunden.

Ich lese da : volle Stunden...

Ich hab ihm 3 Möglichkeiten genannt für die er kein JS brauch da er JS anscheinend nicht nutzen will.
 
Werbung:
Zum splitten :

Warnung
Diese Funktion ist seit PHP 5.3.0 DEPRECATED (veraltet). Sich auf diese Funktion zu verlassen ist in keiner Weise empfehlenswert.

Mit dem Begriff "definierter Select" kann ich nichts anfangen. Kannst du mir ein Beispiel geben? Google findet relativ wenig

Wie kann ich sonst eine js variable in die db einfugen?
 
er meint im Formular eine Listbox mit den Werten für die vollen Stunden, also eine Liste von 0 bis 23 oder zumindest mit den Geschäftszeiten. Mit Javascript kannst ohne Ajax nix in die DB einfügen. Javascript sorgt nur dafür, dass die Felder in der Formularen VOR dem Submit auf korrekte Werte geprüft werden. Auf die Formularfelder hast dann nach dem Submit mit PHP Zugriff.
 
Uff. Dachte mir, das geht eigentlich ganz schnell. Aber das Problem mit einer Listbox ist ja wieder das, dass es nicht als Zeit formatiert wird. Und das mit JS ist ja schon relativ schwer. Und JS prüft nur, ob die Daten "Korrekt" sind? Das war ja dann nicht meine Frage.
 
Werbung:
Ich denke, es ist deutlich geworden, dass du die Zeit einfach validieren MUSST. Diese Hinweise waren nur angetan, die Fehler bei der Eiingabe schon zu minimieren. Wenn du im Formular getrennte Felder für Tag/Monat/Jahr/Uhrzeit hast, dann musst die halt im PHP zu einem Date-Objekt zusammenfassen. Oder warte einfach, bis alle Browser zu 100% HTML 5 konform sind, dann gibt es einen neuen Typ von Input-Feld (date-time oder so).
 
Uff. Dachte mir, das geht eigentlich ganz schnell. Aber das Problem mit einer Listbox ist ja wieder das, dass es nicht als Zeit formatiert wird. Und das mit JS ist ja schon relativ schwer. Und JS prüft nur, ob die Daten "Korrekt" sind? Das war ja dann nicht meine Frage.
Ich verstehe nicht was deine Frage ist?
 
Werbung:
Du musst dir grundsätzlich überlegen was du machen willst.
Wenn du <select> Felder anbietest hast du ja die diversen Eingaben in variablen die du einfach zusammen setzen kannst.

PHP:
<select name="sendezeit">
   <option value="01">1Uhr</option>
   <option value="02">2Uhr</option>
   ...
   <option value="24">24Uhr</option>
</select>
PHP:
$jahr= $_POST['jahr'];
$monat= $_POST['monat'];
$tag= $_POST['tag'];
$stunde = $_POST['sendezeit'];
$sendezeit = $jahr."-".$monat."-".$tag."-".$stunde;
Et voilat.
 
Aber so hoffentlich nicht in der Datenbank.mysql hat ein etwas anderes Format und die Zeit soll noch dazu. überprüfen musst er es "von Hand" z.b. mit der schon erwähnten mktime Funktion
 
So. Also habe ich mich mal Flux in mkTime mal eingelesen. Soweit wird mir auch ein Timestamp ausgegeben. Nur die Datenbank spielt mal wieder nicht mit. Dort Wird 0000-00-00 00:00:00 angezeigt. Dann habe ich extra Geguckt:
time timestamp on update CURRENT_TIMESTAMP Nein CURRENT_TIMESTAMP

Wo liegt mein Problem?
 
Werbung:
Wenn ich so Probleme hab, dann versuch ich, das richtige SQL zu finden (mit dem SqlAdmin interaktiv) und dann lass ich mir das von PHP erzeugte SQL ausgeben. Dann sieht man meist den Unterschied und findet den Fehler ganz alleine :-).
 
Zurück
Oben