Datumsformat konvertieren, wenn es in einer Query enthalten ist
Andreas Cloos
- php
Hallo Zusammen,
ich habe mal wieder ein PHP-Problem. Was tue ich? Nun ich habe eine Liste mit Checkboxen, in denen Spalten einer Datenbank markiert werden können, die dann hinterher in einer Query abgefragt werden.
Aus dem Ergbnis wird eine Tabelle generiert, die in der Überschrift die Namen der Datenbankspalten enthält und darunter alle passenden Einträge (z.B. alle mit einer Mitgliedsnummer kleiner 5).
Das sieht dann in etwa so aus, wobei nach dem letzten hier aufgeführten Mermal noch 9 andere kommen können, je nachdem, was der User vorher markiert hat.
Id_Mitgliedsnr_Name__Vorname_Geburtsdatum_Strasse_Plz___Ort__Land________Telefon_Email________________Eintrittsdatum_Austrittsdatum
1__1___________Cloos_Andreas_1974-03-05___Str._41_12345_F.___Deutschland_0163xxx_andreas.cloos@gmx.de_2002-03-16_____9999-12-31_
(Ich hoffe, das kommt ohne Zeilenumbrüche durch, die "_" sollen der besseren Lesbarkeit dienen!)
Der Code hierfür ist:
<?php
require("../php/config.inc.php");
$link=mysql_connect( $sqlhost ); mysql_select_db( $database );
//welche Checkboxen?
$select="";
for($i=0;$i<count($field);$i++){
$select.=$field[$i];
}
$select = implode(",",$field);
$anfrage="SELECT $select FROM stammdaten WHERE $attribut LIKE '$suchanfrage' ORDER BY id;";
$ergebnis=mysql_query($anfrage) or die
("<p class='TEXT'><b>Ergebnis:</b><br>Fehlermeldung = ".mysql_error(). "</p>");
//kurzer Check, ob ein es mind. einen Treffer gegeben hat: Anfang
if (mysql_num_rows($ergebnis) > "0") {
//kurzer Check, ob ein es mind. einen Treffer gegeben hat: Wenn ja, geht es hier weiter
echo "<br>".mysql_num_rows($ergebnis)." Datensätz(e)<p> ";
echo "<table width='100%' border='0'><tr><td align='left'><table border='0' bgcolor='#666666' cellpadding='5' cellspacing='1'>";
for ($i=0;$i<mysql_num_fields($ergebnis);$i++) {echo
"<td align='left' BGCOLOR='#88ca5d' class='TABHEADER'>".mysql_field_name($ergebnis,$i)."</td>";};
while ($zeile=mysql_fetch_row($ergebnis))
{ echo "<tr>";
for ($i=0;$i<mysql_num_fields($ergebnis);$i++) {echo
"<td align='left' class='KLEIN' bgcolor='#F7F7F7'>".$zeile[$i]."</td>";};
echo "</tr>"; };
echo "</table></td></tr></table>";
//kurzer Check, ob ein es mind. einen Treffer gegeben hat: Wenn nein, dann eben hier
} else {
echo "<br>Keine Datensätze gefunden...";
}
mysql_free_result($ergebnis); mysql_close($link);
?>
(Bitte keine Noten für den Coding-Stil verteilen)
Ich versuche nun, die Datümer (Geburtstag, Ein- und Austrittsdatum) vom Standardformat (1974-03-05) in das deutsche Datumsformat (05.03.1974) zu überführen. Das klappt ja grundsätzlich auch ganz gut, (Funktion aus der FAQ von de.comp.lang.php) wenn ich das Geburtsdatum in einer Variablen bekomme, aber hier steckt es (möglicherweise) irgendwo in dem Ergebnis der Datenbankabfrage, aus dem ich es nicht raus bekomme...
Kann mir jemand einen Hinweis geben, wie ich das machen kann? Ich komme da einfach nicht weiter.
--
Greetz,
Andreas
Hallo,
Ich versuche nun, die Datümer (Geburtstag, Ein- und Austrittsdatum) vom Standardformat (1974-03-05) in das deutsche Datumsformat (05.03.1974) zu überführen. Das klappt ja grundsätzlich auch ganz gut, (Funktion aus der FAQ von de.comp.lang.php) wenn ich das Geburtsdatum in einer Variablen bekomme, aber hier steckt es (möglicherweise) irgendwo in dem Ergebnis der Datenbankabfrage, aus dem ich es nicht raus bekomme...
Sollte es nicht reichen, die Konvertierung bereits bei der Abfrage von MySQL erledigen zu lassen:
SELECT feld1, feld2, DATE_FORMAT(datumsfeld1,'%d.%m.%Y') AS datum1, DATE_FORMAT(datumsfeld2,'%d.%m.%Y') AS datum2, DATE_FORMAT(datumsfeld3,'%d.%m.%Y') AS datum3 FROM tabelle
MfG, Thomas
Hallo,
Kann mir jemand einen Hinweis geben, wie ich das machen kann? Ich komme da einfach nicht weiter.
Hier noch eine Variante, die direkt den Datumsinhalt bearbeitet (muesste dann in Deine Schleife hinein):
<?php
$datum="2002-03-16";
if(strlen($datum) == 10 && $datum[4] == "-" && $datum[7] == "-")
{
$temp=explode("-",$datum);
$datum=$temp[2].".".$temp[1].".".$temp[0];
}
print $datum;
?>
MfG, Thomas