wieder mal option-tag



  • wieviel <opiton>-tags verkraftet eigentlich ein select? Ich habs mal mit 300 versucht und damit kommt weder der IE noch der Opera klar.... 🙄



  • Wofür brauchste denn so viele wenn man fragen darf?



  • 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
    daystart=mktime(0,0,0,date("m"),date("d"),date("Y"));daystart = mktime(0,0,0,date("m"),date("d"), date("Y")); 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);echo"<OPTIONVALUE=".i); echo "<OPTION VALUE='".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????
    MfG

    Tobsen



  • 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 beheben 😉

    Schildere 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.2003

    in 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!
    MfG

    Tobsen



  • 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. MfG

    Tobsen



  • 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.
    MfG

    Tobsen



  • 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?


Anmelden zum Antworten