ugrás a tartalomhoz

PHP keretrendszer

S3RI0US · 2009. Szep. 16. (Sze), 12.04
Helló!
Segitséget kérnék! Láttam egy régi tutorialban hogy hogy lehet megoldani nagy méretű oldalaknál a keretet. Ez úgy nézett ki hogy volt egy html file és az tartalmazta a keretet. Ez volt az index.html. Arra a részre ahova később a szöveget akartam tenni, egy pár sor kódot kellett irni, és egy tagek nélküli php fáljba be irtam a szöveget. Ez később úgy jelent meg a böngészőben mint pl.:www.akarmi.hu/index.php?&page=index vagy valami ilyesmi. Valaki tud segiteni abban hogy ezt hogy is kell?

Tamás
 
1

???

tisch.david · 2009. Szep. 16. (Sze), 12.38
Szia!

Kérdésedből ítélve nem mozogsz túl otthonosan a webfelesztés területén. Szerintem mindenképpen ásd bele egy kicsit Magad a PHP-ba és mondjuk a Smarty-ba, ezekkel később meg fogod tudni oldani a problémát. Ha valahol elakadsz, kérdezz nyugodtan!

Üdv:
Dávid
2

hátöö izé...

Crystal · 2009. Szep. 16. (Sze), 19.20
Először is légyszíves tanulj meg normálisan fogalmazni, ez így elég zavaros, de azért fogjuk rá hogy sejtem mit szeretnél.

ezt nagyon sokféleképpen meg lehet oldani, de a kérdés alapján én is úgy gondolom, hogy a leg.... szóval a legegyszerűbb megoldást nézzük:

Van egy index.php fájlod, ebbe beírod a keretet, majd ott, ahol az aktuális tartalmat meg akarod jeleníteni, a GET paraméter alapján include-olod a tartalmat:

<html>
<body>
<!-- menü meg ilyesmi -->

<?php

$pages = array(
"about" => "about.html",
"intro" => "intro.html",
"asdsad" => "asdasd.html",
);

if (array_key_exists($_GET['page'], $pages) $page = $pages[$_GET['page']];
else $page = "not_found.html"

include $page;
?>

<!-- footer meg ilyesmi -->
</body>
</html>

Ennek a módszernek sok hátulütője van, nem tudom, mit értesz "nagy méretű oldalak" alatt, de komoly fejlesztéshez inkább tanulj meg rendesen (OO) php-ben programozni, nézz meg pár keretrendszert, stb.
3

OK

S3RI0US · 2009. Szep. 28. (H), 15.33
A GET volt nekem csak zavaros, a többivel rendben vagyok...
Megfogadom a tanácsokat. Köszönöm.
4

hiba

S3RI0US · 2009. Nov. 12. (Cs), 13.34
Ezt a hibát kapom:
"Parse error: syntax error, unexpected T_VARIABLE in /home/www/music-r.eu.pn/index.php on line 140"

Ez mit jelent??
5

Váratlan változó

vbence · 2009. Nov. 12. (Cs), 13.54
Váratlan változó az index.php 140-es sorában.
6

köszíi

S3RI0US · 2009. Nov. 12. (Cs), 15.59
köszi gondoltam...

a kód a php résztől:

<?php
$pages = array(
"index" => 'index.php',
"hallgatas" => 'lista.php',);

if (array_key_exists($_GET['page'], $pages) $pages = $pages[$_GET['page']];
else $page = "not_found.php"
?>


mi lehet az a váratlan változó??

S3R!0US
7

if ()

gex · 2009. Nov. 12. (Cs), 16.57

<?php
if (array_key_exists($_GET['page'], $pages) $pages = $pages[$_GET['page']];
// helyett
if (array_key_exists($_GET['page'], $pages)) $pages = $pages[$_GET['page']];
?>
8

Köszz

S3RI0US · 2009. Nov. 12. (Cs), 17.59
azt akarod mondani h egy zárójel volt a hiba??
de most jó...
9

igen

gex · 2009. Nov. 12. (Cs), 18.40
mivel nem volt záró-zárójel, jött egy változó ami váratlanul érte a php feldolgozót.
10

linkelés

S3RI0US · 2009. Nov. 12. (Cs), 21.03
ok most már minden tiszta csak még egy kérdés
Ezt hogy tudom linkelni?

Pl.:az indexre akarom a hallgatas oldalt hívni

Köszz előre is
11

mit hogy?

gex · 2009. Nov. 12. (Cs), 21.18
mivel szeretnél mit csinálni?

(sokat segítene ha használnád a válasz linket hogy tudjuk melyik hozzászólásra válaszolsz)
12

Link

S3RI0US · 2009. Nov. 13. (P), 09.28
Most éppen egy új kérdést akarok feltenni...
Az index oldalamról meg szeretném nyitni a "hallgatas" oldalt. Ezt hogy tudom belinkelni??

Köszi
13

index.php?page=hallgatas

gex · 2009. Nov. 13. (P), 12.07
az fentebb elhangzottak után ez nem logikus?

<a href="index.php?page=hallgatas">hallgatas</a>
14

nem jó

S3RI0US · 2009. Nov. 13. (P), 19.28
Igen, ezt próbáltam, de valamiért nem működik. nézd meg:

klikk ide
16

mit kéne látni?

gex · 2009. Nov. 13. (P), 20.16
mivel a php a szerver oldalon fut, én nem fogok látni belőle semmit. a kliens oldalra generált html-ből pedig nem fogok rájönni hogy szerver oldalon te mit szeretnél, mit csinálsz és mit rontasz el.

egyébként a page paraméter nélkül sincs semmilyen tartalom.
15

hehe

gphilip · 2009. Nov. 13. (P), 20.13
Hali! :)

A kódod most csak annyit tesz, hogy kiválasztja, melyik fájlt szeretné betölteni. A betöltésre egyszerű PHP-nál az include vagy require függvényt használjuk. Mindkettő ugyanarra való: betölt és a kimenetbe szúr egy bizonyos fájlt, amennyiben az pl. HTML (lehet PHP is, ekkor előbb feldolgozza).

Tehát a már meglévő kódodban fel kell használnod ezek valamelyikét. A különbség a kettő között annyi, hogy az include csak figyelmetzetést dob, ha nem találja meg a fájlt, a require megszakítja a programod futását.

<?php
$pages = array(
"index" => 'index.php',
"hallgatas" => 'lista.php',);

if (array_key_exists($_GET['page'], $pages) $pages = $pages[$_GET['page']];
else $page = "not_found.php"

include($page);
?>
Gondolom nem kell leírnom, hogy a lista.php-nek (vagy amit betöltesz) léteznie kell az adott könyvtárban. Mindezt egyébként front controllernek hívják ízes magyar szakzsargonban, csak hogy legközelebb tudd, mi a téma :) A PHP keretrendszer teljesen más.
18

ERROR

S3RI0US · 2009. Nov. 13. (P), 20.47
Parse error: syntax error, unexpected T_INCLUDE in /home/www/music-r.eu.pn/index.php on line 143

A 143-as sorban van az include.

Mért váratlan az include?
17

Hogy teljes legyen

gphilip · 2009. Nov. 13. (P), 20.45
Hali!

Most nézem, h néhány elírás miatt még mindig nem az igazi. Mellesleg az alapértelmezett (index) oldalt sem tölti még be, tehát:

<?php  
$pages = array(  
  "index" => 'fooldal.php',  
  "hallgatas" => 'lista.php',
);  

if ( !isset( $_GET['page'] ) )
{
  $_GET['page']="index";  
}

if ( array_key_exists( $_GET['page'], $pages ) )
{
  $page = $pages[$_GET['page']];  
}
else 
{
  $page = "not_found.php";
}

include($page);  
?> 
19

Kösszi

S3RI0US · 2009. Nov. 13. (P), 20.50
Ezaz most már tényleg OK!
Thx
20

igy sem az igazi

gex · 2009. Nov. 13. (P), 21.10
warningot fog dobni az if(array_key_exist(...))-nél ha nincs page paraméter.
21

de jó

S3RI0US · 2009. Nov. 14. (Szo), 12.00
Kipróbáltam de nem dob ki semmit.

De azért köszi!
22

notice

gex · 2009. Nov. 14. (Szo), 14.10
elírtam, nem warningot hanem notice-t, és azért nem ír ki neked semmit mert nincs beállítva a hibakezelés rendesen, ugyanis a php alapból nem jelzi a notice-okat.

// $pages = ...

if (!isset($_GET['page'])) {
    $page = 'main.php';
}
elseif (isset($pages[$_GET['page']])) {
    $page = $pages[$_GET['page']];
}
else {
    $page = 'notfound.php';
}

// include...
23

Hol?

gphilip · 2009. Nov. 14. (Szo), 22.31
Hali gex!

Nem mintha számítana, de kíváncsi lettem - én nem látom, hol generál notice-t, lehet, h csak fáradt vagyok.
24

12. sor

gex · 2009. Nov. 14. (Szo), 22.58
az if (array_key_exists($_GET['page'], $pages)) sor mindenképpen kiértékelődik, akár van page paraméter akár nem, viszont ha nincs akkor a $_GET['page'] undefined index hibát eredményez, hasonlóan az inicializálatlan változók undefined variable hibájához.
25

De van

gphilip · 2009. Nov. 14. (Szo), 23.34
De a GET-nek mindig van page indexe, nézd meg a 7-10. sort a hozzászólásomban (17. hozzászólás).
26

háhá

gex · 2009. Nov. 14. (Szo), 23.40
ezt elnéztem, valószínűleg azért mert sohasem csinálnék ilyet. :D
27

hm

gphilip · 2009. Nov. 15. (V), 00.27
persze, más dolog az egyszerű, procedurális programozás :) front kontrollert én sem írtam elég régen, de valahogy mind elkezdtük :)

vagy nem erre gondoltál?
28

$_GET

gex · 2009. Nov. 15. (V), 00.39
nem, én arra gondoltam hogy sohasem írnám felül a $_GET tömböt. két okból se, egyrészt a te megoldásodban két külön url (index.php, index.php?page=index) is mutat majd ugyanarra a tartalomra, másrészt meg később szükséged lehet az eredeti page paraméterre, de nem fogod tudni. ugyanez igaz a $_POST, $_SERVER, stb szuperglobális tömbökre is. egy kicsit hasonló a helyzet mint régen a magic_quotes-szal, ha szükségem volt a kérésben szereplő változókra használnom kellett a stripslashes függvényt.
29

ÖÖÖ

S3RI0US · 2009. Nov. 15. (V), 15.31
persze biztos
azért kösz a segítséget c(: