mysql/Datumsformat/Gültigkeitsprüfung

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql/Datumsformat/Gültigkeitsprüfung

    Hallo,
    habe für meine ehemalige Schule eine Datenbank zum Eintragen/Suchen/Finden der Klassenkameraden eingerichtet.
    Hier habe ich ein Datumsproblem mit der mysql.Die Übergabe der Formulardaten an die mysql incl. Gültigkeitsprüfung bestimmter Felder ist ok und funkt prima.Jedoch müssen die Geburtstage mit yyyy.mm.dd eingegeben werden was ziemlich blöd ausschaut.
    Ich krieg das nicht hin mit dem Datumsfeld <Geburtstag> und bitte um Hilfe.
    Die Originalscripte (Ein/Ausgabe) folgen anbei und ich bin für jede Hilfe dankbar.
    Ziemlich lang die Sache, aber Ein-/Ausgabe incl. der vielen
    Suchscripte ..alles läuft prima und könnte für jede Schule
    verwendet werden. So findet man die alten Freunde und Freundinnen auch nach x Jahren wieder ! Meldet euch einfach.....wenn Interesse.
    ****Script des Eingabeformulars mit dem Namen: anlegen.php3
    <html>
    <head>
    </head>
    <BODY BGCOLOR="#FFFFCC">
    <?php

    /*Kommentar: Die Variable ($gesendet) wird ganz am Ende des Programms durch die Taste <Submit> auf .T. gesetzt. Solange diese Variable auf .F. steht, wird das phpProgramm zwischen
    <?php (Anfang) und ?> (Ende) nicht ausgeführt */
    if ($gesendet)
    {
    /*Kommentar: Anwahl des Servers und Abfrage nach Paßwörtern,
    Datenbank, Tabelle
    ... aber erst, wenn if ($gesendet) = .T. !! */
    $server= "db28.puretec.de";
    $user= "p123465678";
    $passwort= "sesam17";
    $datenbank= "db12345678";
    $tabelle= "waldorf";
    MYSQL_CONNECT($server, $user, $passwort) or die ( "<H3>Datenbankserver nicht erreichbar</H3>");
    MYSQL_SELECT_DB($datenbank) or die ( "<H3>Datenbank nicht vorhanden</H3>");

    /*Kommentar: Mit insert werden die Felder der Tabelle ersetzt.Die Variablen $na ....bis $be werden aus dem Eingabeformular übernommen und wurden mit <Submit> zum Server geschickt. $gesendet ist jetzt .T. */

    $sqlab = "insert waldorf";
    $sqlab .= "(Name, Vorname, Subname, Strasse,";
    $sqlab .= " Postleitzahl, Wohnort, Schulort,";
    $sqlab .= " Schulstrasse, Klassenlehrer, Telefon,";
    $sqlab .= " Fax, Email, Geburtstag, ";
    $sqlab .= " Schuleintritt, Abschlussjahr, Bemerkung) values ";
    $sqlab .= "('$na', '$vn', '$su', '$st', '$po', '$or', '$so' , '$ss','$kl','$te', '$fa', '$em', '$ge', '$se', '$aj','$be')";

    /*Kommentar: Mit der if/else Abfrage wird in den genannten Feldern(Variablen) nach der Bedingung "" (=Leerinhalt) gefragt ..und wenn ja dann Meldung : Datensatz konnte nicht gespeichert werden !
    Info: || = oder Verknüpfung) */
    if ($na == "" || $vn == "" || $st == "" || $po == "" || $or == "" || $so == "") {
    echo " <br> ";

    ?>
    <div align="center">
    <table border="3" cellpadding="0" cellspacing="0" width="400" bgcolor="#FF0000">
    <tr>
    <td>
    <p align="center"><br>
    <font color="#FFFFFF">Sie haben die Pflichtfelder * nicht ausgefüllt !<br>
    </font></p>
    <p align="center"><font color="#FFFFFF" size="2">Versuchen Sie es nochmals....      <a href="javascript:history.back()"> bitte hier klicken</a></font></p>
    <p align="center"> </td>
    </tr>
    </table>
    </div>

    <?php
    } // Kommentar : ab vorhergehender prg Zeile wieder php

    else
    mysql_db_query("db12345678", $sqlab);


    $num = mysql_affected_rows();
    if ($num>0)


    echo "Info : Ihre Adresse wurde in die Datenbank übernommen ! ....zum Hauptmenü zurück, bitte ..<a href=\"hauptmenue.htm\"> hier klicken </a> <br><p>";

    else

    mysql_close();
    }
    ?>
    Hinzufügen von Datensätzen (Adressen) in die Datenbank
    <form action = "anlegen.php3" method = "post">
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td>
    <p align="center"><b>Formular zur Erfaßung persönlichen Daten mit Angaben zur ehemaligen
    Waldorfschule</b></td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Nachname<font color="#FF0000">*</font></td>
    <td width="174"><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="na"><!--webbot
    bot="HTMLMarkup" endspan -->
     
    </td>
    <td width="147"> Vorname<font color="#FF0000">*</font></td>
    <td width="174" ><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="vn"><!--webbot
    bot="HTMLMarkup" endspan -->
     </td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Straße<font color="#FF0000">*</font></td>
    <td width="174"><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="st"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot bot="HTMLMarkup"
    startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    <!--webbot bot="HTMLMarkup"
    startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    <td width="84"> PLZ/Ort<font color="#FF0000">*</font></td>
    <td width="55" ><!--webbot bot="HTMLMarkup" startspan --><input size= "5" input name="po"><!--webbot
    bot="HTMLMarkup" endspan -->
     </td>
    <td width="174" ><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="or"><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Schulort<font color="#FF0000">*</font></td>
    <td width="174"><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="so"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot bot="HTMLMarkup"
    startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    <td width="147"> Schulstraße</td>
    <td width="174" ><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="ss"><!--webbot
    bot="HTMLMarkup" endspan -->
     </td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Klassenlehrer(in)</td>
    <td width="174"><!--webbot bot="HTMLMarkup" startspan --><input size= "22" input name="kl"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot bot="HTMLMarkup"
    startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    <td width="147"> Einschul-/Abschlußjahr</td>
    <td width="47" ><!--webbot bot="HTMLMarkup" startspan --><input size= "4" input name="se"><!--webbot
    bot="HTMLMarkup" endspan -->
     </td>
    <td width="67">
    <p align="center"><b>/</b></td>
    <td width="47" ><!--webbot bot="HTMLMarkup" startspan --><input size= "4" input name="aj"><!--webbot
    bot="HTMLMarkup" endspan -->
     </td>
    </tr>
    </table>
    </div>

    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Geburtsdatum </td>
    <td width="75"><!--webbot bot="HTMLMarkup" startspan --><input size= "8" input name="ge"><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    <td width="83">
    <p align="center"><font size="2">JJJJ.MM.TT</font></p>
    </td>
    <td width="341"> Geb.-Datum = 31.10.1960 ==> Eingabe = 1960.10.31 </td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Mädchenname</td>
    <td width="165"><!--webbot bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan --><!--webbot bot="HTMLMarkup" startspan --><input size= "20" input name="su"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    <!--webbot bot="HTMLMarkup"
    startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    <td width="342"> Den Mädchen- und/oder Spitznamen eingeben</td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Tel./Fax/E-Mail</td>
    <td width="165"><!--webbot bot="HTMLMarkup" startspan --><input size= "20" input name="te"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
     
    </td>
    <td width="165"><!--webbot bot="HTMLMarkup" startspan --><input size= "20" input name="fa"><!--webbot
    bot="HTMLMarkup" endspan -->
     
    </td>
    <td width="165"><!--webbot bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    <!--webbot bot="HTMLMarkup" startspan --><!--webbot bot="HTMLMarkup"
    endspan -->
    <!--webbot bot="HTMLMarkup" startspan --><input size= "20" input name="em"><!--webbot
    bot="HTMLMarkup" endspan -->
    <!--webbot bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    </tr>
    </table>
    </div>
    <div align="left">
    <table border="1" cellpadding="0" cellspacing="5" width="670" bordercolorlight="#FF0000">
    <tr>
    <td width="136"> Kurzmitteilung</td>
    <td width="504" colspan="3"><!--webbot bot="HTMLMarkup" startspan --><input size= "69" input name="be"><!--webbot
    bot="HTMLMarkup" endspan -->
     <!--webbot
    bot="HTMLMarkup" startspan --><!--webbot
    bot="HTMLMarkup" endspan -->
    </td>
    </tr>
    </table>
    </div>
    <input type="submit" name="gesendet" value="Speichern">
    <input type="reset" value="Korrektur">      <a href="hauptmenue.htm" target="_top"><img border="0" src="ARROW-L.GIF" width="31" height="23"></a>   <font size="1"><a href="hauptmenue.htm" target="_top">Abbrechen/Hauptmenü </a> </font>   
      <a target="_top" href="anlhelp.htm"><img border="0" src="HELP2.GIF" width="32" height="26" align="baseline"></a> 
    <font size="2"><a target="_top" href="anlhelp.htm">Hilfe</a>        
    <font color="#FF0000">*</font>  Pflichtfelder müssen ausgefüllt
    werden</font>
    </form>
    Alle Datensätze <a href="suchen5.php3">anzeigen</a>
    </body>
    </html>

    *****Ende Script des Eingabeformulars*******


    *****Beginn des Ausgabeformulars mit dem Namen: suchen5.php3 ************

    <html>
    <BODY BGCOLOR="#FFFFFF" style="font-family: verdana, helvetica, arial" topmargin="0" leftmargin="0" vlink="#0000FF" alink="#0000FF" link="#0000FF">
    <body bgcolor="#FFFFCC">
    <BODY TEXT="#000000">

    <?php
    $server= "db28.puretec.de"; /* Adresse desDatenbankservers */
    $user= "p12345678"; /* FTP-Benutzername */
    $passwort= "sesam17"; /* Passwort */
    $datenbank= "db12345678"; /* Name der Datenbank */
    $tabelle= "waldorf"; /* Name der Tabelle */

    /* Zugriff auf SQL-Server und Abfragen der Tabelle */
    MYSQL_CONNECT($server, $user, $passwort) or die ( "<H3>Datenbankserver nicht erreichbar</H3>");
    MYSQL_SELECT_DB($datenbank) or die ( "<H3>Datenbank nicht vorhanden</H3>");
    $result=MYSQL_QUERY( "SELECT * FROM $tabelle order by name");
    ?>
    <p><a href="hauptmenue.htm"><img border="0" src="file:///C:/webwal/Arrow-l.gif" width="31" height="31"></a>  
    <font size="2"><a href="hauptmenue.htm"><font color="#000000">Hauptmenü</font></a></font></p>
    <?php
    /* Ausgabe der Tabelle in einem HTML-Table */

    echo "<p align=center>Ausgabe aller Datenbankfelder (Adressen) der bisher erfaßten Waldörfler</p>";
    echo "<table><table border=3><tr>";

    while ($field=mysql_fetch_field($result)) {
    echo "<th>$field->name</th>";
    }
    echo "</tr>";
    while($row = mysql_fetch_row($result)) {
    echo "<tr>";
    for($i=0; $i < mysql_num_fields($result); $i++) {
    echo "<td>$row[$i]</td>";
    }
    echo "</tr>\n";
    }
    echo "</table><BR><BR>";

    MYSQL_CLOSE();
    ?>
    </body>
    </html>
    *****Ende des Ausgabeformulares*****

    *****Ziemlich lang alles , aber es funkt..bis auf das Datumsformat des Feldes <Geburtstag>
    Mit kleinen Änderungen ..für jede Schule/Klasse verwendbar ..bei Wunsch ..Ihr erhaltet alle Ein-/Ausgabe und Suchscripte.

  • #2
    Teile Dein Datumsfeld in drei Teile: Tag, Monat, Jahr

    <td width="136"> Geburtsdatum </td>
    <td width="75>
    <input size= "2" input name="ge_d">.
    <input size= "2" input name="ge_m">.
    <input size= "4" input name="ge_y">
    </td>

    Setze diese drei Variablen dann im Empfänger-Skript entsprechend zusammen.

    $ge = $ge_y . "." . $ge_m . "." . $ge_d;

    $sqlab = "insert waldorf";
    $sqlab .= "(Name, Vorname, Subname, Strasse,";
    $sqlab .= " Postleitzahl, Wohnort, Schulort,";
    $sqlab .= " Schulstrasse, Klassenlehrer, Telefon,";
    $sqlab .= " Fax, Email, Geburtstag, ";
    $sqlab .= " Schuleintritt, Abschlussjahr, Bemerkung) values ";
    $sqlab .= "('$na', '$vn', '$su', '$st', '$po', '$or', '$so' , '$ss','$kl','$te', '$fa', '$em', '$ge', '$se', '$aj','$be')";



    Du könntest auch Option-Felder benutzen:
    <select name="ge_d" size="1">
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value=".." selected>Tag</option>
    <option value="31">31</option>
    </select>
    <select name="ge_m" size="1">
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="..." selected>Monat</option>
    <option value="12">12</option>
    </select>

    <select name="ge_y" size="1">
    <option value="1960">1960</option>
    <option value="1961">1961</option>
    <option value="1962">1962</option>
    <option value="..." selected>Jahr</option>
    <option value="2001">2001</option>
    </select>

    Kommentar


    • #3
      Original geschrieben von hand
      Teile Dein Datumsfeld in drei Teile: Tag, Monat, Jahr

      <td width="136"> Geburtsdatum </td>
      <td width="75>
      <input size= "2" input name="ge_d">.
      <input size= "2" input name="ge_m">.
      <input size= "4" input name="ge_y">
      </td>

      Setze diese drei Variablen dann im Empfänger-Skript entsprechend zusammen.

      $ge = $ge_y . "." . $ge_m . "." . $ge_d;

      $sqlab = "insert waldorf";
      $sqlab .= "(Name, Vorname, Subname, Strasse,";
      $sqlab .= " Postleitzahl, Wohnort, Schulort,";
      $sqlab .= " Schulstrasse, Klassenlehrer, Telefon,";
      $sqlab .= " Fax, Email, Geburtstag, ";
      $sqlab .= " Schuleintritt, Abschlussjahr, Bemerkung) values ";
      $sqlab .= "('$na', '$vn', '$su', '$st', '$po', '$or', '$so' , '$ss','$kl','$te', '$fa', '$em', '$ge', '$se', '$aj','$be')";



      Du könntest auch Option-Felder benutzen:
      <select name="ge_d" size="1">
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value=".." selected>Tag</option>
      <option value="31">31</option>
      </select>
      <select name="ge_m" size="1">
      <option value="01">01</option>
      <option value="02">02</option>
      <option value="03">03</option>
      <option value="..." selected>Monat</option>
      <option value="12">12</option>
      </select>

      <select name="ge_y" size="1">
      <option value="1960">1960</option>
      <option value="1961">1961</option>
      <option value="1962">1962</option>
      <option value="..." selected>Jahr</option>
      <option value="2001">2001</option>
      </select>

      Kommentar


      • #4
        Hallo (lucky) hand ,
        die Sache funkt und funzt wirklich prima.
        Ich sage herzlichen Dank für Deine prima und sehr schnelle Antwort.
        littleman


        Original geschrieben von hand
        Teile Dein Datumsfeld in drei Teile: Tag, Monat, Jahr

        <td width="136"> Geburtsdatum </td>
        <td width="75>
        <input size= "2" input name="ge_d">.
        <input size= "2" input name="ge_m">.
        <input size= "4" input name="ge_y">
        </td>

        Setze diese drei Variablen dann im Empfänger-Skript entsprechend zusammen.

        $ge = $ge_y . "." . $ge_m . "." . $ge_d;

        $sqlab = "insert waldorf";
        $sqlab .= "(Name, Vorname, Subname, Strasse,";
        $sqlab .= " Postleitzahl, Wohnort, Schulort,";
        $sqlab .= " Schulstrasse, Klassenlehrer, Telefon,";
        $sqlab .= " Fax, Email, Geburtstag, ";
        $sqlab .= " Schuleintritt, Abschlussjahr, Bemerkung) values ";
        $sqlab .= "('$na', '$vn', '$su', '$st', '$po', '$or', '$so' , '$ss','$kl','$te', '$fa', '$em', '$ge', '$se', '$aj','$be')";



        Du könntest auch Option-Felder benutzen:
        <select name="ge_d" size="1">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value=".." selected>Tag</option>
        <option value="31">31</option>
        </select>
        <select name="ge_m" size="1">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03">03</option>
        <option value="..." selected>Monat</option>
        <option value="12">12</option>
        </select>

        <select name="ge_y" size="1">
        <option value="1960">1960</option>
        <option value="1961">1961</option>
        <option value="1962">1962</option>
        <option value="..." selected>Jahr</option>
        <option value="2001">2001</option>
        </select>

        Kommentar


        • #5
          Hi,

          hatte so ein ähnliches Problem. Habs gelöst indem ich vor dem Speichern das Datum mir neu formatiere. Hat den Vorteil das die Leute ihr Geburtsdatum wie gewohnt eingeben können ohne aus endlosen Select-Boxen ihr Daten aussuchen zu müssen.

          $l1 = explode(".",$ge);
          $ge=$l1[2].".".$l1[1].".".$l1[0];

          sup. Und $ge schreibst Du dann wie gehabt in die Datenbank.


          Frohes Fest,
          protaction² - protection in action -
          [color=blue]die community für inline-skater, skateborder, kickboard und classic skater[/color]

          www.protaction2.de

          Kommentar


          • #6
            Deine Lösung ist voll ok.

            Problematisch wird es mit beispielsweise einem Datum wie 01.02.03, soll ja vorkommen. Entspricht das dem 1.2.2003, dem 3.2.2001 oder weil wir ja alle international sind dem 2.1.2003. Da würde es schon Sinn machen Tag, Monat und Jahr zu trennen.

            Logischerweise sollte man das datum bevor man es in die Datenbank jagd noch auf Gültigkeit checken, damit nicht jemand den 34.1.2002 eingibt - Muß ja nicht immer der Februar sein.

            Kommentar


            • #7
              <select name="ge_y" size="1">
              <option value="1960">1960</option>
              <option value="1961">1961</option>
              <option value="1962">1962</option>
              <option value="..." selected>Jahr</option>
              <option value="2001">2001</option>
              </select>

              Ein wenig sparen und PHP Powern
              PHP-Code:
              <?php
              echo "<select name=\"ge_y\" size=\"2\">\n";

              for(
              $x=1960;$x<2001;$x++){
                 echo 
              "<option value=\"".$x."\">\"".$x."\"</option>\n";
              }

              echo 
              "</select>";
              ?>

              Kommentar

              Lädt...
              X