if - else
LiveAndSmile
- php
0 j4nk3y-1 pl0 dedlfix0 Matthias Apsel
Hallo,
lässt sich dieses auch etwas kürzer schreiben?
<?php if($holeDaten->layout == "raster"): ?>
<a class="aktuell" href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=raster">Raster</a> - <a href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=liste">Liste</a>
<?php else: ?>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=raster">Raster</a> - <a class="aktuell" href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=liste">Liste</a>
<?php endif; ?>
Habe solche Abfragen an mehreren Stellen und es macht meinen Code doch sehr unübersichtlich.
Hey,
Wie wärs damit?
<a
<?php if($holeDaten->layout == "raster"): ?>
class="aktuell"
<?php endif; ?>
href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=raster">Raster</a> - <a class="aktuell" href="<?php echo $_SERVER['PHP_SELF']; ?>?layout=liste">Liste</a>
Gruß
Jo
hi,
Habe solche Abfragen an mehreren Stellen und es macht meinen Code doch sehr unübersichtlich.
Dann guck doch mal, ob das mit einer richtigen Template-Engine übersichtlicher wird -- davon bin ich überzeugt.
MfG
Tach!
lässt sich dieses auch etwas kürzer schreiben?
Mit Inline-Ifs (sprich: ternärer Operator) wird es nicht kürzer.
Ich sehe aber, dass es sowieso noch zu kurz ist. Es fehlen htmlspecialchars()-Aufrufe bei den echos.
Solange da nicht noch ein <pre> oder vergleichbares mitspielt, kannst du zumindest nach den Bindestrichen eine neue Zeile beginnen, also das zweite a-Element auf eine eigene Zeile setzen.
Statt <?php echo
kannst du <?=
nehmen, wenn die PHP-Version nicht zu alt ist.
dedlfix.
Hallo,
danke für deine Antwort
Ich sehe aber, dass es sowieso noch zu kurz ist. Es fehlen htmlspecialchars()-Aufrufe bei den echos.
Upp habe ich total vergessen, hab es nachgeholt
<?php if($object->layout == "raster"): ?>
<a class="aktuell" href="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>?layout=raster">Raster</a> -
<a href="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>?layout=liste">Liste</a>
<?php else: ?>
<a href="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>?layout=raster">Raster</a> -
<a class="aktuell" href="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>?layout=liste">Liste</a>
<?php endif; ?>
Statt
<?php echo
kannst du<?=
nehmen, wenn die PHP-Version nicht zu alt ist.
Ich habe PHP 7 im Einsatz. All-Inkl hat geraten wenn ich etwas neues mache direkt auf die aktuelle umzusteigen und nichts altes mehr verwenden da die alten Versionen der Reihe nach abgeschalten werden.
Hallo LiveAndSmile,
<?php $attr_href = "href=" . $_SERVER['PHP_SELF'] . "?layout=" . $holeDaten->layout; ?>
<?php if ($holeDaten->layout == "raster") : ?>
<a>Raster</a> - <a <?=$attr_href?>>Liste</a>
<?php else: ?>
<a <?=$attr_href?>>Raster</a> - <a>Liste</a>
<?php endif; ?>
und die Klasse brauchst du nicht, denn du kannst zwischen a
und a[href]
unterscheiden. Das hat zudem den Vorteil, dass sich der Link, der grade aktuell ist, nicht klicken lässt.
Bis demnächst
Matthias
@@Matthias Apsel
<?php $attr_href = "href=" . $_SERVER['PHP_SELF'] . "?layout=" . $holeDaten->layout; ?>
Auf das fehlende htmlspecialchars()
hat dedlfix ja schon hingewiesen.
Fehlen nicht auch Anführungszeichen? (" oder ', nicht richtige.) Ist denn sichergestellt, dass $_SERVER['PHP_SELF'] . "?layout=" . $holeDaten->layout
nur Zeichen enthält, bei denen der Attributwert in HTML nicht in Anführungszeichen stehen muss?
LLAP 🖖