ugrás a tartalomhoz

PHP menü [MEGOLDVA]

Dinnye · 2015. Szep. 24. (Cs), 12.34
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>
 
1

include

Hidvégi Gábor · 2015. Szep. 24. (Cs), 14.31
Az 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?
2

include

Dinnye · 2015. Szep. 24. (Cs), 14.51
Az a problémám, hogy amikor rákattintok a menüre, nem jeleníti meg a fájlok tartalmát, üres marad a táblázatom.

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.
16

Hibakeresés

Hidvégi Gábor · 2015. Szep. 25. (P), 09.51
Ajánlom figyelmedbe az Egyszerű hibakeresés című cikket, ott gyakorlatilag minden most felmerülő problémádra megtalálod a megoldást és a választ.
3

Hűha, ezzel a kóddal mit is

erik0415 · 2015. Szep. 24. (Cs), 14.53
Hűha, ezzel a kóddal mit is akarsz pontosan elérni? Mert ha azt, hogy amikor valamelyikre rákattintasz, akkor a weboldal tartalma megváltozik az adott oldalra, de a menü ugyan úgy ott marad, tehát nem kell mindegyikbe megírni, akkor ez a kód borzalmas. :D

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.

<?php
if(isset($_GET["menu"]) && !empty($_GET["menu"])){
if(file_exists("menu".$_GET["menu"].".html")){
include("menu".$_GET["menu"].".html");
}else{
include("menu01.html");
}
}else{
include("menu01.html");
}
?>
Az empty nyilván csak egyszer van, csak bugos a kód megjelenítő.

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.
4

A normális kódtól messze van

bamegakapa · 2015. Szep. 24. (Cs), 15.12
A normális kódtól messze van azért.

É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.
6

Mivel itt megvan adva fixen a

erik0415 · 2015. Szep. 24. (Cs), 16.46
Mivel itt megvan adva fixen a kiterjesztés nem értem mi lenne vele a probléma, mivel itt csak .html fájlokra tud hivatkozni az ember.
8

De ő ezt nem tudja, és nem is

bamegakapa · 2015. Szep. 24. (Cs), 17.50
De ő ezt nem tudja, és nem is fog hallani róla, ha mi nem mondjuk neki.
5

kód

Dinnye · 2015. Szep. 24. (Cs), 15.27
ÓÓ, köszönöm, végre egy normális kód! :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
7

Jó akkor

erik0415 · 2015. Szep. 24. (Cs), 16.55
Jó akkor prezentálom:D

<html>
 <head>
  ---A head tartalma---
 </head>
 <body>
 --Itt a menüd--
 //itt közötte persze lehet minden féle elválasztás pl.: <br />
 --Ide rakd a php kódot--
 </body>
</html>
Ja és nem kell folytatnod az a kód amit adtam az úgy van, tehát nem kell még plusz kiegészítened.
9

Tényleg ne haragudj, nem

bamegakapa · 2015. Szep. 24. (Cs), 17.53
Tényleg ne haragudj, nem direkt veled kötekszem, de legalább egy doctype-ot, mert különben csak szopni fog vele :).

Szóval mindig így kezded a html-t:
<!DOCTYPE html>
10

Jaj, azt csak azért

erik0415 · 2015. Szep. 24. (Cs), 18.26
Jaj, azt csak azért csináltam, hogy lássa, hogy hova rakja a kódot:D Nem kívántam csinálni egy pontos html weboldal szerkezetet :D De akkor azt még az elejére rakja be, bár nekem még semmi bajom nem volt attól, hogy az nem volt a kódba :D
11

Értem én, csak szerencsétlen

bamegakapa · 2015. Szep. 24. (Cs), 19.37
Értem én, csak szerencsétlen egy az egyben le fogja másolni, mert fogalma sincs, mit csinál.

Szerintem te is nézz utána, mire jó a doctype, mert eléggé "vak vezet világtalant" helyzetnek érzem így ezt a dolgot.
12

Tudom mire jó, és használom

erik0415 · 2015. Szep. 24. (Cs), 20.00
Tudom mire jó, és használom is. :D De olyat mondjuk még nem tapasztaltam, hogyha kihagytam, hogy a böngésző félre értelmezett volna valamit:D De ennek ellenére én is használom :)
13

Hát pedig quirks mode-ban

bamegakapa · 2015. Szep. 24. (Cs), 23.18
Hát pedig quirks mode-ban elég sok furcsa dolog történik :).
14

kapcsold be a

szabo.b.gabor · 2015. Szep. 25. (P), 08.15
kapcsold be a hibamegjelenítést, error_reporting, display_errors..

é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?
15

re: kapcsold be

Dinnye · 2015. Szep. 25. (P), 09.44
Köszi, ez egy jó tipp!

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? :)
17

Hogyan tudok ide normálisan

Poetro · 2015. Szep. 25. (P), 10.08
Hogyan tudok ide normálisan kódsort bemásolni? :)

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.
18

hivatkozás

Dinnye · 2015. Szep. 25. (P), 12.17
Sikerült a td problémát kijavítani, csak egy tr-t felejtettem le előtte.

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? :)
19

szerintem kb annyi a

szabo.b.gabor · 2015. Szep. 25. (P), 12.41
szerintem kb annyi a probléma, hogy .html fájlt include-olsz és arra nem fut le a php értelmező, vagy micsoda. nevezd át a menu01.html-t menu01.php-ra és úgy include-old (jól hiszem, hogy ebben a fájlban is van php kód?)
21

html-php

Dinnye · 2015. Szep. 25. (P), 12.47
Kijavítottam a forrásban meg a mappában is php-ra, de sajnos nem ez volt a baja.
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.
20

ahhoz, hogy a link ne új

szabo.b.gabor · 2015. Szep. 25. (P), 12.42
ahhoz, hogy a link ne új lapon nyíljon meg, ezt a részt kell kivenned a hivatkozásokból
 target="_parent"
kb
22

Kivettem, nincs változás.

Dinnye · 2015. Szep. 25. (P), 12.49
Kivettem, nincs változás.
23

tedd fel valahova, ahol mi is

szabo.b.gabor · 2015. Szep. 25. (P), 13.29
tedd fel valahova, ahol mi is elérjük.. (:
24

megosztás

Dinnye · 2015. Szep. 25. (P), 14.14
Így gondoltad? :)

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 :)
25

Jaaaaaaj ez szinte úgy ahogy

erik0415 · 2015. Szep. 25. (P), 14.27
Jaaaaaaj ez szinte úgy ahogy van rossz. Nem jelenik meg a szöveg a dobozba, átírtad a .html fájlokat .php-re ezért az include se megy, a href-nél a link is hibás. Szerintem tanulgasd még kicsit a youtuben ezt a dolgot:D
28

wáááá :D a php-t

Dinnye · 2015. Szep. 25. (P), 14.33
wáááá :D a php-t elfelejtettem átírni, amikor azt a tanácsot kaptam, hogy változtassam meg a menu.html fájlokat menu.php-ra :D mind1, amíg html-ek voltak, addig is ugyanezt csinálta, most kijavítottam, ugyanaz..
29

Igen, mert ha megnézed, akkor

erik0415 · 2015. Szep. 25. (P), 14.36
Igen, mert ha megnézed, akkor látod, hogy a kódba benne van a tartalom, de rossz a szerkezet, és nem látszik. Tehát valamelyik tag, vagy css miatt nem látszik a tartalom, ezt nézd át:D
30

Meg is van a hiba, mert most

erik0415 · 2015. Szep. 25. (P), 14.40
Meg is van a hiba, mert most megnéztem azért:D Az a hiba, hogy az összes szöveget a css-be beszínezed ugyan olyan színűre mint a háttér. Ott van a szöveg, de beleolvad a háttérbe.
26

hát kb..

szabo.b.gabor · 2015. Szep. 25. (P), 14.29
menü
<div class="menu1">
	<a href="index.php" style="text-align: top;"><b>KEZDŐLAP</b></a><br><br>
</div>
<div class="menu2">
	<a href="index.php?menu=02">Menü 2</a><br>			
	<a href="index.php?menu=03">Menü 3</a><br>
	<a href="index.php?menu=04">Menü 4</a><br>
	<a href="index.php?menu=05">Menü 5</a>
</div>
tartalom include rész..
$menuMap = array(
	'01' => 'menu01.php',
	'02' => 'menu02.php',
	'03' => 'menu03.php',
	'04' => 'menu04.php',
	'05' => 'menu05.php',
);
$includeFile = isset($_GET['menu']) && array_key_exists($_GET['menu'],$menuMap) ? $menuMap[$_GET['menu']] : 'menu1.php';
include($includeFile);
31

Most nézem csak, mi lehet az

bamegakapa · 2015. Szep. 25. (P), 23.04
Most nézem csak, mi lehet az a text-align: top?
32

css4!

szabo.b.gabor · 2015. Szep. 26. (Szo), 08.11
css4!
33

úúúúúúúúú dekirály!

bamegakapa · 2015. Szep. 26. (Szo), 21.48
úúúúúúúúú dekirály!
27

hát az látszik, hogy sok

szabo.b.gabor · 2015. Szep. 25. (P), 14.32
hát az látszik, hogy sok mindent nem tudsz még, de legalább tudsz helyesen írni, úgyhogy le a kalappal.
34

miért is nem futott?

Dinnye · 2015. Szep. 28. (H), 11.15
Sziasztok!

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. :)