ERLEDIGT
JA
JA
ANTWORTEN
19
19
ZUGRIFFE
601
601
EMPFEHLEN
-
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:
die felder haben in der DB jeweils Date und Time als format.PHP-Code:$sql = 'INSERT INTO stunden
(Name, Datum, zeit, status)
VALUES
(\''.$name.'\',\''.date("d.m.Y",$datum).'\',\''.date("H:m",$zeit).'\',\''.$status.'\')';
nun specihert er mir immer folgendes ab
Datum: 0000-00-00
zeit: 01:01:00
ausgeben lass ich es dann mit
da steht dannPHP-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>
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
-
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...
-
08.04.08 14:58 #3
- 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"
-
Wohl wahr! Aber mir fällt grad auf, dass ich auch einen Fehler gemacht habe...
So sollte es gehn...PHP-Code:$sql = 'INSERT INTO stunden
(Name, Datum, zeit, status)
VALUES
(\''.$name.'\',\''.date("Y-m-d",$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...
-
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ä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ück" onClick="history.back();">
</td>
</tr>
</table>
</form>
-
08.04.08 15:07 #6
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
kannst auch so abkürzen:PHP-Code:if(isset($_POST['a_gehen']) && $_POST['a_gehen'] == "GEHEN")
Die Variable muss schon gesetzt sein, damit sie einen Wert haben kann. Du brauchst also nur den Wert überprüfen.PHP-Code:if($_POST['a_gehen'] == "GEHEN")
[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:
Das @ vor dem explode dient dazu, falss der Benutzer falsche Eingaben gemacht hat, dass PHP keine Fehlermeldung ausgibt, sondern ignoriert.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.'\')';
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.
Und so weiterPHP-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";
}
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"
-
Auszug aus dem PHP Manual
Dort wird es auch mit "." und nicht mit "-" getrennt.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
?>
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.
wie ich hier sehe ist mein fehler schon früher. nun werd ich mal alles zurückverfolgen.PHP-Code:INSERT INTO stunden (Name, Datum, zeit, status) VALUES ('Hans Muster','01-01-1970','01:01:15','Arbeitszeit gehen')
-
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...
-
@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
-
08.04.08 15:27 #10
- 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"
-
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
-
08.04.08 15:40 #12
- Registriert seit
- Aug 2005
- Beiträge
- 436
Wenn du da das Datum nach JAhr-Monat-Tag umdrehst, also 2008-04-08 müsste es doch gehen oder nicht?INSERT INTO stunden (Name, Datum, zeit, status) VALUES ('max muster','08-04-2008','15:04:00','Arbeitszeit gehen')
-
-
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ä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)
-
08.04.08 19:34 #15
- 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
-
Warum werden die Daten nicht korrekt in der MySql-Db gespeichert? [UTF-8]
Von VanHellsehn im Forum PHPAntworten: 17Letzter Beitrag: 18.03.10, 20:23 -
SQL/Oracle date/time -> suche Date
Von Goldman im Forum .NET CaféAntworten: 0Letzter Beitrag: 20.05.09, 15:28 -
Cookies werden nicht gespeichert
Von chmee im Forum Microsoft WindowsAntworten: 6Letzter Beitrag: 06.05.06, 19:39 -
Anmeldeinformationen werden bzw. können nicht gespeichert werden
Von wischmopp90 im Forum Microsoft WindowsAntworten: 1Letzter Beitrag: 26.09.05, 20:15 -
Sessiondaten werden nicht gespeichert
Von Karl Förster im Forum PHPAntworten: 6Letzter Beitrag: 25.01.04, 00:24





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren