webForumDet fria alternativet

Problem med att visa rätt bild

PHPur PHP

4 svar · 527 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Någon som kan hitta felet i dessa två alternativ:

// ALT 1
if ($rad['urlbild'] || $rad['kon'] == 'Man')
{ 
echo "<img src='images/saknas_kille.jpg' height='150'>"; 
}
elseif ($rad['urlbild'] || $rad['kon'] == 'Kvinna')
{
echo "<img src='images/saknas_tjej.jpg' height='150'>"; 
}
elseif ($rad['urlbild'])
{
echo "<img src=uploads/". $rad['urlbild']." height='150'>";
}
//

// ALT 2
if ($rad["urlbild"] || $rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>";
elseif ($rad["urlbild"] || $rad['kon'] == 'Kvinna') $bild = "<img src='images/saknas_tjej.jpg' height='150'>";
elseif ($rad["urlbild"]) $bild = "<img src=uploads/". $rad['urlbild']." height='150'>";

//

Jag försöker alltså visa en bild på en tjej/kille beroende på vad det har valt för kön i profilen, om bild saknas. Jag lyckas endast få fram bilden på killen hela tiden.

andyoumaydieMedlem sedan dec. 2006608 inlägg
#2

Ok, jag har aldrig programmerat något i php överhuvudtaget, så jag kommer bara med lite grejer som ser konstigt ut enligt min begränsade programmeringserfarenhet. :)

Jag vet inte vad $rad["urlbild"] returnerar men antar att det är true eller false och
du vill ju ha specialbild om det INTE är valt nån bild, borde det då inte vara ! $rad["urlbild"], alltså utropstecken först, som betyder INTE.

Sen tycker jag också att det ser konstigt ut med ||.
Betyder inte || eller? Det borde ju vara och, alltså &&.

Om mina förslag är värda något överhuvudtaget hamnar vi alltså på nåt sånt här.

if (! $rad["urlbild"] && $rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>"; 
elseif (! $rad["urlbild"] && $rad['kon'] == 'Kvinna') $bild = "<img src='images/saknas_tjej.jpg' height='150'>"; 
elseif ($rad["urlbild"]) $bild = "<img src=uploads/". $rad['urlbild']." height='150'>";

Men som sagt jag har ingen aning om det här.

GuldstrandMedlem sedan juli 20041 271 inlägg
#3

andyoumaydie skrev:

Ok, jag har aldrig programmerat något i php överhuvudtaget, så jag kommer bara med lite grejer som ser konstigt ut enligt min begränsade programmeringserfarenhet. :)

Jag vet inte vad $rad["urlbild"] returnerar men antar att det är true eller false och
du vill ju ha specialbild om det INTE är valt nån bild, borde det då inte vara ! $rad["urlbild"], alltså utropstecken först, som betyder INTE.

Sen tycker jag också att det ser konstigt ut med ||.
Betyder inte || eller? Det borde ju vara och, alltså &&.

Om mina förslag är värda något överhuvudtaget hamnar vi alltså på nåt sånt här.

if (! $rad["urlbild"] && $rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>"; 
elseif (! $rad["urlbild"] && $rad['kon'] == 'Kvinna') $bild = "<img src='images/saknas_tjej.jpg' height='150'>"; 
elseif ($rad["urlbild"]) $bild = "<img src=uploads/". $rad['urlbild']." height='150'>";

Men som sagt jag har ingen aning om det här.

Verkar fungera nu, tack för hjälpen.
Angående "||", så har jag kunnat använda detta tidigare utan problem.

andyoumaydieMedlem sedan dec. 2006608 inlägg
#4

Fint att det fungerar :)

Guldstrand skrev:

Angående "||", så har jag kunnat använda detta tidigare utan problem.

Om vi jämför de olika raderna.
Med "||":

if ($rad["urlbild"] || $rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>";

Ger: OM $rad["urlbild"] är sann ELLER $rad['kon'] är 'Man' så är $bild = 'saknas_kille'.
Alltså, om användaren valt en bild eller är en man så visas bilden 'saknas_kille'. Och det är ju fel, för har han valt bild så ska ju den visas.

Med ! och &&;

if (! $rad["urlbild"] && $rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>";

Ger: OM INTE $rad["urlbild"] är sann OCH $rad['kon'] är 'Man' så är $bild = 'saknas_kille'.
Dvs har användaren inte valt en bild och är en man så skall 'saknas_kille' bilden visas, och det är riktigt.

Men sen hade du ju kunnat förenkla hela frågesatsen till:

if ($rad["urlbild"]) $bild = "<img src=uploads/". $rad['urlbild']." height='150'>";
elseif ($rad['kon'] == 'Man') $bild = "<img src='images/saknas_kille.jpg' height='150'>"; 
else $bild = "<img src='images/saknas_tjej.jpg' height='150'>";

Vilket borde ge samma utfall fast med mindre och lättare kod.

GuldstrandMedlem sedan juli 20041 271 inlägg
#5

Aha, då förstår jag bättre.
Tack för infon.

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