PHP menü [MEGOLDVA]
Sziasztok!
A weboldalamhoz php menüt szeretnék készíteni, de egyelőre még elég zöldfülű vagyok. :)
Egy régi munkámból ollóztam ki ezt a részt, de sajnos nem működik, és nem értem, hogy mit rontottam el.
Kérlek segítsetek!
A lényeg az lenne, hogy a menü csak egyetlen fájlban, az index.php-ban szerepelne, nem pedig minden page-ben újra meg újra. Az adott menüpontra kattintva az oldalon egy kijelölt táblázatba töltené be az szövegeket/adatokat, különböző fájlokból, include segítségével. Ezt úgy próbáltam megoldani, hogy a php részt abba a táblázatba írtam, ahol szeretném megjeleníteni a dolgokat.
Egyelőre még nem kaptak rendes neveket a fájlok, ez még csak teszt.
Ezekből áll jelenleg:
index.php, menu01-kezdolap.html, menu02.html, menu03.html, menu04.html, menu05.html.
A tbody 2 táblázatra bomlik, az egyik a menü helye, a másik a tartalmi rész. Az lehet baj, hogy a menü rész és a php nem egymás után szerepelnek, hanem az index.php-n belül külön táblázatokban?
Ezzel próbálkoztam (a td formázását itt kihagyom):
Menü:
<td>
<div class="menu1">
<a href="index.php?menu=01" target="_parent" style="text-align: top;"><b>KEZDŐLAP</b></a>
</div>
<br><br>
<div class="menu2">
<a href="index.php?menu=02" target="_parent">Menü 2</a>
<br><br>
<a href="index.php?menu=03" target="_parent">Menü 3</a>
<br><br>
<a href="index.php?menu=04" target="_parent">Menü 4</a>
<br><br>
<a href="index.php?menu=05" target="_parent">Menü 5</a>
</div>
</td>
-----------------------------------
Tartalmi rész:
<td>
<div>
<?PHP
if (!isset($_GET['menu'])) include "menu01-kezdolap.html";
else
{
if ($_GET['menu'] == 01) include "menu01-kezdolap.html";
if ($_GET['menu'] == 02) include "menu02.html";
if ($_GET['menu'] == 03) include "menu03.html";
if ($_GET['menu'] == 04) include "menu04.html";
if ($_GET['menu'] == 05) include "menu05.html";
}
?>
</div>
</td>
■ A weboldalamhoz php menüt szeretnék készíteni, de egyelőre még elég zöldfülű vagyok. :)
Egy régi munkámból ollóztam ki ezt a részt, de sajnos nem működik, és nem értem, hogy mit rontottam el.
Kérlek segítsetek!
A lényeg az lenne, hogy a menü csak egyetlen fájlban, az index.php-ban szerepelne, nem pedig minden page-ben újra meg újra. Az adott menüpontra kattintva az oldalon egy kijelölt táblázatba töltené be az szövegeket/adatokat, különböző fájlokból, include segítségével. Ezt úgy próbáltam megoldani, hogy a php részt abba a táblázatba írtam, ahol szeretném megjeleníteni a dolgokat.
Egyelőre még nem kaptak rendes neveket a fájlok, ez még csak teszt.
Ezekből áll jelenleg:
index.php, menu01-kezdolap.html, menu02.html, menu03.html, menu04.html, menu05.html.
A tbody 2 táblázatra bomlik, az egyik a menü helye, a másik a tartalmi rész. Az lehet baj, hogy a menü rész és a php nem egymás után szerepelnek, hanem az index.php-n belül külön táblázatokban?
Ezzel próbálkoztam (a td formázását itt kihagyom):
Menü:
<td>
<div class="menu1">
<a href="index.php?menu=01" target="_parent" style="text-align: top;"><b>KEZDŐLAP</b></a>
</div>
<br><br>
<div class="menu2">
<a href="index.php?menu=02" target="_parent">Menü 2</a>
<br><br>
<a href="index.php?menu=03" target="_parent">Menü 3</a>
<br><br>
<a href="index.php?menu=04" target="_parent">Menü 4</a>
<br><br>
<a href="index.php?menu=05" target="_parent">Menü 5</a>
</div>
</td>
-----------------------------------
Tartalmi rész:
<td>
<div>
<?PHP
if (!isset($_GET['menu'])) include "menu01-kezdolap.html";
else
{
if ($_GET['menu'] == 01) include "menu01-kezdolap.html";
if ($_GET['menu'] == 02) include "menu02.html";
if ($_GET['menu'] == 03) include "menu03.html";
if ($_GET['menu'] == 04) include "menu04.html";
if ($_GET['menu'] == 05) include "menu05.html";
}
?>
</div>
</td>
include
include
nyelvi eszköz bemásolja az adott fájl tartalmát a megadott helyre, így rálátása lesz az adott kontextus változóira.Mi az, amit nem sikerült megoldanod?
include
A címsorban ugyanakkor ezt látom: weblap/index.php?menu=03.
Tehát olyan, mintha a menü maga működne, csak a tartalom marad el.
A klasszikus html-es kóddal meg tudom jeleníteni
(pl.: <li><a href="valami.html">valami</a></li>), de ezzel az a bajom, hogy egyrészt külön lapot nyit neki, tehát nem az oldalon látom a szöveget, másrészt így minden page-en újra kell szerkeszteni a menüt, a kinézetet stb, ami 50-100 page esetén már elég problémás. Azt pedig nem szeretném, ha a page-ken csak egy "vissza a főoldalra" gomb lenne.
Nézegettem a fent leírt kódot, de nem tudom, hogy mit csináltam rosszul.
Hibakeresés
Hűha, ezzel a kóddal mit is
Ha azt szeretnéd amit mondtam akkor írok neked egy normális kódot.:D
Ez a menüd amit te írtál.:
<td>
<div class="menu1">
<a href="index.php?menu=01" target="_parent" style="text-align: top;"><b>KEZDŐLAP</b></a>
</div>
<br><br>
<div class="menu2">
<a href="index.php?menu=02" target="_parent">Menü 2</a>
<br><br>
<a href="index.php?menu=03" target="_parent">Menü 3</a>
<br><br>
<a href="index.php?menu=04" target="_parent">Menü 4</a>
<br><br>
<a href="index.php?menu=05" target="_parent">Menü 5</a>
</div>
</td>
Ezzel nincs is semmi baj, nézzük a php részét:
Tegyünk fel ez a weboldal tartalma:
.....Weboldal tartalom 1.....
És ezt akarod mondjuk lecserélni a 2-es tartalomra:
.....Weboldal tartalom 2.....
Akkor:
Először is a php-ba az a jó, hogy elég dinamikus minden:D Tehát a főoldalnak is legyen most az a neve, hogy menu01.html.
Ez a kód dinamikus tehát bármennyi menüvel működik.
Ha nem ez a problémád, akkor írd le pontosabban, hogy mi a baj.
A normális kódtól messze van
Érdemes hozzászokni mielőbb, hogy kívülről jövő dolgokat (itt GET) nem pakolunk csak úgy bele bárhová, a te esetedben fájlnévbe. Lehet, hogy dinamikus, cserébe bármit küldözgethetek, amit te bele fogsz szépen rakni a fájlnévbe. Jelen esetben a fix .html kiterjesztés miatt talán nem a világ vége, de nem jó gyakorlat és főleg nagyon rossz ötlet kezdőknek ilyen kódot adni.
Mivel itt megvan adva fixen a
De ő ezt nem tudja, és nem is
kód
Igen azt szerettem volna megoldani, amit írtál is.
Tehát akkor menünként így folytatom, hogy
}else{
include("menu02.html");
}else{
include("menu03.html");
}else{
include("menu04.html");
.....
stb?
Viszont nem jelennek meg továbbra sem a helyükön a szövegek a fájlokból.
Kell még valami a html fájlokba?
Arra is gondoltam, hogy esetleg a php-t írtam rossz helyre, ezért fölé írtam egy
<div>VALAMI</div>-et, és az jó helyen jelent meg...
Bocsi, ha nagyon láma vagyok... :D
Jó akkor
Tényleg ne haragudj, nem
Szóval mindig így kezded a html-t:
Jaj, azt csak azért
Értem én, csak szerencsétlen
Szerintem te is nézz utána, mire jó a doctype, mert eléggé "vak vezet világtalant" helyzetnek érzem így ezt a dolgot.
Tudom mire jó, és használom
Hát pedig quirks mode-ban
kapcsold be a
és meglesz a hiba oka.
ha megnézed a generált oldal forrását (CTRL+U), akkor mit látsz? az include-nál megszakad a dolog, vagy folytatódik utána, csak nincs a helyén semmi?
re: kapcsold be
CTRL+U-val nézve ami piros, az nem fut le, mert hibás vagy komment?
Ezt veszi hibának:
<td style="width: 200px; height: 1000px; text-align: center; vertical-align: top;">
...menü...
</td>
Ugyanakkor mégis megjeleníti.
Ezt írja hibának:
"TD" kezdő címke a táblázat törzsében.
Ez miért gond?
A másik piros rész maga a php, tehát akkor az le se fut, igaz?
Azt írja:
"<?>" Valószínű ok: kísérlet XML feldolgozási utasítás használatára HTML-ben. (XML feldolgozás nem támogatott HTML-ben)
Hogyan tudok ide normálisan kódsort bemásolni? :)
Hogyan tudok ide normálisan
A szerkesztő jobb oldalán van pár gomb erre. A szerkesztő alatt van részletes leírás a használható BBCode elemekről A te esetedben a [colorer] és [code] lehet a hasznos.
hivatkozás
A !Doctype is bekerült.
A php még mindig nem fut le. Már csak ez az egyetlen hibaüzenetem. Köszi a linket a hibaszűrésről!
Én korábban a régi php kódomban próbáltam megfogalmazni a hivatkozást az adott fájlba, de az újban, amit kaptam, ilyen nincs.
Tehát akkor a html részbe való? <a href="index.php.... cseréljem menu01.html, stb. Mert ezzel próbálkozva külön lapon nyílik meg a tartalom, vagy ez csak azért van még így, mert a php nem fut?
Kell esetleg még vmi a !doctype elé, hogy elinduljon a php?
Mivel ez a hibaüzi:
"<?>" Valószínű ok: kísérlet XML feldolgozási utasítás használatára HTML-ben. (XML feldolgozás nem támogatott HTML-ben)
Próbáltam keresni valami kiegészítést, pl
ilyet: <?xml version="1.0" encoding="UTF-8"?>, de ez nem segít.
Hogyan tudnám végre futásra bírni a php-t? :)
szerintem kb annyi a
html-php
Amúgy a menü fájljaiban nincs még kód, csak ilyen zagyvaság szöveg, hogy lássam, megjelenik-e. :)
Kiírja a tartalmát, csak továbbra is új oldalon.
ahhoz, hogy a link ne új
Kivettem, nincs változás.
tedd fel valahova, ahol mi is
megosztás
http://www.filedropper.com/weblabornak
Ez még csak teszt fázis, hogy lássam a php-t működni, a végén nyilván nem így fog kinézni :)
Jaaaaaaj ez szinte úgy ahogy
wáááá :D a php-t
Igen, mert ha megnézed, akkor
Meg is van a hiba, mert most
hát kb..
Most nézem csak, mi lehet az
css4!
úúúúúúúúú dekirály!
hát az látszik, hogy sok
miért is nem futott?
Kipróbáltam az összes php kódot, amit írtatok, de nem ment egyik se, és ekkor kezdett gyanús lenni a dolog...
Mert az addig oké, hogy a kérdésben szereplő php vacak (amit egyébként webprogramozás órán tanítottak így...), de olyan nincs, hogy azokból is mind rossz, amit tőletek kaptam.
Aztán elkezdtem keresgélni, meg youtube-ozni, és ekkor lett meg a szarvas hiba!
Ugyan futott a xampp-ból az apache, de simán
file:///C:/xampp/htdocs/teszt/index.php-ként indítottam és így naná, hogy nem történt semmi...
localhost/teszt/index.php-ként kellett volna rá hivatkozni, ezt sajna elfelejtettem. Elindítottam így és voillá! Máris életre kelt a php! juhé! :D Lehet nevetni :D :P
Köszönöm mindenki segítségét és a türelmet, vége MŰKÖDIK! :D
Egyébként letöltöttem egy szuper webtamplet-et, abba szeretném majd beépíteni a php menüt, meg tovább szerkeszteni, nem a file droppe-re töltött borzalommal akarok tovább dolgozni. :)