hi AlexD!
zuerst, versuch mal bitte das:
setlocale(LC_ALL, 'de_DE@euro', 'de-DE', 'de', 'ge', 'de_DE.ISO_8859-1', 'German');
vielleicht klappt damit die deutsche ausgabe.
sicher kann ich die einige erklärungen geben:
setlocale sorgt dafür das du deutsche datumsausgaben hast, wenn strings ausgegeben werden. (wenn es denn funzt die scheiße.)
die anweisung (auch "ternary conditional operator" genannt):
$erl = $rows['erledigt'] == 0 ? '' : '<img src="./images/ready_big.jpg width="15" height="15">';
ist nur eine andere schreibweise für:
if($rows['erledigt'] == 0) $erl = '';
else $erl = '<img src="./images/ready_big.jpg width="15" height="15">';
ist halt nur kürzer.
warum, deine version nicht klappt, lässt sich einfach erklären. du hast den falschen datatype switched. du holst dir das datum als string aus der db und willst es nach dem explode als integer verarbeiten. kann vorkommen, dass php das etwas krumm sieht und rumzickt.
schon mal versucht aus dem zimmer zugehen ohne die tür zu öffnen?... :-)
an dem folgenden beispiel kannst du sehen, welchen datatyp du verwenden wolltest:
PHP-Code:
<?php
$datum = '2005-07-12';
$parts = explode('-', $datum);
foreach($parts as $part){
if(is_int($part)) print 'integer<br>';
elseif(is_string($part)) print 'string<br>';
else print 'anderer type<br>';
}
?>
nun zu dem codeteil:
strftime("%d.%m (%d. %b)", mktime(0, 0, 0,$datum[1], $datum[2], $datum[0]));
als ersten parameter übergibst du hier der funktion strftime das vorformatierte datum, bzw. die datumsformatierung die du am ende haben willst.
%d = tage im format 01-31
. = trenner :-)
%m = monat im format 01-12
( = rundeklammer auf :)
%b = gekürzter monatsname (Jan, Feb...)
) = rundeklammer zu ^_^
da strftime als zweiten parameter einen unixtimestamp erwartet musst du diesen erst mit mktime berechnen:
mktime(0, 0, 0, $datum[1], $datum[2], $datum[0])
mktime erwartet folgende parameter:
1. stunde
2. minute
3. sekunde
4. monat
5. tag
6. jahr
7. sommer-/winterzeit angabe
der 7. parameter ist optional, alle anderen kannst du durch eine 0 ersetzen, keiner der 6 parameter ist pflicht, setzt du alle auf 0, dann wird der aktuelle timestamp genutzt (hierfür ist aber time() besser geeignet). alle parameter von 1-6 die du mit 0 angibst, werden durch die aktuelle sekunde, minute, stunde bzw. durch den aktuellen monat, tag oder das aktuelle jahr ersetzt.
ich hoffe, das ist jetzt so in ordnung?
sorry noch mal, war ein wenig im streß beim posten :-)