wieder mal option-tag
-
Ist Browserabhängig.
300 kann man aber auch keinem Benutzer mehr zumuten!
-
300 kann man aber auch keinem Benutzer mehr zumuten!
Dieser Meinung bin ich nur teilweise. Ich habe zum Beispiel ein Auswahlmenü mit 365-Option-Tags (eine für jeden Tag). Dies hat doch folgende Vorteile:
1. Der User muss sich nicht ärgern, dass er bei falschem Format beim Eintragen des Datums eine Fehlermeldung bekommt, da er es gar nicht eintragen muss.
2. Der User muss nichts eintippen, sondern kann bequem mit der Maus auswählen.
3. Kann man es dem User schon zumuten, wenn die Daten eine bestimmt Reihenfolge haben und sich diese für den User sofort erschließt, wie es bei Daten der Fall ist.
4. Ist es auch für den Programmierer eine Arbeitsersparnis, denn er muss keine Kontrollroutine für den Eintrag schreiben, da er gar nicht falsch eingegeben werden kann.MfG
Tobsen
-
Eine Kontrolle sollte man bei Werten vom User immer machen, da sich Formulardaten ja auch manipulieren lassen
Für User die z.B. nicht wissen, dass man Einträge z.B. durch Eingabe des ersten Zeichens direkt anspringen kann ist es wohl etwas umständlich (fände ich aber auch so)
-
Außerdem hast du das Problem mit dem 29. Februar!
Und hast du schonmal an die ungeheuren Datenmengen gedacht, die du da rüberschicken musst? Sowas verdoppelt mal kurz die größe einer Seite.
Eine andere Idee:
Trenne doch Monat und Tag voneinander, dann hast du nur einmal 12 und einmal 31 Auswahlmöglichkeiten. Per JavaScript blendest du bei den entsprechenden Monaten die nicht möglichen Tage aus.Aber Vorsicht: Trotzdem nachher auf Richtigkeit prüfen und eine Korrekturmöglichkeit anbieten, da JavaScript deaktiviert sein könnte.
-
Außerdem hast du das Problem mit dem 29. Februar!
Und hast du schonmal an die ungeheuren Datenmengen gedacht, die du da rüberschicken musst? Sowas verdoppelt mal kurz die größe einer Seite.Eine andere Idee:
Trenne doch Monat und Tag voneinander, dann hast du nur einmal 12 und einmal 31 Auswahlmöglichkeiten. Per JavaScript blendest du bei den entsprechenden Monaten die nicht möglichen Tage aus.Habe ich das Problem mit dem 29. Februar auch, wenn ich es folgendermaßen mache?
<SELECT name="date">
<?php
dayend = mktime(0,0,0,date("m"),date("d"), (date("Y")+1));for($i = $daystart; $i <= $dayend; i+=86400) { currentday = date("d.m.Y", i."'>".$currentday."</OPTION>";
}
?>
</SELECT>Das mit der Trennung hatte ich auch schon gedacht, aber java-script wollte ich vermeiden und anders ist es doof, da dann bei den Tagen immer 31 stehen und das den User durcheinander bringen könnte.
@flenders wie will er die daten denn bei einem select manipulieren? Ich sende die ja nicht per get...MfG
Tobsen
-
es gibt nun noch ein neues Problem. Ihr seht ja am obigen Beispiel, das ich das Datum, was in den option-tags auf der seite zu sehen ist, als sekundenwert im value speichere. Nun habe ich aber ein Problem. Wenn ich das Datum auslese, bekommme ich ein anderes. Mal ist es +/- 1 Tag und es sind meistens noch 12 Stunden dabei ! Ich muss das Datum aber so haben, dass exakte Tagwerte rauskommen, ohne Stunden, Minuten, Sekunden..... aber was mache ich denn falsch????
MfGTobsen
-
er kann sich ja einfach z.B. die Seite speichern, etwas ändern und dann neu laden und das Formular verschicken (du könntest, um dies zu verhindern natürlich auch den Referer überprüfen)
Bei deiner Lösung sollte es ansonsten kein Problem geben, es kann nur sein, dass eben am Ende mal ein Tag zuviel ist (stört aber ja wohl nicht)
Ich finde aber eine so lange Auswahlliste nicht gerade übersichtlich und einfach / schnell bedienbar! Du könntest doch auch z.B. ein einfaches Input-Feld nehmen. Dann musst du die Eingabe halt noch parsen und ggf. nachfragen
-
@flenders, bitte auch nochmal auf mein anderes Problem eingehen (weiter oben geschildert).... ich sitz da jetzt schon ewig dran und bin einfach zu blöd es sauber zu lösen....
-
Also ich versteh dein Problem noch nicht so ganz
Bei mir schwankt es nur aufgrund, von Sommer-/Winterzeit mal 1 Stunde nach vorne (1 Uhr), aber das ist ja kein Problem bzw. ließe sich ja auch behebenSchildere nochmal, was genau jetzt nicht funktioniert
-
ich versuchs mal anhand eines Beispiels zu erklären:
Ich wähle in meinem <select>-menu (der code wie ich es erzeuge steht weiter oben) z.B. das Datum 14.03.2003in meiner Datenbank wird dann folgender Sekundenwert gespeichert: 1050274800
Gebe ich den Datenbank-Wert folgendermaßen aus...
<?php
echo date("h:i:s d.m.Y", 1050274800);
?>...bekomme ich als Ergebnis: 01:00:00 14.04.2003
Wie bekomme ich den Stundenwert weg??? Ich will ein Ergebnis ohne Stunden-, Minuten-, Sekundenwert!
MfGTobsen
-
Nimm z.B. einfach gmmktime und gmdate, dann bist du das Problem mit Sommer-/Winterzeit los Oder meinst du was anderes
-
Nein, daran liegt es nicht. Durch Tests habe ich herausgefunden, dass der Fehler in folgendem Codeabschnitt liegen muss!
<SELECT name="arrival_date"> <?php $daystart = gmmktime(0,0,0,date("m"),date("d"), date("Y")); $dayend = gmmktime(0,0,0,date("m"),date("d"), (date("Y")+1)); for($i = $daystart; $i <= $dayend; $i+=86400) { $currentday = date("d.m.Y", $i); echo "<OPTION VALUE='".$i."'>".$currentday."</OPTION>"; } ?> </SELECT>
Ich weiß aber nicht, was daran falsch sein soll!? An mktime liegt es nicht, da ich es schon mit mktime auf anderem Wege versucht haben und da hat es geklappt.
Bitte helft mir. MfGTobsen
-
Ich vermute übrigens, dass es irgendwie mit date() zusammenhängt...
-
Also du musst mir mal erklären, wo bei dir der Fehler auftauch bzw. was anders sein soll Weil bei mir sah es so aus, als ob alles geklappt hätte
-
ich glaube in folgender Zeile ist der Fehler:
$daystart = mktime(0,0,0,date("m"),date("d"), date("Y"));hier bekomme ich ein Ergebnis, welches geteilt durch 86400 (sekunden eines Tages) ein ungerades Ergebnis liefert. Das heißt, dass darin auch noch Stunden, Minuten oder Sekunden enthalten sind und das darf nicht sein, da sonst meine weitere berechnung mit diesen WErten nicht funktioniert.
MfGTobsen
-
Dann nimm halt gmmktime! Bei mir klappt es damit zumindest
-
Mit Zeiten ist es wirklich nicht so einfach.
Durch Winter-Sommerzeit, wird das alles verschoben und durch die verschiedenen Zeitzonen der Erde auch (01.01.1970 war bei uns eine Stunde früher, als zur GMT).
-
ob ich gmktime nehme oder mktime spielt keine Rolle, das Ergebnis bleibt immer gleich falsch. Ich weiß jetzt nimmer, was man noch machen könnt vielleicht folgendes?
$daystart = ((INT)(mktime(0,0,0,date("m"),date("d"), date("Y"))/86400))*86400;
....aber das geht wohl auch net,...oder?
-
Poste nochmal deinen Code mit gmmaketime, weil bei mir kommt bei einem Modulo immer 0 raus
-
das Problem hat sich dank flenders hilfe geklärt. gmmktime ist die Lösung gewesen. Hab da bei meiner Kontrolle en kleinen Fehler gemacht. Trotzdem danke!!