Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL DATE verarbeiten in Formular

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL DATE verarbeiten in Formular

    Mooin

    Irgendwie seh ich gerade den Wald vor lauter Bäumen nicht. Ich hab eine SQL-Tabelle in der ich mehrer Spalten im Format DATE habe, die Daten sind also in Form von 0000-00-00 abgelegt.
    Ich greife nun per PHP auf diese Daten zu und will das Datum ändern.

    PHP-Code:
    <select size="1" name="season_arrival_2_d">
     <option value="00"></option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "01") { echo "selected"; } ?> value="01">01</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "02") { echo "selected"; } ?> value="02">02</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "03") { echo "selected"; } ?> value="03">03</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "04") { echo "selected"; } ?> value="04">04</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "05") { echo "selected"; } ?> value="05">05</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "06") { echo "selected"; } ?> value="06">06</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "07") { echo "selected"; } ?> value="07">07</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "08") { echo "selected"; } ?> value="08">08</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "09") { echo "selected"; } ?> value="09">09</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "10") { echo "selected"; } ?> value="10">10</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "11") { echo "selected"; } ?> value="11">11</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "12") { echo "selected"; } ?> value="12">12</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "13") { echo "selected"; } ?> value="13">13</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "14") { echo "selected"; } ?> value="14">14</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "15") { echo "selected"; } ?> value="15">15</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "16") { echo "selected"; } ?> value="16">16</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "17") { echo "selected"; } ?> value="17">17</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "18") { echo "selected"; } ?> value="18">18</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "19") { echo "selected"; } ?> value="19">19</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "20") { echo "selected"; } ?> value="20">20</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "21") { echo "selected"; } ?> value="21">21</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "22") { echo "selected"; } ?> value="22">22</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "23") { echo "selected"; } ?> value="23">23</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "24") { echo "selected"; } ?> value="24">24</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "25") { echo "selected"; } ?> value="25">25</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "26") { echo "selected"; } ?> value="26">26</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "27") { echo "selected"; } ?> value="27">27</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "28") { echo "selected"; } ?> value="28">28</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "29") { echo "selected"; } ?> value="29">29</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "30") { echo "selected"; } ?> value="30">30</option>
     <option <?php if (date("d"strtotime($nest_data['season_arrival_2'])) == "31") { echo "selected"; } ?> value="31">31</option>
    </select>
    <select size="1" name="season_arrival_2_m">
      <option value="00"></option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "01") { echo "selected"; } ?> value="01">Jan</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "02") { echo "selected"; } ?> value="02">Feb</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "03") { echo "selected"; } ?> value="03">Mrz</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "04") { echo "selected"; } ?> value="04">Apr</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "05") { echo "selected"; } ?> value="05">Mai</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "06") { echo "selected"; } ?> value="06">Jun</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "07") { echo "selected"; } ?> value="07">Jul</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "08") { echo "selected"; } ?> value="08">Aug</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "09") { echo "selected"; } ?> value="09">Sep</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "10") { echo "selected"; } ?> value="10">Okt</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "11") { echo "selected"; } ?> value="11">Nov</option>
      <option <?php if (date("m"strtotime($nest_data['season_arrival_2'])) == "12") { echo "selected"; } ?> value="12">Dez</option>
    </select>
    Wenn ich jedoch auf das Formular gehe und die Daten ausgelesen werden, würde ich erwarten, dass bei 0000-00-00 gleich jeweils die erste Position im DropDown definiert ist.
    Tatsächlich wird jedoch 30 Nov ausgegeben... 2018-01-07 21_22_35-Stoerche-LKHarburg.de.jpg

    Kann mir das jemand erklären?! Ändere ich den Wert DATE auf ein echtes Datum, gibt das Formular die Daten richtig aus.

  • #2
    0000-00-00 ist halt kein Datumswert
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Vergiss 0000-00-00 (ZERO_DATE), damit machst du dir keine Freude, sondern speichere einfach ein NULL. Schau dir einfach mal an wieviele MySQL server modes "zero_date" oder "invalid date" enthalten, daraus kann man schnell schließen was für ein Krampf das Ganze ist. (MySQL wird's halt jetzt nicht mehr leicht los, weil einige mit dem Schrott was gebaut haben.)

      Kommentar


      • #4
        Ich würde das Datum nicht so auswählen lassen, das gibt doch nur Probleme, wie 29 Februar usw.

        Nutze datetime und lasse die Optionen per Schleife ausgeben.

        lediglich Tage im Marz auswählen lassen
        PHP-Code:
        $dt = new datetime('2017-03');
        $monat $dt->format('m');
        echo 
        '<select name="season_arrival_1">';
        while (
        $monat == 3){
            echo 
        '<option value="' $dt->format('Y-m-d') . '">' $dt->format('d.m.Y') . '</option>';
            
        $dt->modify("+1 day");
            
        $monat $dt->format('m');
        }
        echo 
        '</select:>'

        Kommentar


        • #5
          HTML input type date ist keine Option? Wird ja wohl mittlerweile von allen aktuellen Browsern unterstützt.
          Falls noch alte Versionen ins Spiel kommen, kann ja ein Fallback per JQuery Datapicker realisiert werden.
          Bietet auch eine bessere Optik.

          Kommentar


          • #6
            Alternative:

            PHP-Code:
            $start = new DateTime('2017-03-01');
            $interval = new DateInterval('P1D');
            $end = (clone $start)->modify('last day of this month')->add($interval);
            $period = new DatePeriod($start$interval$end);
            print_r($period);

            foreach (
            $period as $dt) {
                echo 
            $dt->format('Y-m-d') . "<br />";

            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

            Kommentar


            • #7
              Zitat von jspit Beitrag anzeigen
              HTML input type date ist keine Option? Wird ja wohl mittlerweile von allen aktuellen Browsern unterstützt.
              Bis auf Safari (und Opera Mini). :/

              Kommentar


              • #8
                Was spricht dagegen einen Datepicker zu verwenden?

                Kommentar

                Lädt...
                X