Jester73Medlem sedan mars 2012121 inlägg Hej
Jag har en HTML/PHP kodsnutt som ser ut som
<td class="inp" style="width: <?echo $FormSize[C2]?>px;"><input class="inputs" tabindex="2" type="text" name="FNamn" value="<?php (!empty($client) ? echo $info[FNamn]: "")?>" />
Min fråga är varför skrivs inte $info[FNamn] ut?
Var kan jag läsa mer om just denna syntax
(testavvariabel ? Utfall1 : Utfall2)
Tack på förhand!
PeddaMedlem sedan juni 20006 032 inlägg Flytta sista parentesen
(!empty($client)) ? echo $info[FNamn]: ""
Detta är en if sats, kan även skrivas
if (!empty($client)) {
echo $info[FNamn]; // !empty($client) returnerar true
} else {
echo $info[FNamn]; // !empty($client) returnerar false
}
Jojoxx: nej. Den extra parentesen behövs inte, och det är inte varför Jester73:s kod inte funkar. Du kan inte sätta echo mitt i ett uttryck av den typen. Du kan/bör bara använda variabler eller funktioner som returnerar ett värde, och sedan använda värdet från hela uttrycket i echo. Dessutom måste/bör du nog ha ett semikolon efter hela uttrycket, precis som annars.
Dvs:
<?php echo (!empty($client) ? $info[FNamn]: ""); ?>
Dock bör du göra en sak till, nämligen att köra resultatet genom htmlspecialchars. Denna funktion gör så att t ex " ersätts med " vilket förhindrar att någon skriver in " i fomuläret och på så vis kan få in HTML-kod i sidan.
<?php echo htmlspecialchars(!empty($client) ? $info[FNamn]: ""); ?>
?: kallas för the ternary operator på engelska och den finns beskriven här:
http://php.net/manual/en/language.operators.comparison.php
PeddaMedlem sedan juni 20006 032 inlägg nitro har nog rätt i att man inte kan köra en echo i en sån if-sats.
Tror att jag har varit borta från PHP för länge, måste nog koda lite snart så jag inte gör fler såna misstag. :e
JojoxxMedlem sedan juni 20004 308 inlägg
nitro2k01 skrev:
Jojoxx: nej. Den extra parentesen behövs inte, och det är inte varför Jester73:s kod inte funkar. Du kan inte sätta echo mitt i ett uttryck av den typen.
Nej, givetvis inte. Det borde jag sett. Gick lite för snabbt som vanligt. :r
Rekommenderar en editor som illustrerar med god syntax highlighting vad som händer i koden. Exempelvis zend.