tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
19
ZUGRIFFE
601
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    Hallo Leute,

    ich habe 2 Felder die wie folgt gefüllt sind:

    Datum: 08.04.2008
    Zeit: 09:00

    diese speicher ich mit folgendem SQL string in meine DB:

    PHP-Code:
    $sql 'INSERT INTO stunden
                        (Name, Datum, zeit, status)
                    VALUES
                        (\''
    .$name.'\',\''.date("d.m.Y",$datum).'\',\''.date("H:m",$zeit).'\',\''.$status.'\')'
    die felder haben in der DB jeweils Date und Time als format.

    nun specihert er mir immer folgendes ab

    Datum: 0000-00-00
    zeit: 01:01:00

    ausgeben lass ich es dann mit
    PHP-Code:
    $sql = 'SELECT * FROM stunden';

    $result = mysql_query($sql) or die(mysql_error());
    ?>




    <table cellpadding="5px" cellspacing="0" border="1">

    <?
    while($row mysql_fetch_assoc($result))
        {
            echo     
    "<tr>";
            echo    
    "<td>".$row['Name']."</td>";
            echo    
    "<td>".date("d.m.Y",$row['Datum'])."</td>";
            echo    
    "<td>".time("H:m",$row['zeit'])."</td>";
            echo    
    "<td>".$row['status']."</td></tr>";
        }


    ?></table>
    da steht dann
    datum: 01.01.1970
    zeit: 1207658855

    Hoffe mir kann da einer meinen Kopf wieder richten. Hatte das vor langer zeit schon gelöst nur weis ich nemme wie?

    Danke an alle die sich hir mühe geben.

    Gruß
    Jörg
     

  2. #2
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Probiers mal so :
    PHP-Code:
    $sql 'INSERT INTO stunden 
                        (Name, Datum, zeit, status) 
                    VALUES 
                        (\''
    .$name.'\',\''.date("d-m-Y",$datum).'\',\''.date("H:m:s",$zeit).'\',\''.$status.'\')'
     
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

  3. #3
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Das Datum wird in MySQL immer im amerikanischen Format "yyyy-mm-dd" gespeichert, dementsprechend musst du das bei der date()-Funktion anpassen. Du willst das ganze im deutschen Format abspeichern, was nicht möglich ist.

    Die Uhrzeit wird im Format "hh:mm:ss" abgespeichert, du willst das aber ohne Sekunden abspeichern.

    €dit: Da war einer schneller als ich :/
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  4. #4
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Wohl wahr! Aber mir fällt grad auf, dass ich auch einen Fehler gemacht habe...
    PHP-Code:
    $sql 'INSERT INTO stunden 
                        (Name, Datum, zeit, status) 
                    VALUES 
                        (\''
    .$name.'\',\''.date("Y-m-d",$datum).'\',\''.date("H:m:s",$zeit).'\',\''.$status.'\')'
    So sollte es gehn...
     
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

  5. #5
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    Hey Danke erst mal für die verdammt schnelle Antwort.
    Habe meinen SQL String durch deinen ersetzt nur leider gibts keine Änderung.

    ich post mal den code der betroffenen Seite.
    Diese wird durch ein Formular aufgerufen.
    PHP-Code:
    <?
    if(isset($_POST['a_kommen']) && $_POST['a_kommen'] == "KOMMEN")
        {
            
    //Arbeitszeit kommen
            
    $name $_POST['name'];
            
    $status "Arbeitszeit kommen";
            
    $datum date("d.m.Y");
            
    $zeit date("H:m");
        }

    if(isset(
    $_POST['a_gehen']) && $_POST['a_gehen'] == "GEHEN")
        {
            
    //Arbeitszeit gehen
            
    $name $_POST['name'];
            
    $status "Arbeitszeit gehen";
            
    $datum date("d.m.Y");
            
    $zeit date("H:m");
        }

    if(isset(
    $_POST['p_kommen']) && $_POST['p_kommen'] == "KOMMEN")
        {
            
    //pause kommen
            
    $name $_POST['name'];
            
    $status "Pause kommen";
            
    $datum date("d.m.Y");
            
    $zeit date("H:m");
        }

    if(isset(
    $_POST['p_gehen']) && $_POST['p_gehen'] == "GEHEN")
        {
            
    //pause gehen
            
    $name $_POST['name'];
            
    $status "Pause gehen";
            
    $datum date("d.m.Y");
            
    $zeit date("H:m");
        }
        
    if(isset(
    $_POST['absenden']) && $_POST['absenden'] == "Senden")
        {
            
    //manuelle eingabe
            
    $name $_POST['name'];
            
    $status $_POST['art'];
            
    $datum $_POST['datum'];
            
    $zeit $_POST['zeit'];
            if(!isset(
    $_POST['art'])) 
                {
                    
    $error "Bitte noch die art ausw&auml;hlen!<br><i>(kommen, gehen, Arbeitszeit, pause)</i>";
                }
        }
        
        
    if(isset(
    $_POST['yes']) && $_POST['yes'] == "JA KORREKT")
        {
            
    //in DB schreiben
            
    $sql 'INSERT INTO stunden 
                        (Name, Datum, zeit, status) 
                    VALUES 
                        (\''
    .$name.'\',\''.date("d-m-Y",$datum).'\',\''.date("H:m:s",$zeit).'\',\''.$status.'\')';
            
    $result mysql_query($sql) or die(mysql_error());
            
    header('Location: http://www.sa-holding.de/stunden/index.php?section=uebersicht');
        }


    if(
    $error != "")
        {
            die(
    $error);
        }

    ?>

    <form name="pruefung" method="post" action="<? $_SERVER['PHP_SELF']; ?>">
        <table cellpadding="5px" border="0" cellspacing="0">
            <tr>
                <td colspan="2">
                    Sind die Daten korreckt?
                </td>
            </tr>
            <tr>
                <td>
                    Mitarbeiter:
                </td>
                <td>
                    <h2><? echo $name?></h2>
                    <input type="hidden" name="name" value="<? echo $name?>">
                </td>
            </tr>
            <tr>
                <td>
                    Setzt den Status:
                </td>
                <td>
                    <h2><? echo $status?></h2>
                    <input type="hidden" name="status" value="<? echo $status?>">
                </td>
            </tr>
            <tr>
                <td>
                    an dem:
                </td>
                <td>
                    <h2><? echo $datum?></h2>
                     <input type="hidden" name="datum" value="<? echo $datum?>">
                </td>
            </tr>
            <tr>
                <td>
                    zu der Zeit:
                </td>
                <td>
                    <h2><? echo $zeit?></h2>
                    <input type="hidden" name="zeit" value="<? echo $zeit?>">
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" name="yes" value="JA KORREKT" />
                </td>
                <td>
                    <input type="button" value="Zur&uuml;ck" onClick="history.back();">
                </td>
            </tr>
        </table>
    </form>
     

  6. #6
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    PHP-Code:
    if(isset($_POST['a_gehen']) && $_POST['a_gehen'] == "GEHEN"
    kannst auch so abkürzen:

    PHP-Code:
    if($_POST['a_gehen'] == "GEHEN"
    Die Variable muss schon gesetzt sein, damit sie einen Wert haben kann. Du brauchst also nur den Wert überprüfen.

    [EDIT 1]
    Und wegen deinem Problem:

    Die Funktion date() braucht einen Unixtimestamp und wandelt diesen in das entsprechende Format um. Bei dir gibt der Benutzer allerdings schon ein Datum an, keinen Timestamp.

    Also solltest du das ganze so schreiben:
    PHP-Code:
    $datum=@explode(".",$_POST['datum']);  // Zerlegt Eingabe in ein Array
    $zeit=@explode(":",$_POST['zeit']);
    $datum=mktime($zeit[0],$zeit[1],0,$datum[1], $datum[0], $datum[2]);  // Macht einen Unixtimestamp

    // weiter im Text bis zur query
    $sql 'INSERT INTO stunden 
                        (Name, Datum, zeit, status) 
                    VALUES 
                        (\''
    .$name.'\',\''.date("d-m-Y",$datum).'\',\''.date("H:m:s",$datum).'\',\''.$status.'\')'
    Das @ vor dem explode dient dazu, falss der Benutzer falsche Eingaben gemacht hat, dass PHP keine Fehlermeldung ausgibt, sondern ignoriert.

    Dann sollte die date() Funktion in der SQL-Query kein Problem mehr haben. Bei der Query musst du dann bei der Date()-Funktion beide Male die Variable $datum einsetzen, da diese nun das Daum und die Zeit enthält.

    [EDIT 2]

    Ausserdem musst du die Dateums- / Zeitabfrage aus den POST Daten nicht bei jedem IF extra machen. Schreibs einmal am Anfang, und das einzige was du in den IF überall anderst machst, nur das kommt in das IF.

    PHP-Code:
    $datum=explode(".",$_POST['datum']);  // Zerlegt Eingabe in ein Array
    $zeit=explode(":",$_POST['zeit']);
    $datum=mktime($zeit[0],$zeit[1],0,$datum[1], $datum[0], $datum[2]);  // Macht einen Unixtimestamp
    $name=$_POST['name'];

    if(
    $_POST['a_kommen'] == "KOMMEN")
        {
            
    //Arbeitszeit kommen
            
    $status "Arbeitszeit kommen";
        }

    if(
    $_POST['a_gehen'] == "GEHEN")
        {
            
    //Arbeitszeit gehen
            
    $status "Arbeitszeit gehen";
        } 
    Und so weiter
    Geändert von Bratkartoffel (08.04.08 um 15:29 Uhr) Grund: Erst denken, dann posten... Sollte ich öfters machen -.-
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  7. #7
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    Auszug aus dem PHP Manual
    PHP-Code:
    <?php
    // Angenommen heute ist March 10th, 2001, 5:16:18 pm

    $today date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
    $today date("m.d.y");                         // 03.10.01
    $today date("j, n, Y");                       // 10, 3, 2001
    $today date("Ymd");                           // 20010310
    $today date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
    $today date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
    $today date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
    $today date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
    $today date("H:i:s");                         // 17:16:17
    ?>
    Dort wird es auch mit "." und nicht mit "-" getrennt.
    ist das bei der Date Funktion nicht egal? gibt ja "nur" das format an. und in dem SQL string der übergeben wird steht ja der "-" drin.
    PHP-Code:
    INSERT INTO stunden (NameDatumzeitstatusVALUES ('Hans Muster','01-01-1970','01:01:15','Arbeitszeit gehen'
    wie ich hier sehe ist mein fehler schon früher. nun werd ich mal alles zurückverfolgen.
     

  8. #8
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Tip: Lass dir bevor du die SQL-Anweisung ausführst mal die Variablen "$datum" und "$zeit" ausgeben und schau dir den Inhalt an. Ich denke, dass dein Fehler beim ersten "Aufruf" der Variable sitzt.
     
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

  9. #9
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    @Bratkartoffel

    Danke für deinen Tipp hab ihn gleich mal umgesetzt nur leider *schnief* du ahnst es schon.

    so mein SQL string schaut nach deiner bearbeitung nun so aus

    Code :
    1
    
    INSERT INTO stunden (Name, Datum, zeit, status) VALUES ('max muster','08-04-2008','15:04:00','Arbeitszeit gehen')

    in die DB schreibt er

    Code :
    1
    
    11      max muster      0000-00-00      15:04:00    Arbeitszeit gehen
     

  10. #10
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Habe einen haufen Edits gemacht, bitte nochmal meinen Post lesen. Bin z.Z. leider nicht ganz fit... Hat ganze 10 min gedauert, den post zu machen
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  11. #11
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    Also bei den ersten vier IF Abfragen soll er immer die aktuelle uhrzeit und datum vergeben.

    wenn ich das so mach wie du dann stimmt wieder ned
     

  12. #12
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    INSERT INTO stunden (Name, Datum, zeit, status) VALUES ('max muster','08-04-2008','15:04:00','Arbeitszeit gehen')
    Wenn du da das Datum nach JAhr-Monat-Tag umdrehst, also 2008-04-08 müsste es doch gehen oder nicht?
     

  13. #13
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    Zitat Zitat von Dark Ranger Beitrag anzeigen
    Wenn du da das Datum nach JAhr-Monat-Tag umdrehst, also 2008-04-08 müsste es doch gehen oder nicht?
    Richtig.

    PHP-Code:
    date('Y.m.d'// 2008-04-08 für Datenbank 
    (Sollte eigendlich schon auffallen wenn man in der DB ein 0000-00-00 stehen hat... 4stellig am Anfang....)
     

  14. #14
    JDF1976 JDF1976 ist offline Mitglied
    Registriert seit
    May 2007
    Beiträge
    23
    Also mein SQL string inst nun wie folgt:

    Code :
    1
    
    INSERT INTO stunden (Name, Datum, zeit, status) VALUES ('Antoniadis Triantafilos','2008-04-08','17:04:00','Arbeitszeit gehen')

    aber in die DB schreibt er immer noch
    0000-00-00 15:04:00

    was mich auch wundert es steht als zeit immr 15:04 oder 17:04 drin ? obwohl ich ja mit time() in dem fall die aktuelle zeit zuweise.

    Die oben genante sache mit Explode wird nur bei manueller eingabe gemacht.
    nochmal der code
    PHP-Code:
    <?

    $name
    =$_POST['name'];

    if(isset(
    $_POST['a_kommen']) && $_POST['a_kommen'] == "KOMMEN")
        {
            
    //Arbeitszeit kommen
            
    $datum time();
            
    $status "Arbeitszeit kommen";
        
        }

    if(isset(
    $_POST['a_gehen']) && $_POST['a_gehen'] == "GEHEN")
        {
            
    //Arbeitszeit gehen
            
    $datum time();
            
    $status "Arbeitszeit gehen";
            
        }

    if(isset(
    $_POST['p_kommen']) && $_POST['p_kommen'] == "KOMMEN")
        {
            
    //pause kommen
            
    $datum time();
            
    $status "Pause kommen";
        
        }

    if(isset(
    $_POST['p_gehen']) && $_POST['p_gehen'] == "GEHEN")
        {
            
    //pause gehen
            
    $datum time(now);
            
    $status "Pause gehen";
        
        }
        
    if(isset(
    $_POST['absenden']) && $_POST['absenden'] == "Senden")
        {
            
    //manuelle eingabe
        
            
    $status $_POST['art'];
            
    $datum=explode(".",$_POST['datum']);  // Zerlegt Eingabe in ein Array
            
    $zeit=explode(":",$_POST['zeit']);
            
    $datum=mktime($zeit[0],$zeit[1],0,$datum[1], $datum[0], $datum[2]);  // Macht einen Unixtimestamp
        
            
    if(!isset($_POST['art'])) 
                {
                    
    $error "Bitte noch die art ausw&auml;hlen!<br><i>(kommen, gehen, Arbeitszeit, pause)</i>";
                }
        }
        
        
    if(isset(
    $_POST['yes']) && $_POST['yes'] == "JA KORREKT")
        {

    // weiter im Text bis zur query
            
    $sql 'INSERT INTO stunden 
                        (Name, Datum, zeit, status) 
                    VALUES 
                        (\''
    .$name.'\',\''.date("Y-m-d",$datum).'\',\''.date("H:m:s",$datum).'\',\''.$status.'\')';  
            
    $result mysql_query($sql) or die(mysql_error());
            die(
    $sql);
            
    header('Location: http://www.sa-holding.de/stunden/index.php?section=uebersicht');
        }


    if(
    $error != "")
        {
            die(
    $error);
        }

    ?>
    Geändert von JDF1976 (08.04.08 um 16:03 Uhr)
     

  15. #15
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    17:00:00 ist es auf deinem Rechner.
    Minus 1 Stunde Zeitabweichung zur "Normalzeit".
    Minus 1 Stunde Sommerzeit.

    Daraus wird> 15:00:00

    Somit waere mal das Raetsel geloest


    (Sorry sitze hier an meinem Linux mit Ammi Tastatur Layout, habe keine dt. Sonderzeichen)

    Bei dem anderen habe ich keine Ahnung, sry.
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 18.03.10, 20:23
  2. SQL/Oracle date/time -> suche Date
    Von Goldman im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 20.05.09, 15:28
  3. Cookies werden nicht gespeichert
    Von chmee im Forum Microsoft Windows
    Antworten: 6
    Letzter Beitrag: 06.05.06, 19:39
  4. Anmeldeinformationen werden bzw. können nicht gespeichert werden
    Von wischmopp90 im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 26.09.05, 20:15
  5. Sessiondaten werden nicht gespeichert
    Von Karl Förster im Forum PHP
    Antworten: 6
    Letzter Beitrag: 25.01.04, 00:24