Datum über Fromularfeld eingeben

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Steglich, 07.06.2004.

  1. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    Über ein Fromularfeld soll ein Datum eingegeben werden und dann auf eine DATE Zelle geschrieben werden. Das stelle ich mir so vor:
    PHP:
    <form ...> 
    ...
            <p>Datum:
    <?php
            $zeit 
    time();
            
    $heute getdate($zeit);
            
    $erstellungsdatum $heute[year] . "-" $heute[mon] . "-" $heute[mday];
            echo(
    "<input type='text' size='12' name='datum' value='$erstellungsdatum'>");
    ?>
    ...
    </form>
    Und später soll dann eben die Zuweisung erfolgen:
    PHP:
            $sql "INSERT INTO artikel SET
                datum = '
    $datum'";
    aber in der Datenbank kommt nur 0000-00-00 an.
    Wie macht ihr denn so eine Datumseingabe?
     
  2. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    Korrektur

    Ich muss mich leider korrigieren, es kommt nichts in der Datenbank an, denn ich bekomme vorher eine Fehler Meldung:
    Es liegt auch nicht daran, dass Monat und Tag einstellig sind, denn bei einer zweistelligen Darstellung bekomme ich die gleiche Fehlermeldung.
     
  3. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    eleganter, bringt aber nix

    und das
    PHP:
    <?php
            $erstellungsdatum 
    date("Y") . "-" date("m") . "-" date("d");
            echo(
    "<input type='text' size='12' name='datum' value='$erstellungsdatum'>");
    ?>
    ist eleganter, ändert aber auch nichts an der Fehlermeldung.
     
  4. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    falscher Alarm

    habe oben bei der INSERT Anweisung natürlich noch mehrere SET Zuweisungen stehen gehabt und bei einer ein Komma vergessen. Jetzt gehts. Ihr könnt also dieses Thema getrost streichen. Sorry, dass ich euch damit belästigt hab.
     
  5. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Re: eleganter, bringt aber nix

    &nbsp;

    PHP:
    $erstellungsdatum date('Y-m-d');
    So ist es einfacher! ;)
     
  6. sevY

    sevY Gast

    Ansonsten in SQL einfach den Spaltentyp Timestamp mit NOW definieren…

    Dann muss man in PHP nichts mehr machen und bekommt die Ergebnisse direkt in der Abfrage mitgeteilt ;)


    So wie Delmar das vorschlägt ist es natürlich auch sehr einfach, da würde ich dann aber auf den DATE Typ der Spalte verzichten und stattdessen varchar(255) wählen.


    Du kannst ja mal ausprobieren diese Tabelle anzulegen und dann sehen, was dir am besten gefällt.

    PHP:
    //SQL
    CREATE TABLE `tab` (
      `
    idint(11unsigned NOT NULL auto_increment,
      `
    datedate default NULL,
      `
    timestamptimestamp(14NOT NULL,
      `
    date_stringvarchar(255) default NULL,
      `
    inhaltvarchar(255) default NULL,
      
    PRIMARY KEY  (`id`),
      
    UNIQUE KEY `timestamp` (`timestamp`)
    TYPE=MyISAM AUTO_INCREMENT=;

    Jedesmal, wenn du dort etwas für $inhalt einfügst, wird direkt ein Timestamp generiert, genau zu dem Zeitpunkt, zu dem die Aktion erfolgt.


    Was dir garantiert weiterhilft wäre mal ein Blick auf php.net, Funktionsreferenz date()

    …und mysql.org, Dokumentation „Datum Uhrzeit Spalten Funktionen“


    Liebe Grüße

    Yves
     
  7. sevY

    sevY Gast

    Vielleicht nochmal Delmars Vorschlag ganz deutlich…


    PHP:
    <?php
    require_once('config.inc.php');

    if(
    $_POST['action']=='insert')
        {
        
    $date=date('Y.m.d');
        
    mysql_db_query($db_dbase,"insert into $db_tab (date,inhalt) VALUES ('$date','$_POST[inhalt]')");
        }  
    else
        {
        echo
    '
            <form action="'
    .$_SERVER['PHP_SELF'].'" method="post">
                <input type="hidden" name="action" value="insert">
                <input type="text" name="name" value="inhalt"><br>
                <input type="submit" value="Insert">
            </form>
            '
    ;
        }
    ?>
    Sobald du Insert klickst, wird das Script ja erneut aufgerufen und dann direkt vor der Query die Variable $date definiert, die du dann in die db einfügst.

    Ich glaube das ist doch am einfachsten… ohne viel Gewurschtel… eleganter finde ich allerdings immer noch Timespamp mit NOW und dann bei der Abfrage den Timestamp in die gewünschten Angaben wandeln…

    Aber was red ich mir den Mund fusselig, ist ja schon alles gesagt worden… hehe.


    Yves
     
  8. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Sehr gut, kleiner Padawan! :D
     
  9. Steglich

    Steglich Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    0
    MacUser seit:
    30.05.2003
    useability

    Danke Yves für deine Hinweise, aber ich wollte es so machen, dass der Benutzer im Formularfeld das aktuelle Datum vorgeschlagen bekommt und es dann aber editieren und verändern kann.
    Was mir jetzt noch fehlt ist eine funktion, die überprüft, ob das vom Benutzer eingegebene Datum syntaktisch und inhaltlich richtig ist. Gibt es soetwas schon oder muss ich das selbst schreiben?
     
  10. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
Die Seite wird geladen...
Ähnliche Themen - Datum über Fromularfeld
  1. strubel
    Antworten:
    12
    Aufrufe:
    2.732
    Jakob
    03.08.2008
  2. Wonderwall_M
    Antworten:
    2
    Aufrufe:
    423
    scope
    08.06.2008
  3. kana
    Antworten:
    6
    Aufrufe:
    1.301
    kana
    16.03.2007
  4. ThaHammer
    Antworten:
    13
    Aufrufe:
    3.547
    ThaHammer
    30.07.2006
  5. lonzo
    Antworten:
    1
    Aufrufe:
    666
    MacTuX
    24.09.2004