Bild der Woche
schwarze Piste
- php
Tachchen!
Wer meine Programmierkenntnisse kennt, weiß, warum ich mich bemüht habe,
ein möglichst simples Bild der Woche-Skript zu entwerfen.
Ergebnis:
$woche = date("W");
if($woche == 08) { echo "<a href='...'><img src='...' alt='Bild der Woche' title='zur Galerie' /></a><a href='...'>» zur Galerie</a>"; }
elseif($woche == 09) { echo "<a href='...'><img src='...' alt='Bild der Woche' title='zur Galerie' /></a><a href='...'>» zur Galerie</a>"; }
[... usw.]
else { echo "<p style='text-decoration:blink;'>Fehlermeldung</p>"; }
Ich bekomme aber immer nur die "Fehlermeldung".
Dummheit, Tippfehler, Betriebsblindheit, ...?
Gruß
Die schwarze Piste
Hi,
if($woche == 08) {
elseif($woche == 09) {
Integer mit fuehrender Null sind aus Sicht von PHP Oktalzahlen.
Allerdings koennen in diesem Zahlensystem nur die Ziffern von 0 bis 7 vorkommen - 08 und 09 sind deshalb ungueltige Oktalzahlen, die PHP kommentarlos in 0 "konvertiert".
Du solltest also den Vergleich mit Strings machen - zumal date('W') dir ja auch einen String liefert.
MfG ChrisB
Tachchen!
Integer mit fuehrender Null sind aus Sicht von PHP Oktalzahlen.
Autsch ... vielen Dank!
Gruß
Die schwarze Piste
$woche = date("W");
if($woche == 08) { echo "<a href='...'><img src='...' alt='Bild der Woche' title='zur Galerie' /></a><a href='...'>» zur Galerie</a>"; }
elseif($woche == 09) { echo "<a href='...'><img src='...' alt='Bild der Woche' title='zur Galerie' /></a><a href='...'>» zur Galerie</a>"; }
[... usw.]else { echo "<p style='text-decoration:blink;'>Fehlermeldung</p>"; }
Etwas eleganter wäre es, wenn Du das mit [PHP: Switch-Case](http://de2.php.net/switch) erledigen würdest ;)
Viel eleganter, wenn Du die Wochenzahl einfach in den Bildnamen integrieren würdest, in etwa: "bild\_der\_woche\_08.jpg". Dann brauchst Du keine 53 Abfragen mehr. Um die "0" zu erhalten nutze z.B. [PHP: number_format](http://de2.php.net/manual/de/function.number-format.php).
Oder Du nimmst ein array(), in dem Du die Bildnamen der Wochenzahl zuweist und lässt dann in Abhängigkeit von der Woche den zugehörigen Namen ausgeben: `$namen = array(1=>'schneematsch.jpg', ..., 26=>'sommermorgen.jpg', ...)`{:.language-php} und dann `... href="'.$namen.'...`{:.language-php}
Viele Grüße, luti
echo $begrüßung;
$woche = date("W");
if($woche == 08) ...
elseif($woche == 09) ...
else { echo "...Fehlermeldung..."; }
Ich bekomme aber immer nur die "Fehlermeldung".
Die Antwort hast du ja schon, hier noch ein Vorschlag, wie man auch ohne Kenntnis der Oktalzahlenbesonderheit zu einem Lösungsansatz kommt:
Wenn immer "Fehlermeldung" kommt, müssen also alle vorherigen Vergleiche nicht erfolgreich gewesen sein. Mit Testausgaben kann man sich annähern:
var_dump($woche == 08); // bool(false). So war das zu vermuten.
var_dump($woche); // string(2) "08". Passt.
var_dump(08); // int(0). Huch!
Man sieht aber, dass String und Integer verglichen werden sollen. Und dass 08 irgendwie Mist ergibt. Wenn sowieso ein String vorliegt, machen wir eben einen Stringvergleich
var_dump($woche == '08'); // bool(true). Passt. Problem erledigt. Im Forum fragen, warum aus 08 ein 0 wird ...
echo "$verabschiedung $name";
Tachchen!
var_dump($woche == 08); // bool(false). So war das zu vermuten.
var_dump($woche); // string(2) "08". Passt.
var_dump(08); // int(0). Huch!
So oder ähnlich gehe ich selbst auch vor bei Dingen, die ich halbwegs
durchdrungen habe. Aber ich kann halt wirklich nicht programmieren
und hangele mich eher von einem Tutorial zum nächsten Codeschnipsel
zur nächsten Fehlermeldung.
Ich habe mir schon mindestens 100x vorgenommen, endlich mal von Grund auf
PHP zu lernen ... aber solange der Job und andere Hobbies und Familie da
sind, reicht die Zeit halt immer nur für Flickschusterei. ;-)
Gruß
Die schwarze Piste