View previous topic :: View next topic |
Author |
Message |
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 06.11.2006 18:26 Post subject: PHP problem, višenamjenske stranice |
|
|
Pozdrav,
Radim na jednoj stranici na kojoj pomoću php-a određivam koja stranica ce se prikazat!
primjer:
u index.php fajlu imam jednu switch granu:
switch ($_GET[kategorija])
{
case "vicevi":
include 'vicevi.php';
break;
case "slike":
include 'smijesne_slike.php';
break;
...
default:
include 'home.php';
break;
}
e sad, problem nastaje kada u nekoj od tih podstranica sa header funkcijom radim redirect na istu stranicu odnosno na samog sebe,
primjer header("Location: smijesne_slike.php?orderby=date");
ili pomocu linka <a href="smijesne_slike.php?orderby=date">Date</a>
jer onda on pozove tu stranicu u browseru a ta stranica sluzi samo za prikaz podataka, a izgled je definiran u index.php stranici! Znaci mene zanima jel ima nacin da dizajn ostane samo u index.php stranici a ne da stavljam u svaku podstranicu?
Nadam se da ste skužili na kaj mislim, ako niste objasnit cu još!
|
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 06.11.2006 19:27 Post subject: |
|
|
Kaj nitko nezna? |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 06.11.2006 19:31 Post subject: |
|
|
Code: | header("Location: index.php?kategorija=slike&orderby=date"); |
|
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 06.11.2006 23:06 Post subject: |
|
|
Sulien wrote: |
Code: | header("Location: index.php?kategorija=slike&orderby=date"); |
|
Da, ali onda moram sav taj kod trpat u jedan file, tj index.php koji ce obradit te parametre!
Znaci sve ono, konekcija na bazu, upit, ispis podataka koje upit vrati! I unutar tog file više nemogu pozivat funkciju header() jer vec imam <head></head> tag od hml-a i vrati mi gresku da je header vec poslan browseru!
Jel znas mozda neki dobar link di je baš to objašnjeno!
tnx |
|
|
Back to top |
|
|
PaNtHeR
Joined: 17 Sep 2003 Posts: 161
|
Posted: 06.11.2006 23:16 Post subject: |
|
|
Probaj koristit $_SERVER['php_self'] ili request_uri. Dakle:
header("Location: $_SERVER['php_self']?orderby=date");
Ako sam dobro skuzio što ti treba. Mislim da ti u $_SERVER['request_uri'] bude ono sto piše u adress baru u browseru. Ali još probaj, ovo sve govorim onako polu-napamet.
Nadam se da sam pomogao.
Pozdrav |
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 06.11.2006 23:27 Post subject: |
|
|
Malo je teže za objasnit!
Kad na pocetnoj strani kliknem na neki link, npr vicevi onda u browseru imam ovo
../index.php?kategorija=vicevi
znaci da mi se includa stranica vicevi.php!
E sad sav kod koji je vezan za tu stranicu se nalazi u vicevi.php!
I kada kliknem na neki link unutar te stranice onda mi se u browseru pojavi,
../vicevi.php?nesto=nesto:... itd (sve to se nalazi unutar index.php fajla), e sad fora je u tome da ja u vicevi.php neam nikakav dizajn, samo php kod za ispis podataka iz baze. Sav dizajn se nalazi i index.php to i je poanta svega da dizajn drzm na jednom mjestu i da se ne treba cijela stranica ucitavati svaki put kad kliknem na neki link nego samo onaj dio koji se treba! |
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 06.11.2006 23:33 Post subject: |
|
|
I sad kad kliknem na neki link unutar stranice vicevi.php?nesto=nesto onda mi on te parametre prosljedi stranici index.php a ne stranici vicevi.php koja ima kod za brađivanje tih parametara! Jer stranica index.php nema taj kod, onda ima samo kod koji gleda kojij je od linkova u meniju pritisnut i ovisno o tome includa određenu stranicu! |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 07.11.2006 00:55 Post subject: |
|
|
Neka ti index.php sluzi kao entry point za sve stranice. U njega includeaj sav kod koji koristis na svim stranicama - konekcije nabazu, funkcije i slicno. I onda u index.php includeas stranicu koja ti je potrebna, npr vicevi.php koja sadrzi kod za tu stranicu.... |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 07.11.2006 00:56 Post subject: |
|
|
Ahaa... kužim
CTRL-N, start over. To je moj česti savjet
Ako nećeš to, onda obavi svu logiku stranice prije nego što počneš outputati HTML ("<html><head>..."). Ne možeš poslati header nakon što je bilo što otišlo u output. Bit će ti teško jer po onome što govoriš znam da pišeš težak špageti-kod, ali ono - svi smo jednom bili početnici
Code: | <?php
/*** sva logika ovdje (baza, parametri, kalkuliranje, redirect) ***/
/* podatke za output spremiš u variable */
?>
DOCTYPE
<html>
<head> ... </head>
<body>
<!-- sav output ovdje ... -->
<h1><?php echo $main_title ?></h1>
</html> |
Last edited by Sulien on 07.11.2006 01:01; edited 1 time in total |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 07.11.2006 00:59 Post subject: |
|
|
Sulien wrote: | Ne možeš poslati header nakon što je bilo što otišlo u output. |
mozes ak koristis output buffering |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 07.11.2006 01:03 Post subject: |
|
|
To je easy way out
Špageti-kod treba iskorijeniti na izvoru, ako mu kažeš za output buffering neće nikad počistit code |
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 07.11.2006 11:01 Post subject: |
|
|
Špageti-kod treba iskorijeniti na izvoru, ako mu kažeš za output buffering neće nikad počistit code[/quote]
Ha ha, pokušavam programirat što je čišće jer i meni to komplicira život kad nešto treba nadodat ili maknut! S vremenom će bit sve bolje!
Proučavao sam malo Xtemplate
http://xtemplate.sourceforge.net/
Kolko sam vidio nije kompliciran, a super je kad se odvoji dizajn od php koda a ne kad je sve isprepleteno!
Quote: |
Neka ti index.php sluzi kao entry point za sve stranice. U njega includeaj sav kod koji koristis na svim stranicama - konekcije nabazu, funkcije i slicno. I onda u index.php includeas stranicu koja ti je potrebna, npr vicevi.php koja sadrzi kod za tu stranicu.... |
Tako i imam, ali nemogu napravit da iz stranice vicevi.php napravim refresh te iste stranice sa drugim parametrima(npr da mi se sortiraju vicevi po drugoj kategoriji i slično) unutar index.php stranice! |
|
|
Back to top |
|
|
les
Joined: 25 Oct 2004 Posts: 370
|
Posted: 07.11.2006 11:19 Post subject: |
|
|
Uf al si ga zapetljao...
Koliko sam ja shvatio iz cijele ove priče unutar index.php fajla imaš switch-case petlju kojom pozivaš ostatak koda. Obzirom da ti treba parametar sa kojim ćeš određivat koji .php fajl ćeš koristit (kategorija) i parametar sa kojim ćeš odredit daljnju akciju koja će se odvijat u pozvanom .php fajlu (soritranje ili već nešto), dovoljno je unutar tvog vicevi.php stavit link na index.php?kategorija=vicevi&akcija=nesto.
Znači sa kategorija=vicevi includaš file "vicevi.php", a sa akcija=nesto određuješ što će se unutar vicevi.php dogodit dalje.
Mislim da jednostavnije od ovog ne može bit |
|
|
Back to top |
|
|
dadot
Joined: 05 Nov 2006 Posts: 13
|
Posted: 07.11.2006 21:32 Post subject: |
|
|
Skužio sam kak ću napravit, tnx svima na pomoći! |
|
|
Back to top |
|
|
|