Autor Zpráva
mckapco
Profil *
vytváram menu, ktoré si bude kazdy registrovaný a prihláseny navstevnik moje stránky menit. Kazdy si proste bude musiet vytvárat svoje menu. Preto som sa tu prisiel poradit, akým systemom by to bolo najvhodnejsie. Co som skusal cez PHP, tak sa pri preklikovaný tohoto rolovacieho menu pri kliku na hlavny titul rozbalili sice podtituly, ale stránka sa musela zova nacitat. Pomocou JavaScriptu to mam aj tak, ze sa nemusi, ale s Javou byvaju problemi, ze?
Mozete mi poradit, pripadne sa podelit s Vasimi skusenostami pri tvorbe uzivatelmi vytváraneho menu. Pripadne mi tu napisat link, kde by som nasiel zdrojové kody pre tvorbu menu.
Dik!
juneau
Profil
s timhle zadne zkusenosti nemam, ale poradim jednu vec: nejdrive si zjistit, zda o to ty navstevnici stoji a zda maji duvod vubec neco takoveho delat (= namahat se). aby se clovek s necim nedrel zbytecne...
mackopu
Profil
Jde i o to, zda předpokládáš u návštěvníků nějakou znalost HTML jazyka. Pak by stačilo jim při výběru položky "Vytvořit vlastní menu" otevřít formulář, do kterého si prostě jen vypíší zdrojový kód svého menu, třeba i s možností formátování. Obsah by se uložil buď do databáze, nebo do souboru s nastavenými právy pro zápis. A toto menu se jim pak v závislosti na jejich loginu bude jako jedinečné generovat třeba v levém sloupečku a v tabulce, kterou předtím vytvoříš jako prázdnou. Pokud by HTML neovládali, měl by formulář podobu řekněme deseti textových polí, do kterých by zadali jen adresy, a skript by je pak do sloupečku vypsal pomocí cyklu a samozřejmě ještě po zpracování regulárním výrazem, aby odkazy byli aktivní.
Je-li to jako nápověda málo, mohu ti tu vypsat ukázkový zdroják, ale možná ti to stačí, tak si zatím nebudu placatět prsty :-)
mckapco
Profil *
je to v internetovom obchode, takze ano
juneau
Profil
ale kdepak, ja chapu logiku veci (o co jde), ale vazne mi nejak nedochazi, k demu je to dobre :)
mckapco
Profil *
2mackopu: Takto potrebujem menu, ktore sa otvara. Cize najprv vidim hlavne polozky a po kliku na nejaku hlavnu polozku sa pod touto rozbalia dalsie podpolozky

napr

ZVIERATA
LUDIA
ZNACKY
WEBY

a po kliknuti napr na ludia sa objavi

ZVIERATA
LUDIA
- negroidna rasa
- europoidna rasa
- mongoloidna rasa
ZNACKY
WEBY

Nieco na tento zmysel, aby sa to takto rozbalovalo. Nepredpokladam znalost navstevnikov HTML, takze iba nejaky formular. Ten by sa uz vytvoril ale nejaky system, pripasne scriptik na toto menu by mi pomohol.
Dakujem!
mckapco
Profil *
pouzili by ste Javu? ocakava sa velka navstevnost, stránka je validna, optimalizovana, takze by som to týmto menu nechcel zbabrat. Dakujem!
mackopu
Profil
Takhle je to principiálně:

$sql = mysql_query("select odkazy from tabulka where id_uzivatele = '$id'");
$odkazy = "";
while ($vystup = mysql_fetch_array($sql)):
$odkazy .= "<a href=\"".$vystup["nazev_ric"]."\" target=\"_blank\">".$vystup["nazev_ric"]."</a><br>";
endwhile;
echo $odkazy;

Ale o to už tu vlastně moc nejde...
Podobnou věc, o které mluvíš, jsem dělal na stránce
http://mackopu.webzdarma.cz/diskuze.php
(jen jde o diskuzi a ne o menu, princip je ale tentýž) a mohu tě ubezpečit, že ten zdroják je MONSTRUM. Vlastně jsem si jen hrál a úplně mě to vcuclo. Stejně jsem ale musel udělat variantu, na kterou to návštěvníka kopne, když jeho browser nepodporuje javascript.
Kombinace HTML, PHP, MYSQL a JAVY na jedné stránce je asi to nejhorší, co může webmastera potkat, i když se to samozřejmě rozchodit dá. Vážně potřebuješ, aby to bylo rozbalovací? Vždyť pokud si to menu budou vytvářet sami, tak jim musí být jasné, že v něm budou jen ty položky, které si vybrali jako "horké" - a těch nebude tolik, aby to stálo za tu námahu. Pro takhle načinčanou navigaci slouží hlavní menu, které tam je (jak předpokládám) napevno.
mackopu
Profil
Pardon, má tam být $vystup["odkazy"]
mckapco
Profil *
To je tiez dobry napad, ze by som vytvaral iba menu, ktore by sa im zobrazovalo cele rozbale stale, kde by boli iba nejakym stylom CSS oddelene hlavne kat. od podkategorii pripadne podpodkategorii.
No neviem, ze ak toto bude vela - polziek v menu, ze by to bolo dost potom neprehladne...
toto by asi bolo pre mna najjednoduchsie a zaroven by mali vsetko vypisane - celel menu. No uvidime, este ak niekto bude mat napad, rad podiskutujem.
Tu javuscript dame asi von z moznosti...že?
mckapco
Profil *
na ten adrese nie je ziadna diskusia o menu
mackopu
Profil
To není diskuze o menu, jen jsou na té stránce použity prvky, o kterých se tu bavíme.
Ukázka zdrojáku:

// TÉMATA
$result = MySQL_Query("SELECT * FROM $nazev_tbl_kategorie WHERE aktivni='ano' ORDER BY id DESC $limit");
while ($zaznam = mysql_fetch_array($result) ):
// skript pro přepínání obrázku plusu na mínus a zpět START
echo "<script language=\"JavaScript\">\n";
echo "<!-- \n";
echo "plus".$zaznam[id]."=false; \n";
echo "function vypinac".$zaznam[id]."()\n";
echo "{\n";
echo " if (!plus".$zaznam[id].")\n";
echo " {\n";
echo " document.images.obr".$zaznam[id].".src=\"images/minus.gif\";\n";
echo " plus".$zaznam[id]."=true;\n";
echo " }\n";
echo " else\n";
echo " {\n";
echo " document.images.obr".$zaznam[id].".src=\"images/plus.gif\";\n";
echo " plus".$zaznam[id]."=false;\n";
echo " }\n";
echo "}\n";
echo "// -->\n";
echo "</script>\n";
// skript pro přepínání obrázku plusu na mínus a zpět STOP
echo "<p style=\"background-image: url('images/prouzek_table.gif')\">\n";
echo "<img src='images/prouzek_table.gif' align=\"absmiddle\">\n";
echo "<SPAN onclick=ShowDescr(Desc".$zaznam[id].");>\n";
echo "<SPAN onClick=\"vypinac".$zaznam[id]."();\">";
echo "<img name=\"obr".$zaznam[id]."\" border=\"0\" src=\"images/plus.gif\" width=\"9\" height=\"9\">\n";
echo " <b>".$zaznam[nazev]."</b></span></SPAN> - \n";
echo $zaznam[autor]." - \n";
echo $zaznam[datum];
echo "<DIV style=\"text-align: Justify; margin-left: 20\" class=Desc_off id=Desc".$zaznam[id].">\n";
echo $zaznam[text]."<p>";
echo "<img src=\"images/sipka_4.gif\" align=\"absmiddle\"> ";
echo "<a href=\"diskuze_form.php?kategorie_id=".$zaznam[id]."&tema=".$zaznam[na zev]."\">";
echo "Odpovědět na toto téma</a><p>";
// ODPOVĚDI
$result_1 = @MySQL_Query("SELECT * FROM $nazev_tbl_data WHERE diskuze_temata = '$zaznam[id]' ORDER BY id");
while ($zaznam_1 = mysql_fetch_array($result_1) ):
// skript pro přepínání obrázku plusu na mínus a zpět START
echo "<script language=\"JavaScript\">\n";
echo "<!-- \n";
echo "xplus".$zaznam_1[id]."=false; \n";
echo "function prepinac".$zaznam_1[id]."()\n";
echo "{\n";
echo " if (!xplus".$zaznam_1[id].")\n";
echo " {\n";
echo " document.images.obrazek".$zaznam_1[id].".src=\"images/minus.gif\";\n";
echo " xplus".$zaznam_1[id]."=true;\n";
echo " }\n";
echo " else\n";
echo " {\n";
echo " document.images.obrazek".$zaznam_1[id].".src=\"images/plus.gif\";\n";
echo " xplus".$zaznam_1[id]."=false;\n";
echo " }\n";
echo "}\n";
echo "// -->\n";
echo "</script>\n";
// skript pro přepínání obrázku plusu na mínus a zpět STOP
echo "<p><SPAN style=\"margin-left: 20\" onclick=ShowxDescr(xDesc".$zaznam_1[id].");>\n";
echo "<SPAN onClick=\"prepinac".$zaznam_1[id]."();\">";
echo "<img name=\"obrazek".$zaznam_1[id]."\" border=\"0\" src=\"images/plus.gif\" width=\"9\" height=\"9\">\n";
echo " <b>".$zaznam_1[nazev_odpovedi]."</b></SPAN></SPAN> - \n";
echo $zaznam_1[autor]." - \n";
echo $zaznam_1[datum];
echo "<DIV class=xDesc_off id=xDesc".$zaznam_1[id]." style=\"text-align: Justify; margin-left: 40\">\n";
echo $zaznam_1[odpoved];
echo "</div>\n";
endwhile;
echo "</div>\n";
endwhile;

No aještě ten javascrip:

<!-- FUNKCE PRO ROZBALOVÁNÍ FÓRA START -->
<STYLE>
.Desc_off {DISPLAY: none}
.xDesc_off {DISPLAY: none}
SPAN { CURSOR: hand}
</STYLE>
<SCRIPT language=JavaScript>
<!--
function ShowDescr (Desc){
if (Desc.className == "Desc_off")
Desc.className = "Desc_on";
else Desc.className = "Desc_off"
}
// -->
</SCRIPT>
<SCRIPT language=JavaScript>
<!--
function ShowxDescr (xDesc){
if (xDesc.className == "xDesc_off")
xDesc.className = "xDesc_on";
else xDesc.className = "xDesc_off"
}
// -->
</SCRIPT>
<!-- FUNKCE PRO ROZBALOVÁNÍ FÓRA KONEC -->

A samozřejmě ošetření pro browsery bez podpory Javascriptu:

<!-- Přesměrování na verzi pro Netascape -->
<script>
<!--
nazov = navigator.appName;
explorer = (nazov != "Microsoft Internet Explorer");
if (explorer)
{
document.write("<p><center><img src='images/pozor.gif'> ");
document.write("Váš prohlížeč možná nepodporuje některé prvky, které obsahuje tato stránka.<br>");
document.write("Přejděte na <a href='diskuze_NN.php?akce=seznam'>jinou verzi</a> diskuze ");
document.write("<img src='images/netscape.gif'></center><p>");
}
// -->
</script>
krteczek
Profil
ahoj javaskript neumím, ale v php to jde treba takhle:


<div class="menu">
<a href="index.php?id=1">boty</a>
<? if ($_GET["id"]==1)
{ ?>
<div class="odsazenepolozky">
<a href="index.php?id=101">--dětské</a>
<a href="index.php?id=102">--pánské</a>
<a href="index.php?id=103">--dámské</a>
</div>
<?
} ?>
<a href="index.php?id=2">potraviny</a>
<? if ($_GET["id"]==2)
{ ?>
<div class="odsazenepolozky">
<a href="index.php?id=201">--máslo</a>
<a href="index.php?id=202">--chleba</a>
<a href="index.php?id=203">--cukr</a>
</div>
<?
} ?>
</div>

snad tam nemám chybu..
funguje to tak že nejprve jsou vidět jen názvy kategorii, po kliknutí uživatele na některou kategorii vyjede pod ní po reloadu detailní menu s jednotlivými položkami.
potom to muzes treba v css odsadit proti menu
krteczek
mckapco
Profil
krteczek: Dakujem, no toto je pomocou znovu nacitávania stránky... toto nie je moc vhodne pre mna
centi
Profil
No schovavanie a rozbalovanie poloziek menu na strane klienta (bez znovanacitania stranky) mozes skusit aj tymto: http://www.centi.local.sk/ukazky/javascript/navigacia/rozbalovacie_odr azkove_menu/

Na strane servera uz z databazy len vytvoris pozadovanu strukturu tych odrazkovych zoznamov (poloziek menu).
Fred
Profil
centi Píšeš tam Netscape - zohnat, tak jsem se mrknul a
Netscape 7, Netscape 7.2 , K-meleon 0.7 , K-meleon 0.9 O.K.
centi
Profil
Fred
Dik :)
Je pravda, ze ten skript som robil dost davno a nejak ta moja TODO poznamka zapadla do zabudnutia... Ale dopisem to tam.
mckapco
Profil
Pouzil som to co je na
http://www.fczbkk.com/js/tree/
este tak vytvorit to tak aby si menu mohli vytvarat sami..

Myslite ze ten script co je na http://www.fczbkk.com/js/tree/ mozem pouzit na velmi nasvtevovanej stránke?
centi
Profil
mckapco
Rikiho skript ma pri tvorbe toho mojho velmi inspiroval :), ale bol na moje potreby dost zlozity, preto som sa pustil do toho sam.
mckapco
Profil
jasne, ten Tvoj je tiez dobry, reps. vyborny, ale ten druhy je uz aj z grafikou, takze to fajn:-) inak este by sa to dalo nejako vylepsit ze ak kliknem aj na text, ktorý ma nejaky podradeny zaznam (<li>) sa zobrazili tieto podradene zaznami o 1 nizsej urovne.
Viac by ma zaujimalo ako vytvorit to samovytváranie menu.. vedeli by ste mi poradit? uz idem spat, ak na to rano pridem, tam Vám napísem. dakujem za kazdz radu
Anonymní
Profil *
ano
Toto téma je uzamčeno. Odpověď nelze zaslat.

0