Heippa
Kirjoitin tässä aikani kuluksi seuraavanlaisen koodin:
Syötä kuvan URL: <form action="#" method="POST"> <input type="name" name="box"> <input type="submit" value="Lähetä"> <input type="reset" value="Tyhjennä"> </form> <hr> <?php $url = $_POST["box"]; $kuva = "<img src=\"$url\">"; echo $kuva; ?>
Tuo printtaa kuvan, minkä url on lisätty laatikkoon ja painettu entteriä.
Jos kuvan url'tä ei ole määritetty, tai sivulle on juuri saavuttu, niin siinä näkyy laatikko jonka sisällä on X, eli tämä ihan normaali asia joka näkyy jollei kuvaa löydy.
Saisikos jollain null käskyllä sen printtaamaan jotain muuta.
Koitin jo seuraavaa, mikä ei auttanut koska se printtaa kuitenkin tämän X'n:
Saako vaikka serverin asetuksista muutettua niin, että se tulostaisi oman kuvansa jollei kuvaa löydy, tai näin ensiksi tuohon ongelmaan, miten saa PHP'llä tuosta tuon X'n pois.
-Rocceri kiittää
Tuosta saan itse sen kuvan, että kuvat on valmiiksi palvelimella, joten tarkistus on hyvin yksinkertainen.
<?php if (file_exists($url)) $kuva = "<img src=\"$url\">"; else $kuva = "<img src=\"oletus.jpg\">"; echo $kuva; ?>
Mahtavaa, kiitos paljon :)
Pienellä hienosäädöllä toimii tarkoituksessani paremmin:
Tuo sun vertailus on kyllä ihan hämärä. Ensinnäkin $_POST['box'] -muuttuja ja sen myötä myös $url tulee formilta aina stringi tyyppisenä jos sen tyyppiä ei välissä vaihdeta. Ja sitten vertaat sitä null arvoon. Ja tuo vertauskin on vielä ihan ihmeellinen. Jos haluaisit verrata onko joku muuttuja tyyppiä null tai ei-null niin näin:
Tai jos vertaa tuohon sun tyyliin niin:
Eli mun ymmärtääkseni tuossa sun koodissa tuo $url -muuttuja ei ole ikinä null/tyhjä. Vaan siellä on aina vähintään 0 merkkiä pitkä stringi. Eli jos haluaisit tarkastaa antoiko kukaan mitään osoitetta kuvalle niin varmaan tekisin sen tyyliin jotenkin näin:
<?php if (strlen(trim($url)) > 0) $kuva = "<img src=\"$url\">"; else $kuva = "Ei kuvan osoitetta annettu"; echo $kuva; ?>
Edit: testasin tuota ja kyllä se näyttää noinkin toimivan niin kauan kun ei anneta esim välilyöntejä pelkästään osoitteeksi (joka hoituu tuolla trimmillä). Tosin jotenkin tuo näyttää niin härö viritykseltä, että entiä.. voin olla väärässäkin.
:DD Ehkä se voi olla vähän kummallinen, mutta kyllä se toimii :D
Todellakin tuo vertailu on kieltämättä outo, mutta kuten Rocceri totesi, se kyllä toimii halutulla tavalla. En ole koskaan nähnyt tuollaista vertailua tällaisessa yhteydessä.
TeNDoLLA kirjoitti:
Eli mun ymmärtääkseni tuossa sun koodissa tuo $url -muuttuja ei ole ikinä null/tyhjä. Vaan siellä on aina vähintään 0 merkkiä pitkä stringi.
Totta, mutta kannattaa muistaa kuitenkin, että PHP:n vertailu "==" on löysä, eli tyhjä stringi on tällöin NULL jne. Tosin Roccerin tapauksessa ei ole merkitystä onko operaattorina "==" vai "===".
No, en väitä että TeNDoLLA:n vastauksessa olisi moitittavaa, mutta tämä minun versioni on vähän yksinkertaisempi.
Rocceri kirjoitti:
:DD Ehkä se voi olla vähän kummallinen, mutta kyllä se toimii :D
$url = $_POST["box"]; # Jos arvoa ei ole, "Notice: Undefined index: box in koodi.php on line 123" # if ($url == !null), !null === true, joten # if ($url == true), lyhennetään if ($url) $kuva = "<img src=\"$url\">"; else # tässä tapauksessa else tarkoittaa # if ($url === null || $url === "" || $url === "0") $kuva = "Ei kuvan osoitetta annettu";
"Toimii" on hyvin suhteellinen käsite, ja vaikka koodi toimisikin, kannattaa muuttaa se jollain tavalla mielekkääseen muotoon. Ehdossa ($url == !null) ei ole järkeä, koska se ei tarkoita sitä, mitä luulit sen tarkoittavan.
...mutta käytä silti TeNDoLLA:n versiota. Se on parempi. :)
Ja yks vaihtoehtoinen tapa on näin:
Aihe on jo aika vanha, joten et voi enää vastata siihen.