Hallo,
ich hab ein Problem mit der Datumsumformatierung 0000-00-00 in SQL von Datensatzausgaben einer Tabelle, in PHP.
Folgender Sachverhalt. Wenn ich ein Datum in der Form 00.00.0000 eingebe bzw. 0.0.00, mit str_to_date(), so wird das ja in einer SQL-Abfrage realisiert und mit mysql_query() in die Datenbank geschoben und im festgelegten Format 0000-00-00 richtig abgespeichert. Das funktioniert auch prima!
Zwei Beispiele mit Insert und Update
bzw. mit UPDATE
Nun habe ich aber die Schwierigkeit, dass ich alle Datensätze durch eine While-Schleife ausgebe und dabei soll das Datum nicht wie in der DB hinterlegt "0000-00-00" ausgegeben werden, sondern so "00.00.0000". Siehe folgenden Ansatz.
Egal welche unteren Zeilen ich verwende, ich bekomme immer den Fehler:
Datenbankzugriffsfehler!
Unknown column 'anr.AnredeID' in 'where clause'
Wenn ich statt dessen "echo "<td>". $dsatz["Email"] ."</td>";" hinschreibe, werden alle Datensätze korrekt ausgegeben.
Nur ebend, dass das Datum in der Schreibweise: 0000-00-00 ausgegeben wird
Habt ihr irgend eine Idee?
Vielen Dank in Voraus.
ich hab ein Problem mit der Datumsumformatierung 0000-00-00 in SQL von Datensatzausgaben einer Tabelle, in PHP.
Folgender Sachverhalt. Wenn ich ein Datum in der Form 00.00.0000 eingebe bzw. 0.0.00, mit str_to_date(), so wird das ja in einer SQL-Abfrage realisiert und mit mysql_query() in die Datenbank geschoben und im festgelegten Format 0000-00-00 richtig abgespeichert. Das funktioniert auch prima!
Zwei Beispiele mit Insert und Update
PHP:
...
mysql_query("INSERT INTO
mitarbeiter
SET
Anrede_ID='".$_POST["anr"]."',
Vorname='".$_POST["vn"]."',
Nachname='".$_POST["nn"]."',
Straße='".$_POST["str"]."',
PLZ='".$_POST["plz"]."',
Ort='".$_POST["ort"]."',
Telefon='".$_POST["tel"]."',
Handy='".$_POST["mobi"]."',
Email='".$_POST["mail"]."',
Geburtsdatum = str_to_date('".$_POST['geb']."','%d.%m.%Y')
")OR DIE ("Fehler: ".mysql_error());
...
bzw. mit UPDATE
PHP:
...
$update = " UPDATE
mitarbeiter AS ma, anrede AS anr
SET
ma.Anrede_ID = '".$_POST["anr"]."',
ma.Vorname = '".$_POST["vn"]."',
ma.Nachname = '".$_POST["nn"]."',
ma.Straße = '".$_POST["str"]."',
ma.PLZ = '".$_POST["plz"]."',
ma.Ort = '".$_POST["ort"]."',
ma.Telefon = '".$_POST["tel"]."',
ma.Handy = '".$_POST["mobi"]."',
ma.Email = '".$_POST["mail"]."',
ma.Geburtsdatum = str_to_date('".$_POST['geb']."','%d.%m.%Y')
WHERE
ma.Anrede_ID = anr.Anrede_ID
AND
Vorname = \"".$_POST['vn']."\"
AND
Nachname = \"".$_POST['nn']."\"
";
mysql_query($update) OR die("Error: $update <br>".mysql_error());
...
Nun habe ich aber die Schwierigkeit, dass ich alle Datensätze durch eine While-Schleife ausgebe und dabei soll das Datum nicht wie in der DB hinterlegt "0000-00-00" ausgegeben werden, sondern so "00.00.0000". Siehe folgenden Ansatz.
PHP:
...
// SELECT-Abfrage für den Zugriff auf die einzelnen Datensätze durch die While-Iteration
$res = mysql_query("SELECT
ma.*,
anr.*
FROM
Mitarbeiter AS ma,
Anrede AS anr
WHERE
ma.Anrede_ID = anr.AnredeID");
// While-Iteration
while($dsatz = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td>$if</td>";
echo "<td>". $dsatz["Anrede"] ."</td>";
echo "<td>". $dsatz["Vorname"] ."</td>";
echo "<td>". $dsatz["Nachname"] ."</td>";
echo "<td>". $dsatz["Straße"] ."</td>";
echo "<td>". $dsatz["PLZ"] ."</td>";
echo "<td>". $dsatz["Ort"] ."</td>";
echo "<td>". $dsatz["Telefon"] ."</td>";
echo "<td>". $dsatz["Handy"] ."</td>";
echo "<td>". $dsatz["Email"] ."</td>";
echo "<td>". mysql_query("SELECT date_format('".$dsatz["Geburtsdatum"]."','%d.%m.%Y')")."</td>";
//echo "<td>". mysql_query("SELECT str_to date('".$dsatz["Geburtsdatum"]."','%d.%m.%Y')")."</td>";
//echo "<td>". mysql_query(".SELECT str_to_date(sysdate(),'%d.%m.%Y')")."</td>";
echo "</tr>";
$if++;
}
Egal welche unteren Zeilen ich verwende, ich bekomme immer den Fehler:
Datenbankzugriffsfehler!
Unknown column 'anr.AnredeID' in 'where clause'
Wenn ich statt dessen "echo "<td>". $dsatz["Email"] ."</td>";" hinschreibe, werden alle Datensätze korrekt ausgegeben.
Nur ebend, dass das Datum in der Schreibweise: 0000-00-00 ausgegeben wird
Habt ihr irgend eine Idee?
Vielen Dank in Voraus.