Autor Zpráva
tee.vee
Profil
Dobrý den,
akočil mi tato banalita není vůbec jasná, ani trochu nechápu proč tomu tak je. K řádně přihlášeným uživatelům si ukládám do sessions identifikátor s číslem, co daný uživatel vidět může a co ne. Mám tu malou ověřovací funkci, která uživateli obsah ukáže nebo ne - například položky v menu. Ověření funguje dobře, ale vnořená funkce vrací výstup před html. Ukázka:


<ul>
  <li class="<?php activeClass($str,'home'); ?>"><a href="/admin/home/" title="Nástěnka">Nástěnka</a></li>
  <?php if(isset($_SESSION["level"])){if($_SESSION["level"] == 1 && 2) { echo "<li class=\"" . activeClass($str,'settings') . "\"><a href=\"/admin/settings/\" title=\"Nastavení systému\">Nastavení systému</a></li>\n";}}?>
<ul>

- kde funkce activeClass vrací hodnotu active nebo nic (obarvení aktivního odkazu při otevřené stránce), $str je jen název URL stránky.

function activeClass($str,$id){
    if($str==$id){
        echo 'active';
    }
}

V přvním případě se stránka otevře bez problémů, a pokud je na ní kliknuto, výstup vypadá následovně:

<ul>
<li class="active"><a href="/admin/home/" title="Nástěnka">Nástěnka</a></li>
<li class=''"><a href='/admin/config/' title='Konfigurační nástroje'>Konfigurace</a></li>
</ul>

Když kliknu na druhou položku (a samozřejmě mám v sessions uloženou hodnotu 1 nebo 2), html výstup vypadá následovně:

<ul>
<li class=""><a href="/admin/home/" title="Nástěnka">Nástěnka</a></li>
active<li class=''"><a href='/admin/config/' title='Konfigurační nástroje'>Konfigurace</a></li>
</ul>

A můj dotaz zní proč se active zobrazuje před všemi html tagy - tj ne v podobě <a href="active">...

Když jsem vyhodil ověřovací if funkci, vše se zobrazuje tak jak má. Jakmile je tam ale nějaký jiný php kód s funkcí, automaticky se výstup z funkce vypíše ještě před html kód. Přitom má být správně dle:

echo "<li class=\"" . activeClass($str,'settings') . "\"><a href=\"/admin/settings/\" title=\"Nastavení systému\">Nastavení systému</a></li>

vypsána hned za <li class="....
Tori
Profil
tee.vee:
funkce activeClass vrací hodnotu active
nevrací. „vrátit“ se řekne „return“
tee.vee
Profil
Prosím, napište do poštovní obálky "hlupák" a pošlete mi jí na moji adresu. :-)

Děkuji mnohokrát :)

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: