Diskuze: Stylování odstavce
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
V dodaném kódu chyba není.
Nemáš v keši starý stylopis?
Asi ano, ale když si procházím seznam cookie a dat webů tak tam nic nemám(hledal jsem název mého stylopisu)
Zkus si vymazat cache (popřípadě to zkus v jiném prohlížeči), zkontroluj, že se ti k HTML přikládá správný CSS soubor, můžeš se podívat do dev tools a zkontrolovat, jestli pro dané ID existuje styl.
Když dám zobrazit prvek tak mi to žádný styl nepřiřazuje k tomu echu... Ale napadlo mě není to tím, že se to vypisuje dřív, než se načítá soubor se stylem?
V PHP se obyčejně nevypisuje nic. To až ve speciálních šablonách (kde se sice PHP užít může, ale nikoli pro logiku aplikace). Jestli tudíž zpracováváš PHP ještě předtím, než načítáš "šablonu" (z tvého zápisu soudím, že kombinuješ PHP a HTML, tudíž v tvém případě by šablona byla někde uprostřed dokumentu, začínaje <!DOCTYPE), je možné, že se ti odstavec s ID "odhlasovano" načítá ještě před načtením souboru CSS, nejsem si tím ale jistý. Můžeš mi někam na pastebin hodit celý zdrojový kód z prohlížeče (jen HTML)? V Chrome to můžeš zjistit: pravé tlačítko -> zobrazit zdrojový kód stránky.
html
http://pastebin.com/Eds1wuew
php
http://pastebin.com/5eRuv06P
Nejsem si jistý, jestli prohlížeč styluje i značky, co jsou mimo <html>, ale vypadá to, že ne. Zkus si místo vypsání toho <p id... vytvořit nějakou proměnnou, třeba $odhlasovano = true a poté níže (už ve značce <html><body>) něco takového:
<?if ($odhlasovano):?>
<p id="vlozeno">Hlas byl úspěšně zapsán</p>
<?endif?>
Moc tomu nerozumím, proč se ptám na $odhlasovano, když pak stejně vypisuju vložení? Asi to bude tím, že nevím co znamená ta na konci ifu.
Promiň, samozřejmě jsem myslel:
<?if ($odhlasovano):?>
<p id="odhlasovano">Už jsi hlasoval</p>
<?endif?>
Ale jde o princip. Nemůžeš vypisovat nic, dokud nezačneš dokument HTML, protože ten má na starost výpis, nikoli PHP.
Aha ok díky jinak ještě jsem se ptal co znamená ta : ? ale upravilo mi to na smajlíka
Jinak, ještě řeším problém, že se to vypisuje hned při načtení stránky.. Myslel jsem to tak, aby když odešle prázdný formulář se vypsalo "Klidně hlasuj", když odhlasuje a ještě nehlasoval "Hlas byl započten"(nebo něco takového) a když odhlasuje a už jednou hlasoval tak "Už jsi hlasoval"
Je to forma z:
<?php
//...
if ($odhlaseno) {
echo '<p id="odhlasovano">Už jsi hlasoval</p>';
}
Používá se to v šablonách, abys nepoužíval echo. Množinový závorky nahradíš dvojtečkou za začátku a endif na konci. <? je zkrácenina od <?php a začíná PHP kód, ?> PHP kód končí. Ve výsledku to tedy vypadá takto:
<?if ($odhlasovano): ?>
<p id="odhlasovano">Už jsi hlasoval</p>
<?endif?>
Co se týče toho druhého dotazu, můžeš to udělat ještě tak, že místo $odhlaseno = true, si prostě do proměnné uložíš zprávu, kterou chceš odeslat. Nějak takto:
<?php
//...
if ($odeslanPrazdnyFormular) {
$message = 'Klidně hlasuj';
} elseif ($jesteNehlasoval) {
$message = 'Hlas byl započten';
} elseif ($uzHlasoval) {
$message = 'Už jsi hlasoval';
}
// dále v kódu
<?if (!empty($message)):?>
<p><?=$message?></p>
<?endif?>
Samozřejmě si ty podmínky můžeš předělat podle toho, jak potřebuješ.
Poznámka: <?= je zkrácenina, která se používá v šablonách, od <? echo.
Díky za vysvětlení těch zkratek Ještě jsem je nikdy nepoužil
tak už aspoň vím, co všechno jde..
K druhému dotazu taky díky
Zobrazeno 14 zpráv z 14.