theoretisch ist alles chic, aber dein code ist nicht wirklich aussagekräftig dadurch das du ihn vereinfacht hast.
das korrekte if-konstrukt wäre hilfreich.
Was aber sicher helfen könnte ist wenn du testweise mal vor deinem ganzen if-konstrukt folgendest schreibst:
<?php error_reporting(E_ALL); ?>
Damit werden dir evtl nicht vorhandene Variablen ausgegeben da damit der php fehlerreport levelübergreifend scharfgeschaltet ist. und so wie du es schilderst passiert da etwas das das script beendet aber die fehlermeldung nicht ausgegeben wird.
Der ordnung halber rate ich aber davon ab in ein html-tag ein solch riesiges konstrukt zu schreiben.
mach es lieber so:
<?php
if(cond){
$var = 'foo';
}elseif(cond){
$var = 'bar';
}else{
$var = 'foobar;
}
?>
<img src='<?php echo $var; ?>' />
ist übersichtlicher und damit weniger fehleranfällig
Ergebnis 1 bis 10 von 11
- 02.12.2010, 15:40 #1Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
PHP & die Verkettung von elseif's (in WordPress) Liebe Community!
Habe ein sehr merkwürdiges Problem. Ich habe, um das Header-Bild für jede Seite ändern zu können, die header-php im WP Backend Bereich verändert. Funktioniert so auch wunderbar…
Jetzt binde ich allerdings PHP ein, um die Page-ID zu finden und das entsprechende Bild auszugeben.
Die ganze Geschichte besteht also aus einem <img/> tag und einer Verkettung von elseif's also etwa so:
Nun folgender Fehler:Code:<img src='<?php if(bedingung) { echo(url des bildes); } elseif(bedingung) { echo(url des bildes); } elseif(bedingung) { echo(url des bildes); } elseif(bedingung) { echo(url des bildes); } else { echo(urls des bildes); } ?>' width="950" height="180>" alt="" />
Es funktioniert ausschließlich das if, das erste elseif und das else am Ende.
Alle andere elseifs in der Mitte geben einfach nichts aus und sorgen dafür, dass WP "crashed" also eine von Inhalt befreite, weiße Seite, in der nur noch der Blog-Titel steht.
Ich würde mich sehr über eine Antwort freuen und danke für jeden sinnvollen Hinweis!!!
Liebe Grüße
…Mini-Leo
You can only take what you can carry.
- 02.12.2010, 15:59 #2Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.666
Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 02.12.2010, 16:34 #3Bismarckapfel
- Registriert
- 01.2009
- Ort
- Braunschweig
- Beiträge
- 75
Abgesehen davon, dass der von Dir beschrieben Code funktionieren sollte, kann man ohne genaue Angabe der "Bedingung" keiner weitere Fehlerforschung betreiben. Unabhängig davon solltest Du aber mal überlegen ob Du statt dem unübersichtlichen if-elseif-gesumpfs nicht lieber die switch-Anweisung nutzt. Denn genau für solche Fälle wurde diese gemacht.
red
- 02.12.2010, 16:35 #4Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Na gut…*Ich halte diese Schreibweise weder für übersichtlicher, noch für weniger fehleranfällig. Denn wenn mans genau nimmt, sind die Konstrukte ziemlich genau identisch.
Mein genaues Konstrukt hab ich ja gegeben. Nur ein bisschen vereinfacht.
Trotzdem hier das ganz genaue:
Code:<img src='<?php if (is_home()) { echo("http://……/wp-content/uploads/2010/12/startl.jpg"); } elseif (is_page(4)) { echo("http://……/wp-content/uploads/2010/12/ueberuns.jpg"); } elseif (page_is(32)) { echo("http://……/wp-content/uploads/2010/12/security.jpg"); } elseif (is_page(22)) { echo("http://……/wp-content/uploads/2010/12/referenzen.jpg"); } elseif (is_page(18)) { echo("http://……/wp-content/uploads/2010/12/philosophie.jpg"); } elseif (is_page(28)) { echo("http://……/wp-content/uploads/2010/12/parkservice.jpg"); } elseif (is_page(24)) { echo("http://……/wp-content/uploads/2010/12/limouservice.jpg"); } elseif (is_page(30)) { echo("http://……/wp-content/uploads/2010/12/komplettservice.jpg"); } elseif (is_page(8)) { echo("http://……/wp-content/uploads/2010/12/fuhrpark.jpg"); } elseif (is_page(10)) { echo("http://……/wp-content/uploads/2010/12/einsatzbereiche.jpg"); } else { echo("http://……/wp-content/uploads/2010/12/startl.jpg"); } ?>' width="950" height="180>" alt="" />
Das debugging-Teil hat [b]nicht[Ib] geholfen. Es ist einfach nichts passiert, keine Änderung.
Aber schon mal danke
…Mini-Leo
You can only take what you can carry.
- 02.12.2010, 16:40 #5Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
- 02.12.2010, 16:48 #6Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Ist das so gemeint:
???Code:switch($i) { case(is_home()): echo("http://……/wp-content/uploads/2010/12/startl.jpg"); case(is_page(4)): echo("http://……/wp-content/uploads/2010/12/ueberuns.jpg"); case(page_is(32)): echo("http://……/wp-content/uploads/2010/12/security.jpg"); case(is_page(22)): echo("http://……/wp-content/uploads/2010/12/referenzen.jpg"); case(is_page(18)): echo("http://……/wp-content/uploads/2010/12/philosophie.jpg"); case(is_page(28)): echo("http://……/wp-content/uploads/2010/12/parkservice.jpg"); case(is_page(24)): echo("http://……/wp-content/uploads/2010/12/limouservice.jpg"); case(is_page(30)): echo("http://……/wp-content/uploads/2010/12/komplettservice.jpg"); case(is_page(8)): echo("http://……/wp-content/uploads/2010/12/fuhrpark.jpg"); case(is_page(10)): echo("http://……/wp-content/uploads/2010/12/einsatzbereiche.jpg"); default: echo("http://……/wp-content/uploads/2010/12/startl.jpg"); }
Oder hab ich dabei was missverstanden?
…Geändert von Mini-Leopard (02.12.2010 um 16:50 Uhr) Grund: Zensur
Mini-Leo
You can only take what you can carry.
- 02.12.2010, 16:52 #7Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Hatte jetzt den einzigen Effekt, dass die Seiten zwar funktionieren, allerdings nur das Fragezeichen erscheint.
Mini-Leo
You can only take what you can carry.
- 02.12.2010, 18:34 #8Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.666
an der stelle finde ich ein switch etwas gewagt! man bekommt es zwar damit zum laufen aber eigentlich ist es für die wertekontrolle.
man kann zwar ein switch dahingehend mishandeln das es das macht was du möchtest aber ob das so konform ist wage ich zu bezweifeln!
zumal die denkweise dann anders ist. In anderen sprachen funktionieren bedingungen wie in einem if auch in einem switch ebenso wie >= usw.
is_page(X) ist denke ich mal eine hauseigene funktion von WP die true zurückliefert wenn es die entsprechende seite ist.
wenn du also meinetwegen grade auf seite 10 bist und möchtest das über ein if abprüfen schreibst du (wie du es ja auch richtig gemacht hast)
if(is_page(10)){echo "seite 10;}
die bedingung muss also erfüllt sein (true)
wenn du aber mit boolschen werten in einem switch arbeitest (was ich irgendwie nicht so pralle finde) musst du negieren.
Wir sind immer noch bei page 10
switch($i){
case (!is_page(10)): echo "seite 10";break;
default: echo "currywurst";break;
}
und diese schreibweise ist programmierlogisch absoluter bullshit!!!
kannst hier mal sehen..
<?php
$i = null;
switch($i){
case(true): echo "1";break;
case(true): echo "2";break;
case(true): echo "3";break;
case(true): echo "4";break;
}
?>
so kommt keine ausgabe da kein default, setzt du jetzt aber beispielsweise die 3 auf false wird diese ausgegeben!
Fazit: du möchtest eine reaktion bei page 10 haben musst aber sagen wenn es nicht page10 ist...
Bitte bleib bei deinem if-else das ist sauberer. oder jetzt wo du alles fertig hast, setze vor jedes is_page ein ausrufezeichen zum negieren.
Gibt es denn alle seiten die du über is_page abfragst?
teste mal bitte folgendes:
var_dump(is_page(x));
start dem x setzt du mal bitte eine pagenummer ein bei der er dir den fehler bringt. mich würde mal interessieren was er da für einen rückgabewert liefert.
kann auch sein das die in der funktion bei nicht erfüllung ein exit; drin haben was natürlich sehr ärgerlich wäre.Vollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*
- 02.12.2010, 18:51 #9Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Gibt mit
aus.Code:bool(false)
Für mich nicht so ganz begreiflich… Weil ja nur der erste elseif funktioniert.
Und das letzte else auch!
Sprich ein exit kommt nicht in frage.
Irgendwie eigenartig :/Mini-Leo
You can only take what you can carry.
- 02.12.2010, 19:25 #10Dülmener Rosenapfel
- Registriert
- 03.2007
- Ort
- Bad Bevensen aka der A**** der Heide
- Alter
- 34
- Beiträge
- 1.666
jo, das exit können wir schonmal ausschliessen.
und du warst bei der ausgabe auch auf der seite die dort in der bedingung bzw in dem var_dump stand? wenn ja ist da irgendwas mit deiner pagekennung nicht ganz koscha.
denn bei ner übereinstimmung müsste bool(true) kommen.
was aber immer noch nicht erklärt wieso er dir die seite leerfegt.
ach nur zur schonung deiner finger, ein echo braucht keine klammern, funktioniert zwar auch mit aber ist eigentlich ohne vorgesehen. hat aber mit dem problem nix zutunVollzeitfalschparker....
MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
last but not least: good old iPod Shuffle 512MB*g*


Zitieren
