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: 13 let
|
0