Autor | Zpráva | ||
---|---|---|---|
matesek Profil |
#1 · Zasláno: 22. 7. 2010, 14:26:00 · Upravil/a: matesek
Mám takový malý problém s menu. Vytvořil jsem si Menu pomocí JS + PHP. Nejsem v tomto oboru odborník, tak se vás zeptám kde je chyba.
<script> $poradi = array('Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for (i=1; i <= 6; i++) { "<p id=\"poradi\"><a href=\"index.php?page=stranka\" . $poradi[" + i + "]"\"> <img src=\"menu/a_" . $poradi[" + i + "]".jpg\" onMouseOver=\"this.src = \'menu/p_" . $poradi[" + i + "]".jpg\'\" onMouseOut=\"this.src = \'menu/a_" . $poradi[" + i + "]".jpg\'\"/> </a></p>"); }; </script> Mělo by to zobrazovat pod sebou obrázky s názvy a_Menu1.jpg a při najetí na něj by se měl proměnit v obrázek p_Menu1.jpg a tak dále i s ostatními. Asi jsem udělal chybu někde v kombinování JS a PHP. Místo Menu se mi zobrazí prázdná plocha. Prosím o radu. |
||
matesek Profil |
#2 · Zasláno: 22. 7. 2010, 14:52:45 · Upravil/a: matesek
Nebo, měl by někdo nějaký návrh, jak ty obrázky zobrazovat jednodušeji ?
|
||
matesek Profil |
#3 · Zasláno: 22. 7. 2010, 16:10:47 · Upravil/a: matesek
Trochu jsem se to pokusil opravit :
<script> $poradi = array('Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for (i=1; i <= 6; i++) { document.write("<p id=\"poradi\"><a href=\"index.php?page=stranka"$poradi[ + i + ]"\"><img src=\"menu/a_"$poradi[ + i + ]".jpg\" onMouseOver=\"this.src = \'menu/p_"$poradi[ + i + ]".jpg\'\" onMouseOut=\"this.src = \'menu/a_"$poradi[ + i + ]".jpg\'\"/></a></p>"); }; </script> |
||
Medvídek Profil |
#4 · Zasláno: 22. 7. 2010, 16:39:37 · Upravil/a: Medvídek
Pokud chceš mít JS + PHP, tak musíš ten JS zapsat v PHP.
Čili: <?php echo "<script>"; $poradi = array('Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for (i=1; i <= 6; i++) { echo "<p> ........</p>"; }; echo "</script>"; ?> Ale trošku nechápu, proč tam máš ten document.write, když to lze zapat celé v php. |
||
Chamurappi Profil |
#5 · Zasláno: 22. 7. 2010, 16:44:08
Reaguji na mateska:
„Vytvořil jsem si Menu pomocí JS + PHP.“ Kde jako je to PHP? Nikde nevidím <? .
PHP se zpracovává na straně serveru, JS na straně klienta. To, co píšeš, připomíná podle obalu JavaScript, podle názvů proměnných PHP a podle způsobu slučování řetězců… ani nevím. Nerozumím, co je cílem tvého snažení, a ty patrně nerozumíš základům syntaxe JS. Připadá mi zbytečné cokoliv vysvětlovat, není, na čem stavět. Reaguji na Medvídka: K čemu budou <p> vygenerované uvnitř <script> u?
|
||
matesek Profil |
#6 · Zasláno: 22. 7. 2010, 17:17:22 · Upravil/a: matesek
Medvídek:
Taky mě to tak napadlo, ale psal jsem PHP v JS Díky moc za radu, ještě odzkouším Chamurappi: „Kde jako je to PHP? Nikde nevidím <?.“ Tohle je pouze část stránky, kde jsou i další PHP a zapomněl jsem to sem dopsat. „patrně nerozumíš základům syntaxe JS.“ O tomhle už bylo jedno celé vlákno a stejně mi to nikdo nedokázal pořádně vysvětlit jaký je rozdíl mezi lokální a globální proměnnou. „K čemu budou <p> vygenerované uvnitř <script>u?“ Protože jsem jsem je tam měl já a používám je jako ohraničení CSS. |
||
matesek Profil |
#7 · Zasláno: 22. 7. 2010, 17:37:52 · Upravil/a: matesek
A ještě bych se chtěl zeptat, jak mám dát do uvozovek, když už to je v uvozovkách typu " a '
Chyba : Parse error: syntax error, unexpected '=', expecting ';' in /home/free/tym.cz/w/white-tygers/root/www/menu/menu.js on line 4 v kódu : <?php echo "<script>"; $poradi = array('Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for (i=1; i <= 6; i++) { echo '<p id="poradi"><a href="index.php?page=stranka'$poradi[ + i + ]'><img src="menu/a_'$poradi[ + i + ]'.jpg" onMouseOver="this.src = menu/p_'$poradi[ + i + ]'.jpg" onMouseOut=\"this.src = menu/a_'$poradi[ + i + ]'.jpg"/></a></p>'; }; echo "</script>"; ?> Chyba je asi zde : "this.src = menu/p_'$poradi[ + i + ]'.jpg" Jak mám dát menu/p_'$poradi[ + i + ]'.jpg do uvozovek, když jsem už obě dvě použil ? |
||
Chamurappi Profil |
#8 · Zasláno: 22. 7. 2010, 18:39:35
Reaguji na mateska:
> „K čemu budou <p> vygenerované uvnitř <script>u?“ > Protože jsem jsem je tam měl já a používám je jako ohraničení CSS. Aha. Hm. Upřímně řečeno, teď už mě vůbec nenapadá, jak si představuješ, že fungují webové technologie. „Chyba je asi zde“ Pochybuju. Zkoušels ten kousek odmazat, aby sis to ověřil? „Jak mám dát menu/p_'$poradi[ + i + ]'.jpg do uvozovek, když jsem už obě dvě použil ?“ Na co tam chceš použít další uvozovky? Ten text $poradi se snad má dostat do výstupu? Nebo ho má vyhodnotit PHP?
Tohle vzdávám. |
||
matesek Profil |
#9 · Zasláno: 22. 7. 2010, 18:49:42
Chamurappi:
Díky, teď jsi mě totálně zamotal a nevím co je co :-) Chamurappi: „Pochybuju. Zkoušels ten kousek odmazat, aby sis to ověřil?“ Dobrá, odebral jsem a pořád to hlásí tu samou chybu. Tak co jiného by mohlo zapříčinit tuto chybu ? |
||
Davex Profil |
#10 · Zasláno: 22. 7. 2010, 19:34:29
matesek:
Toto kombinování PHP a JS je cestou do pekel. Vytvoř to menu pouze pomocí PHP a do všech stránek ho includuj. Odkazům přidej třídu a pomocí CSS jen posunuj obrázek na pozadí. |
||
matesek Profil |
#11 · Zasláno: 23. 7. 2010, 13:19:29
Davex:
Návrh hezký, ale já už mám předem vytvořené obrázky a rád bych si zachoval tuto techniku. |
||
matesek Profil |
#12 · Zasláno: 23. 7. 2010, 13:44:26
Opět předěláno, tentokráte přepsáno vše znovu bez kopírování. Chyba se opět hlásí.
chyba Parse error: syntax error, unexpected '=', expecting ';' in /home/free/tym.cz/w/white-tygers/root/www/menu/menu.js on line 3 menu.js <?php $poradi = array('Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for (i=1; i <= 6; i++) { echo' <script> document.write{ <p id="poradi"> }; document.write{ <a href="index.php?page=stranka/'$poradi(+ i +)'"> }; document.write{ <img src="menu/a_'$poradi(+ i +)'.jpg" onMouseOver=(this.src="menu/p_'$poradi(+ i +)'.jpg") onMouseOut=(this.src="menu/a_'$poradi(+ i +)'.jpg")> }; document.write{ </a></p> }; </script> '; }; ?> |
||
matesek Profil |
#13 · Zasláno: 23. 7. 2010, 13:45:41 · Upravil/a: matesek
kde je problém teď ?
|
||
_es Profil |
#14 · Zasláno: 23. 7. 2010, 13:54:47
matesek:
„kde je problém teď ?“ V tom, že máš v tom poriadny chaos, teraz aj predtým. Najprv sa to trochu viac nauč a využi rady ostatných, napríklad [#10] Davex. |
||
matesek Profil |
#15 · Zasláno: 23. 7. 2010, 14:01:07 · Upravil/a: matesek
_es:
„V tom, že máš v tom poriadny chaos“ Tak dobře, psal jsem, že to neumím perfektně, ale proč mi to háže chybu na řádku 3, když tam je funkce for, která je stejná jako na stránkách jakpsatweb.cz ? Nově : <?php $poradi = array('Menu0', 'Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for ($i=1; $i <= 6; $i++) { echo' <p id=\"poradi\"> <a href=\"index.php?page=stranka/'$poradi($i)'\"> <img src=\"menu/a_'$poradi($i)'.jpg\" onMouseOver=(this.src=\"menu/p_'$poradi($i)'.jpg\") onMouseOut=(this.src=\"menu/a_'$poradi($i)'.jpg\")> </a></p> '; }; ?> Chyba: Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /home/free/tym.cz/w/white-tygers/root/www/menu/menu.js on line 6 |
||
_es Profil |
#16 · Zasláno: 23. 7. 2010, 14:22:48
matesek:
„proč mi to háže chybu“ Ak dostatočne pochopíš príbuznú tému o úvodzovkách, tak na to prídeš. Prečo vlastne generuješ JS kód v PHP? |
||
matesek Profil |
#17 · Zasláno: 23. 7. 2010, 14:31:52 · Upravil/a: matesek
_es:
„Prečo vlastne generuješ JS kód v PHP?“ Protože funkce for a Array() jsem ze začátku používal uvnitř scriptu, ale teď už to vlastně ani není potřeba. Takže bych ten Script mohl dát pryč. Zase problém se Syntaxí. Už mě to štve. Pořád nevím, jak se těmhle věcem vyhýbat. |
||
matesek Profil |
#18 · Zasláno: 24. 7. 2010, 09:11:47
Prosím, napište mi to někdo. Nechci říkat, že se to nechci naučit, ale už jsem se s tím trápil dost a už mě to nebaví pořád bezvýznamně zkoušet. Vím kde je chyba, ale nevím jak ji odstranit.
|
||
_es Profil |
#19 · Zasláno: 24. 7. 2010, 12:53:07
matesek:
Malá rada: Ako asi ten príkaz echo zistí, kde ten textový reťazec končí?
„Nechci říkat, že se to nechci naučit, ale už jsem se s tím trápil dost a už mě to nebaví pořád bezvýznamně zkoušet.“ Obvyklý postup je: Nerozumiem dostatočne textovým reťazcom v HTML: Pozriem si o nich niečo v nejakom manuáli alebo knihe a pod. Nerozumiem dostatočne textovým reťazcom v PHP: Pozriem si o nich niečo v nejakom manuáli alebo knihe a pod. Možno stačí v tvojom kóde kliknúť na príkaz echo .
Nerozumiem dostatočne textovým reťazcom v JavaScripte: Pozriem si o nich niečo v nejakom manuáli alebo knihe a pod. |
||
matesek Profil |
#20 · Zasláno: 24. 7. 2010, 13:40:59 · Upravil/a: matesek
<?php $poradi = array('Menu0', 'Menu1', 'Menu2', 'Menu3', 'Menu4', 'Menu5', 'Menu6'); for ($i=1; $i <= 6; $i++) { echo' <p id=poradi> <a href=index.php?page=stranka/'$poradi($i)'> <img src=menu/a_'$poradi($i)'.jpg> </a></p> '; }; ?> |
||
Witiko Profil |
#21 · Zasláno: 26. 7. 2010, 22:16:43 · Upravil/a: Witiko
Davex:
„kombinování PHP a JS je cestou do pekel“ Neodrazuj vývojáře, já za pomoci js a php (ani nebyl potřeba ajax) napsal jednoduchou online hru. :D matesek: To vypadá, že by to mohlo fungovat, jen připoj ten $poradi($i) k tomu řetězci pomocí . echo " <p id='poradi'> <a href='index.php?page=stranka/" . $poradi($i) . "'> <img src='menu/a_" . $poradi($i) . ".jpg'> </a></p> "; Jinak jistý si nejsem, ale s poli v php už jsem pracoval a mám silné podezření, že se k nim stejně jako u spousta jiných jazyků přistupuje pomocí hranatých závorek, tedy $poradi[$i]? Moderátor: Tohle už patří viditelně do php sekce. |
||
panther Profil |
#22 · Zasláno: 26. 7. 2010, 22:18:44
Witiko:
špatně jsi ocitoval, chybí ti tam první slovo celé věty, které je dost podstatné. „Toto ([#7]) kombinování PHP a JS je cestou do pekel“. |
||
Witiko Profil |
#23 · Zasláno: 26. 7. 2010, 22:27:00 · Upravil/a: Witiko
panther:
Já to také myslel jako vtip. :) matesek: Co se týče uvozovek, lze je escapovat obrácenou pomlčkou: <?php echo "\" text \""; ?> vyplivne "text" Jinak globální a lokální proměnné jsem ti vysvětloval já, a pokud to nebylo dostatečně prosté, tak už se vzdávám. (Globální proměnná je přístupná z celého scriptu, lokální proměnná jen ve funkci ve které se vytvoří a ve všech vnořených konstrukcích, není přístupná z okolí funkce, neovlivňuje okolí funkce, po ukončení funkce a přerušení veškerých referencí na funkce a konstrukce z dané funkce definovaných zaniká.) function funkce() { var lokálníProměnná = "obsah"; // tady je lokálníProměnná přístupná var jináFunkce = function() { // tady je lokálníProměnná také přístupná } } // tady není lokálníProměnná přístupná, jako by neexistovala Namísto toho funkce globální: var globálníProměnná = "obsah"; function funkce() { // tady je globálníProměnná přístupná var jináFunkce = function() { // tady je globálníProměnná stejně tak přístupná } } // tady je globálníProměnná také přístupná Jde-li o funkci globální nebo lokální určuje pouze pozice, kde proměnnou definuješ. A to další bude asi těžší na pochopení: A pak je tu ještě záležitost hierarchie, kdy argument se stejným názvem jako globální proměnná přebírá pointer a lokální proměnná přebírá pointer argumentu. Pointer (česky ukazatel / odkaz) je v tomto případě proměnná na něco odkazující - pokud dojde k definici lokální proměnné se stejným názvem jaký má již proměnná globální, dojde k dočasnému "přepsání", "proměnná" uvnitř funkce odkazuje na lokální proměnnou, ne na proměnnou globální, stejně tak s argumenty. var proměnná = 1; // Globální proměnná "proměnná" obsahuje hodnotu 1 function funkce(proměnná) { // Argument "proměnná" dostane voláním dole hodnotu 2, argumenty funkcí se chovají jako lokální proměnné var proměnná = 3; // Lokální proměnná má stejný název jako proměnná globální i argument, proto je po dobu trvání funkce "přepíše" - tzn. přesměruje pointer "proměnná" na sebe. alert(proměnná); } funkce(2); // Vyhodí hlášku "3" na základě lokální proměnné "proměnná" definované ve funkci funkce. alert(proměnná); // Globální proměnná "proměnná" se ale nezměnila a stále obsahuje "1". |
||
Časová prodleva: 13 dní
|
|||
matesek Profil |
#24 · Zasláno: 8. 8. 2010, 13:04:54
Witiko:
Jsem rád, že jsi opět objasnil typy proměnných, ale snad s tím co jsem pochopil budu stačit vytvářet ty moje malé skripty. A k tomuto :[#21] Tak tam je chyba opět v uvozovkách, takže to fungovat nebude a ani po vyzkoušení nefunguje. |
||
_es Profil |
#25 · Zasláno: 9. 8. 2010, 06:36:30
matesek:
„A k tomuto :[#21] Tak tam je chyba opět v uvozovkách“ Áno, Witiko nie je dokonalý, neodhalil všetky chyby v tvojom kóde, no aspoň to vyzerá, že tomu už aj trochu rozumieš. |
||
matesek Profil |
#26 · Zasláno: 9. 8. 2010, 12:51:54
_es:
„trochu rozumieš.“ Teď už vím, jaká jsou pravidla pro psaní uvozovek, ale nevím, jak se to v tomto případě řeší. |
||
Časová prodleva: 15 let
|
0