Autor Zpráva
KOM
Profil *
Ahoj,
vypisuji si obrázky ke článkům na svém webu z databáte, pomocí tohoto kódu:
<img src="images/fotky/<?php echo $row_novinky['novinky_foto']; ?>">
Problém je, když ke článku není přiřazen žádný obrázek. Vypisuje se mi pak na stránce prázdný čtvereček, protože v kódu je začátek <img>. Jak mám tomu zamezit?
Zatím jsem to vyřešil sedlácky. Udělal jsem si 1px obrázek a sloupci 'novinky_foto' jsem přiřadil defaultní hodnotu 'prázdny.jpg' :-)
V PHP to jde urcite elegantneji, jen nevim co presně mám hledat...
Alphard
Profil
if (!empty($row_novinky['novinky_foto'])) ...
mimochodec
Profil
if ($row_novinky['novinky_foto']) {
  echo "<img src='".$row_novinky['novinky_foto']."'>" ;
}
KOM
Profil *
Díky za odpovědi. Snažím se to nějak rozběhat, ale nedaří se. Zkoušel jsem:
1. <img src="images/fotky/<?php if (!empty($row_novinky['novinky_foto'])) echo $row_novinky['novinky_foto']; ?>">
2. <img src="images/fotky/<?php if (!empty($row_novinky['novinky_foto'])); ?>">
3.
<img src="images/fotky/<?php 
if ($row_novinky['novinky_foto']) {
  echo "<img src='".$row_novinky['novinky_foto']."'>" ;
}; ?>">

Omlouvám, stránky tvořím přes Dreamweaver, který mi doplnuje php kod, ktery potrebuju. Jsem rad, ze jsem rozbehal DB a tohle je pro me navíc...
mimochodec
Profil
KOM:
Zamysli se nad tou třetí variantou. Vkládáš tam to img src dvakrát do sebe. Ten první řádek a ty poslední uvozovky vyhoď.
KOM
Profil *
pokud jsem to pochopil správně. if je funkce 'když' (jako třeba v excelu)?
V tom pripade by to melo fungovat - Když bude v DB ve sloupci 'novinky_foto' prazdna hodnota, nezobrazi se blog <img></img> ?!

Protoze kdyz vymazu prvni radek (<?php tam ale musim nechat ze?), tak prece kod nebude vedet ze ma vkladat obrazek a ani nebude znat jeho cestu...


ty blaho, takze jsem jen doplnil do 'echo' cestu k obrazku:
<?php      
if ($row_novinky['novinky_foto']) {
  echo "<img src='images/fotky/".$row_novinky['novinky_foto']."'>" ;
} ?>

a zrejme to funguje. Muze mi nekdo (mimochodec) vysvetlit, jak jsem docilil toho, ze se ted nebere v potaz <img>?
mimochodec
Profil
KOM:
pokud jsem to pochopil správně. if je funkce 'když' (jako třeba v excelu)?

Přesně tak.

Když bude v DB ve sloupci 'novinky_foto' prazdna hodnota, nezobrazi se blog <img></img>

Správně.
Pokud v $row_novinky['novinky_foto'] nebude text, neproběhne to echo a nevloží se nic, tedy ani to img src.

Protoze kdyz vymazu prvni radek (<?php tam ale musim nechat ze?), tak prece kod nebude vedet ze ma vkladat obrazek a ani nebude znat jeho cestu...

Tady ti nerozumím. Předpokládám, že $row_novinky['novinky_foto'] získáváš z databáze někde nad tímto kódem. Neřešíš to ani v #1, tak jsem to neřešil ani já. <?php se vkládá na začátek každého php, jistě.
KOM
Profil *
Muj predesly prispevek se spojil ve dva. Pod carou jsem vlozi kod, ktery funguje, jen jsem do 'echo' doplnil cestu k obrazku. To bylo to co mi nehralo u toho vymazání prvního řádku, kde je uvedena cesta k obrazku,
Ale stejne mi porad neni jasne, co zpusobuje, ze se neobrazi img :-) To že je v tom v tom if za ]) mezera, ktera bude znacit prazdnou hodnotu? Omlouvám se za pripadny stupidni dotaz :-)
mimochodec
Profil
KOM:

if ($row_novinky['novinky_foto']) {
Toto vyhodnocuje, jestli je ta proměnná neprázdná.


Jinak: http://php.net/manual/en/control-structures.if.php
KOM
Profil *
if = když
to co je v kulatych zavorkach, pouze definuje cestu... je to tak?
takže chapu to spravne, ze to co je mezi: ]) { je ta prazdna hodnota?

Když bych tam dal, placnu: ]) A { tak pokud by se objevilo v 'novinko_foto' A - nic se nevypíše??
mimochodec
Profil
Prosím tebe...
if ( podmínka ) {
  tohle udělej, když je splněno
} else {
  tohle udělej, když není splněno
}

V podmínce bývá většinou porovnání něčeho. V tomto případě je tam proměnná, což zařídí, že se ověří, jestli v ní je nějaká hodnota.
Keeehi
Profil
KOM:
to co je v kulatych zavorkach, pouze definuje cestu... je to tak?
No ne tak docela. To co je v závorkách je logický výraz, jako v matematice - pravda / nepravda. Nejčastěji tam můžete vidět třeba $promenna < 5. Okud je tam jen samotná proměnná, tak se bere její obsah. Může to být proměnná s logickou hodnotou true / false, tam je to jasné. Ale co když je v ní něco jiného? třeba číslo, nebo řetězec, nebo něco jiného? Tak tu jsou definovaná pravidla, jak to na pravda/nepravda převést:
0 => nepravda
1,2,4862,-1 => pravda
"nějaký text" => pravda
"" => nepravda (prázdný řetězec)
null => nepravda
Takže $row_novinky['novinky_foto'] je proměnná a tak se zjišťuje, jaká je v ní hodnota. Když je tam neprázdný řetězec, podmínka se provede, když je tam prázný řetězec tak ne. Aby to bylo očividnější, dalo by se to zapsat takto:
if (!empty($row_novinky['novinky_foto'])) ...
funkce empty kontroluje zda je proměnná prázdná nebo neprázdná. Pokud je prázdná, vrací true. My bychom však potřebovali přesně opačné chování a to právě dělá ten vykřičník na začátku (negace).
KOM
Profil *
Díky za vysvětlení, běžím na hokej a pak si to nastuduju. Obávám se, že tohle nebyl muj posledni stupidni dotaz :-)
Jako dalsi restik mam na webu format DATA a CASU, takze ocekavejte nejaky ten dotaz. Ale k tomuhle tematu je na netu dost povídání, tak to treba zvladnu sam. U tohohle jsem ani nevedel poradne jak mam do Google formulovat dotaz....
Keeehi
Profil
Začít se studijem můžeš na Péhápko: Učebnice PHP

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: