webForumDet fria alternativet

Skriva ut ut variabeln

7 svar · 1 000 visningar · startad av Jester73

Jester73Medlem sedan mars 2012121 inlägg
#1

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!

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Det saknas en parantes:

(!empty($client))
PeddaMedlem sedan juni 20006 032 inlägg
#3

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
}
Jester73Medlem sedan mars 2012121 inlägg
#4

Tackar för snabbt svar

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

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
#6

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
#7

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

walter groupiusMedlem sedan juli 2004144 inlägg
#8

Rekommenderar en editor som illustrerar med god syntax highlighting vad som händer i koden. Exempelvis zend.

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)