| Autor | Zpráva | ||
|---|---|---|---|
| lokix Profil |
Dobrý den všem,
potřeboval bych poradit s jedním problémem ohledně vypisování menu <li> z db (mysql). Jelikož nevím počet menu dopředu dělám výpis podle kódu níže a vše funghuje jak má až na označení li class=selected. Zkoušel jsem podmínku např. na položku s názvem zastupitelstvo, které tam je ale i přes definování: elseif($_GET['read']=="zastupitelstvo"){echo "<li class=\"selected\">";} se místo po kliknutí na danou položku označí "clas=selected" i všechny ostatní. Hledal jsem odpověď ale nic uspokojivého co by mi fungovalo jsem bohužel nenašel. Nežádám kompletní kód ale za jakékoliv nakopnutí či příklad budu moc vděčný. <?php
$kat = "main";
$url2=mysql_query("SELECT
`clanky`.`nazev` AS productname,
`kategories`.`name` AS katname,
`www`
FROM `clanky`
LEFT JOIN `menu_kat` ON `clanky`.`id`=`menu_kat`.`clanky`
LEFT JOIN `kategories` ON `menu_kat`.`kategorie`=`kategories`.`id`
WHERE `kategories`.`name`='$kat'") or die (mysql_error());;
while ($dotaz2=MySQL_Fetch_Array($url2)):
{
if(empty($_GET['read'])){echo "<li>";}elseif($_GET['read']=="zastupitelstvo"){echo "<li class=\"selected\">";}else{echo "<li>";}
echo "<a class=\"border-b border-t\" href=\"index.php?read={$dotaz2['www']}\" title=\"Archiv\">{$dotaz2['productname']}</a></li>\n";
}
endwhile; ?> |
||
| Tori Profil |
#2 · Zasláno: 10. 4. 2011, 12:43:09
Porovnávejte $_GET[read] a nazev položky z db.
|
||
| lokix Profil |
#3 · Zasláno: 10. 4. 2011, 14:10:26
Tori:
Díky ale toto jsem udělal viz: elseif($_GET['read']=="zastupitelstvo"){echo "<li class=\"selected\">";} a stejně to označí po kliknutí na odkaz (li) všechny ostatní. A navíc když neznám dopředu název položky tak to je ještě těžší. |
||
| Tirus Profil |
#4 · Zasláno: 10. 4. 2011, 14:21:33
lokix:
<?php
$kat = "main";
$url2 = mysql_query("SELECT
`clanky`.`nazev` AS productname,
`kategories`.`name` AS katname,
`www`
FROM `clanky`
LEFT JOIN `menu_kat` ON `clanky`.`id`=`menu_kat`.`clanky`
LEFT JOIN `kategories` ON `menu_kat`.`kategorie`=`kategories`.`id`
WHERE `kategories`.`name`='$kat'") or die(mysql_error());
;
while ($dotaz2 = MySQL_Fetch_Array($url2)):
{
if ($_GET['read'] == "zastupitelstvo")
{
echo "<li class=\"selected\">";
}
else
{
echo "<li>";
}
echo "<a class=\"border-b border-t\" href=\"index.php?read={$dotaz2['www']}\" title=\"Archiv\">{$dotaz2['productname']}</a></li>\n";
}
endwhile; ?>zkus to takto, snad to půjde.. if tam je na nic, to je splněný i když v tom getu máš zastupitelstvo přeci, takže ti to tam dalo dvakrát <li> |
||
| Tori Profil |
#5 · Zasláno: 10. 4. 2011, 14:21:37
lokix:
„Díky ale toto jsem udělal viz: elseif($_GET['read']=="zastupitelstvo"“ Ne, to jste porovnával s řetězcem, přičemž obě hodnoty se v cyklu nijak nemění - proto se vám označily všechny položky. Myslela jsem něco takovéhoto: // ještě před cyklem si zjistíte, jestli a jaká položka menu byla zadaná v url.
$aktivni = isset($_GET['read']) ? $_GET['read'] : '';
while ($dotaz2=MySQL_Fetch_Array($url2)):
{
echo "<li". ($aktivni == $dotaz2['productname'] ? ' class="selected"' : '') .'>';
echo "<a class ..... atd. ";
} |
||
| lokix Profil |
#6 · Zasláno: 11. 4. 2011, 18:10:59
Tori:
Moc díky za nápad. Toto by mě nenapadlo ale bohužel i když teoreticky to má jít tak se mi po kliknutí na vygenerovaný odkaz nepřidá do <li> ten kýžený class=celected... Buď někde dělám chybu nebo už nevím. Pro jistotu přidávám ještě jednou kód: <?php
$kat = "main";
$url2=mysql_query("SELECT
`clanky`.`nazev` AS productname,
`kategories`.`name` AS katname,
`www`
FROM `clanky`
LEFT JOIN `menu_kat` ON `clanky`.`id`=`menu_kat`.`clanky`
LEFT JOIN `kategories` ON `menu_kat`.`kategorie`=`kategories`.`id`
WHERE `kategories`.`name`='$kat'") or die (mysql_error());;
$aktivni = isset($_GET['read']) ? $_GET['read'] : '';
while ($dotaz2=MySQL_Fetch_Array($url2)):
{
echo "<li". ($aktivni == $dotaz2['productname'] ? ' class="selected"' : '') .'>';
echo "<a class=\"border-b border-t\" href=\"index.php?read={$dotaz2['www']}\" title=\"Archiv\">{$dotaz2['productname']}</a></li>\n";
}
endwhile; ?> |
||
| Tori Profil |
#7 · Zasláno: 11. 4. 2011, 20:52:13
Pardon, až teď jsem si všimla, že vlastně do odkazu předáváte hodnotu z pole www - takže v té podmínce na ř.14 ([#6]) má být $aktivni == $dotaz2['www']
|
||
| lokix Profil |
#8 · Zasláno: 12. 4. 2011, 20:18:44
Tori:
To jsem pěkně slepej ale Vám každopádně moc děkuju funguje to tak jak má a já se stím tak trápil. Kdyby tu byl rep máte ho. |
||
| joe Profil |
#9 · Zasláno: 12. 4. 2011, 21:49:47
Pokud jsi na aktivní stránce - tj. právě tam, kde máš <li class="selected">, pak do toho <li> nevypisuj odkaz, ale jen text.
Pokud teď vypneš styly, z menu nepoznáš, jaká stránka je aktivní, často se na to zapomíná. |
||
|
Časová prodleva: 15 let
|
|||
0