Datum über Fromularfeld eingeben

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

  1. Steglich

    Steglich Thread Starter MacUser Mitglied

    MacUser seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    Ü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

    MacUser seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    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

    MacUser seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    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

    MacUser seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    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

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

    &nbsp;

    PHP:
    $erstellungsdatum date('Y-m-d');
    So ist es einfacher! ;)
     
  6. 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. 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

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

    Steglich Thread Starter MacUser Mitglied

    MacUser seit:
    30.05.2003
    Beiträge:
    206
    Zustimmungen:
    0
    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

    MacUser seit:
    28.09.2002
    Beiträge:
    803
    Zustimmungen:
    1
Die Seite wird geladen...
Ähnliche Themen - Datum über Fromularfeld
  1. bluedisc
    Antworten:
    2
    Aufrufe:
    694
  2. strubel
    Antworten:
    12
    Aufrufe:
    2.767
  3. Wonderwall_M
    Antworten:
    2
    Aufrufe:
    431
  4. kana
    Antworten:
    6
    Aufrufe:
    1.323
  5. ThaHammer
    Antworten:
    13
    Aufrufe:
    3.669

Diese Seite empfehlen