Autor Zpráva
hoang an
Profil *
Dobrý večer,
nevíte proč mi nefunguje

$celek = "

echo "<img src="img/nazev.png">";  

<p>
$predmet<br> 
$autor<br>
$typ<br> 
$stahnout<br>
</p>

" ;


Hlasí mi to chybu u toho echo. Nevíte jak jinak vložit html tagy, aby se to ve výsledku zobrazilo? (obrázky, odkazy, divy, atd.)
panther
Profil
hoang an:
http://tiso.wz.cz/articles/uvodzovky.php
hoang an
Profil *
Díky moc! Už všechno jde jak má.
David1256
Profil
hoang an
Pokusím se ti to ukázat na tvém příkladu.
1. Do $celek nepřiřazuj echo. Echem teprve vypíšeš obsah proměnné $celek.
2. Správná struktura zápisu je taková, že HTML tagy obaluješ do " " a proměné odděluješ od tagů . .
3. Pro src v <img> se používají ' ' né " "
Tedy tvůj přepracovaný script by správně vypadal asi takto.
$celek="<img src='img/nazev.png'><p>".$predmet."<br>". $autor."<br>".$typ."<br>". $stahnout."<br></p>";
echo $celek;

EDIT: Pozdě. :-)
panther
Profil
David1256:
2) v uvozovkách PHP proměnné být mohou
3) prosím? V HTML se mohou používat jak apostrofy, tak uvozovky. Nebo nic, obojí je nepovinné
hoang an
Profil *
Jako jede mi to, ale má to takovou krkolomnou strukturu. Vyzkouším teda tu tvou, díky ;)
David1256
Profil
panther:
3) No neřekl bych, že nemáš úplně pravdu pokud jsou součástí php scriptu " " (teda alespoň co já vím tak při výpisu echem) vypíše to chybu unexpected T_STRING. Na tuto chybu mě zde na diskusi upozorňovalo dost lidí, když jsem to řešil.
EDIT: Ty myslíš v HTML nejspíš že? Tak to potom ano, ale v PHP scriptu to vypíše tu chybu a my řešíme teď PHP.
Trejpa
Profil
David1256:
Věřím, že panther ví, o čem píše. Přečti si ten odkázaný článek také. Víš, proč ti ta tvá (a hoang anova) chyba vznikla, nebo’s jen našel řešení a podstatu problému ses nezajímal? Trochu ti rozšířím obzory:
$celek="<img src=\"img/nazev.png\"><p>Bla bla<br></p>";
shaggy
Profil
David1256:
3. Pro src v <img> se používají ' ' né " "
a
my řešíme teď PHP.
Som nevedel, že php uviedlo novú verziu, v ktorej sa zápis funkcií nápadne podobá na html tagy. Alebo v tom máš zmätok ty?
David1256
Profil
Trejpa:
Ano, našel jsem funkční řešení a více jsem to už nerozebíral. Ale rozhodně jsem měl pravdu v tom, že když se obalí src do " ", tak to vypíše chybu. Jen jsem poradil, jak to vyřešit. A také mi to tu přesně tak, jak jsem to poradil hoang anovi, někdo radil na jpw.cz, tak jsem to považoval za regulérní řešení.
Trejpa
Profil
David1256:
Tvoje řešení funguje. Ale ne proto, že tam jsou uvozovky (jak’s psal), ale proto, že nejsou escapované.

Je to logické, že uvozovkami ohraničená textová proměnná nemůže přímo obsahovat další uvozovky. Ta proměnná je definovaná od uvozovky k uvozovce, takže by se na první (jako vnořené) ukončila a zbytek způsobí chybu. Právě proto je možno zapisovat uvozovky jiným způsobem, a to pomocí escape sekvence. Dokonce to jde i vícenásobně.
$celek="<script> a=\"img/nazev.png\"; document.write(\"<img src=\\\"\"+a+\"\\\">\"); </script>";

Ale není to hezké. To je přehlednější uvozovky s apostrofy střídat a escapovat až třetí a čtvrtou úroveň. Obvykle se zvolí jeden výchozí typ pro HTML a u skriptu (PHP/JS) se pro první úroveň textové proměnné použije druhý.
$celek="<script> a='img/nazev.png'; document.write('<img src=\"+a+\">'); </script>";
$celek='<script> a="img/nazev.png"; document.write("<img src=\'+a+\'>"); </script>';
David1256
Profil
OK, díky za vysvětlení.

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: