$dat_neu = preg_replace.... Was stimmt hier nicht?

next1

Mitglied
Hallo zusammen,ich habe volgendes Script, welches mir unter anderem das aktuelle Datum eines Datensatzes anzeigt......


<?php
include ("db.inc.php");
$dat = $data[Datum];
$dat_neu = preg_replace('/(\d\d\d\d)-(\d\d)-(\d\d)/','\3.\2.\1',$dat);
$sql_statement="SELECT * FROM $tb WHERE Datum = CURDATE() ORDER BY Kunde ASC";
$resultset=mysql_query($sql_statement);
while($data=mysql_fetch_array($resultset))
{echo "
<table border=0 cellspacing=0 cellpadding=2 width=99%>
<tr bgcolor=#efefef><td width=80><font size=2>Erstellt am:</font></td><td colspan=2><font size=2>$dat_neu</font></td></tr>
<tr bgcolor=#f5f5dc><td width=80 >$data[Kunde]</td><td align=right width=50>H&auml;ndler-Nr:&nbsp;</td><td>$data[Hd_Nr]</td></tr>
<tr bgcolor=#f5f5dc><td valign=top>
H&auml;ndler:&nbsp;</td><td colspan=2>$data[Hd_Name]
</td>
</tr>
<tr><td colspan=3 style=\"height:5px;font-size:5px;border-top:1px solid blue;\">&nbsp;</td><tr>
</table>
";
}
mysql_close($dp);
?>

ich hatte vorgesehen, das er mir unter "$da_neu" das aktuelle Datum in deutschem Format anzeigen soll...macht er aber nicht...er zeigt mir nichts an........
er bekommt keine Wertzuweisung unter $dat = $data[Datum], wenn ich nur $data[Datum] in der Tabelle einsetzte zeigt er mir zwar das aktuelle Datum aber mit yyyy-mm-dd.......das ist zwar soweit ok, möchte ich aber nicht...


Vielleicht hat jemand von euch eine Idee ohne das ganze Script umzubauen......
Dank für eure Hilfe
Dieter
 
Um ein Fehler zu finden währe es interessant, ein Beispiel von deinem Datum zu haben.

$data[Datum]
 
Hallo,
sollst du haben.......


Auszug aus DB:
Feld Typ Null Standard
Id int(11) Ja NULL
Hd_Nr varchar(20) Ja NULL
Passwort varchar(55) Ja NULL
Passwort2 varchar(12) Ja NULL
Hd_Name varchar(255) Ja NULL
Vorname varchar(255) Ja NULL
Nachname varchar(255) Ja NULL
Strasse varchar(255) Ja NULL
PLZ int(11) Ja NULL
Ort varchar(255) Ja NULL
Kunde varchar(50) Ja NULL
Status varchar(50) Ja
Hinweise text Ja NULL
Datum date Ja NULL (Format das Angezeigt wird = 2010-02-28)

das Problem ist, das er mir nichts anzeigt, so wie ich die Abfrage erstellt habe......

denke auch nicht das es etwas mit der Tabellenstrucktur zu tun hat, da er die Abfrage ohne replace ordnungsgemäß ausführt...
Gruß
Dieter
 
Warum formatierst du das Datum nicht gleich mit dem Befehl date(), wenn du das ganze schon als Date gespeichert hat?
 
Ich möchte das er mir nur die aktuellen Datensätze anzeigt, also NUR die von heute...und einfach mit:

SELECT * FROM $tb WHERE Datum = CURDATE() ORDER BY Kunde ASC"; zeigt er mir nur Fehlermeldungen...also bin ich zu CURDATE() (damit er mir nur den Tag an sich anzeigt)........ das geht auch, nur das Format ist dann wie in der DB hinterlegt YYYY-MM-DD....und mit preg_replace wollte ich es in DD.MM.YYYY formatieren.... aber ich bekomme die Übernahme der Abfragedaten zu replace irgendwie nicht auf die Reihe......

Gruß
Dieter
 
Hi,

dann bau halt deinen SQL-Query etwas um:

Code:
SELECT *, DATE_FORMAT(Datum, '%d.%m.%Y') as DatumFormatiert FROM $tb WHERE Datum =  CURDATE() ORDER BY Kunde ASC

Dann greifst du so auf das Datum zu:

PHP:
while($data=mysql_fetch_array($resultset))
{echo "
<table border=0 cellspacing=0 cellpadding=2 width=99%>
<tr bgcolor=#efefef><td width=80><font size=2>Erstellt  am:</font></td><td colspan=2><font  size=2>" . $data['DatumFormatiert'] . "</font></td></tr>
<tr bgcolor=#f5f5dc><td width=80  >$data[Kunde]</td><td align=right  width=50>H&auml;ndler-Nr:&nbsp;</td><td>$data[Hd_Nr]</td></tr>
<tr bgcolor=#f5f5dc><td valign=top>
H&auml;ndler:&nbsp;</td><td colspan=2>$data[Hd_Name]
</td>
</tr>
<tr><td colspan=3  style=\"height:5px;font-size:5px;border-top:1px solid  blue;\">&nbsp;</td><tr>
</table>
";
}
 
Ich bekomme gar keine Fehlermeldung.......er zeigt mir einfach nichts an

wie gesagt, wenn ich das "preg_replace" rausnehme ist alles OK, nur im Englischen-Datumsformat.....
Das "preg_replace" funktioniert auch aber nur ohne die Kombination mit der Abfrage.................

Gruß
Dieter
 
Irgendwie reden wir aneinander vorbei.
Um ein regex zu testen braucht man Testdaten. Also, was steht in $data[Datum] ?
ist $data[Datum] ein String oder ein Date?

Einmal schreibst du, dass nur Fehlermeldungen kommen, und auf Nachfrage schreibst du, dass eben keine Fehlermeldungen kommen. Was denn nun?
 
Zurück