Kristine: Datum + Uhrzeit

Guten Morgen euch allen,

hmm ich komme an einem Formular nicht weiter. Ich habe hier eine DropDown Liste und möchte wenn der Besucher einen Termin für 20.00 Uhr einträgt und das Datum von Heute, dann soll das auch so geanu in der Datenbank gespeichert werden.

Hier mal mein Forumlar bzw. ein Ausschnitt davon:

<td><p><strong>Datum:</strong></p></td>
            <td><p><strong><b>
                <select name="tag" class="chatfields">
                  <option value="01">01.</option>

<option value="02">02.</option>
<option value="03">03.</option>
<option value="04">04.</option>
<option value="05">05.</option>
<option value="06">06.</option>
<option value="07">07.</option>
<option value="08">08.</option>
<option value="09">09.</option>
<option value="10">10.</option>

<option value="11">11.</option>
<option value="12" selected>12.</option>
<option value="13">13.</option>
<option value="14">14.</option>
<option value="15">15.</option>
<option value="16">16.</option>
<option value="17">17.</option>
<option value="18">18.</option>
<option value="19">19.</option>

<option value="20">20.</option>
<option value="21">21.</option>
<option value="22">22.</option>
<option value="23">23.</option>
<option value="24">24.</option>
<option value="25">25.</option>
<option value="26">26.</option>
<option value="27">27.</option>
<option value="28">28.</option>

<option value="29">29.</option>
<option value="30">30.</option>
<option value="31">31.</option>
                </select>
                <select name="monat" class="chatfields">
                  <option value="01">Januar</option>
<option value="02">Februar</option>
<option value="03">März</option>

<option value="04">April</option>
<option value="05">Mai</option>

<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10" selected>Oktober</option>
<option value="11">November</option>
<option value="12">Dezember</option>

</select>
                <select name="jahr" class="chatfields">
                  <option value="2004" selected> 2004
                  </option>
                  <option value="2005"> 2005
                  </option>
                </select>
                -
                <select name="stunden" class="chatfields">

<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>

<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>

<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20" selected>20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
                </select>
                :
                <select name="minuten" class="chatfields">

<option value="00"><b>00</b></option>
                  <option value="15"><b>15</b></option>
                  <option value="30"><b>30</b></option>
                  <option value="45"><b>45</b></option>
                </select>
                Uhr </b></strong></p></td>

Hmm kann mir jemand helfen wie ich das machen muss? Meine Tabelle in der Datenbank sieht so aus. Ist das dann Richtig?

CREATE TABLE termine (
  id int(11) NOT NULL auto_increment,
  art varchar(250) NOT NULL default '',
  titel varchar(30) NOT NULL default '',
  datum date NOT NULL default '0000-00-00',
  time time NOT NULL default '00:00:00',
  ort varchar(30) NOT NULL default '',
  beschreibung varchar(200) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Die Daten sollen später an einer anderen Stelle dann auch wieder ausgeben werden.

Gruß Kristine

  1. Hallo Kristine,

    Ich habe hier eine DropDown Liste und möchte wenn der Besucher einen Termin für 20.00 Uhr einträgt und das Datum von Heute, dann soll das auch so geanu in der Datenbank gespeichert werden.

    du definierst
    tag
    monat
    jahr
    ...
    min

    aber in der DB stehen
    datum
    time

    damit die ausgewählten Werte in die DB eingetragen werden können, müssen dort auch die entsprechenden Felder (die Zahlen z.B. als INT) vorhanden sein, also statt datum und time    tag, monat,jahr,...,min

    Die Daten sollen später an einer anderen Stelle dann auch wieder ausgeben werden.

    da holst du dir per SELECT die Inhalte der Felder und stellst sie danach zu einem "leserlichen" Datum zusammen

    Grüße
    Karin

    1. Hello,

      die Aufgabe ist nicht ganz so trivial.
      Wir haben da verschiedene Probleme zu beachten:

      • Der Client kann trotz Drop-Down-Liste senden was er will
          Fomulare sind leicht fälschbar
      • Das Datum wird von MySQL nicht überprüft. Du kannst in ein datetime-Feld auch
          2004-02-31 24:99:00  eintragen. Leider kann MySQL dann nicht mehr damit rechnen
      • Da die Datenbank aber umfangreiche Datumsfunktionen kennt, sollte man den Feldtyp
          auch aus dieser Familie wählen und nicht atomisieren.

      atomisieren würde ich das Datum auch nur, wenn es auch unvollständig benötigt wird, also Du auch zum Beispiel Termine verarbeiten musst, die nur auf "Februar 2005" lauten, also kein Tag, keine Uhrzeit.

      Aus den Select-Feldern musst Du Dir also den Datumsstring zusammenbauen. Ich würde dafür den Datentyp Timestamp in der datenbank benutzen. Der ist bei MySQL nicht identisch mit Unix-Timestamp!

      20041021084200

      wäre so ein Zeitstempel.

      Um aus den verschiedenen Select-Feldern diesen Zeitstempel zu bauen, würde ich eine Funktion schreiben, die auch gleich überprüft, ob es das Datum und die Zeit gibt und ggf. eine Fehlermeldung zurückgibt. Die Funktion kann ja ein Array mit Fehlernummer, Fehlermeldung im Klartext und dem umgewandelten Wert zurückgeben. Wenn $ErrorNo dann > 0 ist, darf nicht verarbeitet werden --> Affenformular.

      Und das Erstellen der Select-Felder würde ich auch einer Funktion übertragen. Das ist ja unkritischer, wenn man davon ausgeht, dass in der DB nur gültige Daten stehen.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau