ďťż
Podstrony
|
telcocafeWitam. Dośc szybko znów się pojawiłem....zacząłem rozważać sposób nawigacji na stronie i chce osiągnąc, aby wyglądało to następująco...+----------------------------+ | | | NAWIGACJA | | | +----------------------------+ | | | TRESC | | | | | +----------------------------+ Chodzi o to, że strona ma taki podział. Tylko dwie częsci...w nawgiacji są linki a w trści to co ma się syświetlać:P to nazywa się index.php chce żeby wszystko działo się w index.php...aby po kliknięciu na, np. link galeria czy news nie przechodziło mi do innej strony a jedynie pobierało zawartość pliku news.php czy coś takiego? Chodzi mi o samo przeładowanie treściw index.php a nie o zmianę podstrony. coś mi się obiło o uszy, że jako parametr href w linku można dać index.php?show=$_GET["content"] zaś w treść dać include $content...ale nie do końca rozumiem to...więc jakby ktoś mógł mi to wyjaśnić albo podać wydajniejszy przykład to będe bardzo wdzięczny AJAX - wtedy cała strona nie będzie się przeładowywać A to co ty mówisz, to strona jednak będzie się odświeżać;] i wygląda to tak: Mamy adres: www.twojastrona.pl/index.php?page=news w kodzie index daj: if(isset($_GET['page'])&&file_exists($_GET[' page']'.php')) { include($_GET['page']'.php') } else echo('Treść strony głównej.'); i tak dołączasz pliki zależnie od parametru żądanego przez użytkownika - w największym skrócie no dobra ale jak ma wtedy wyglądać link? a href="news" ?? bo coś mi tu nie pasuje właśnie omg nie widzisz wyżej? Mamy adres: www.twojastrona.pl/index.php?page=news Użytkownik DJ_ProG edytował ten post 29 styczeń 2007, 15:40 niestety nie mogę tego rozgryść do końca :/ wiem wiem dla wielu z was to proste, ale licze na jakąś solidną odpowiedź. już przedstawiam sytuację... strona dwudzielna...w sekcji z treścią dałem ten kod if(isset($_GET['page'])&&file_exists($_GET[' page']'.php')) { include($_GET['page']'.php') } else echo('Treść strony głównej.'); no i pytanie tyczy się tego, że co mam wstawić w <a href="tutaj"> ?? szczególnie, że index jest luzem, a inne pliki w oddzielnych folderach np. nowosci <a href="index.php?page=TU_NAZWA_STRONY_DO_WYSWIETLENIA">Link</a> no i tu jest problem, ponieważ nazwa strony nie łaczy się z roszeżeniem...otrzymuje index.php?page=nazwa_strony i nie może dać include poniewaz nie ma rozszeżenia. a co jeżeli strona jest w podkatalogu To daj PEŁNY adres (tak, tak, razem z html://www. ...) Może zadziała. to raczej nie jest to o co mi chodzi...zresztą troche niepraktyczne i niewygodne to jest chce żeby podmieniana była tylko treść Polecam system który mam na stronie. Działa on tak jak chcesz. Oto kod: <?php $id=$_GET["id"]; if( empty( $id )) {include("start.php");} elseif( $id == "aaa" ) {include("bbb.php");} elseif( $id == "ccc" ) {include("ddd.php");} else {include("start.php"); } ?> Wstawiasz go w miejscu gdzie ma się wyswietlić tekst. W miejscu aaa wstaw nazwe strony np: komputery, a w miejscu bbb.php nazwę pliku, który chcesz otworzyć np: komputery.php. Musisz umieścić na serwerze plik start, albo możesz zmienić nazwy start na co chesz. A tak wyglada link <a href="index.php?id=aaa"> gdzie w nazwie aaawpisujesz to co podałeś przy aaa np: <a href="index.php?id=komputery">Komputery</a> Jeśli będziesz miał jakieś problemy to pisz do mnie. System ten stosuje na stronie, link masz w sygnaturce. Użytkownik simo_n edytował ten post 30 styczeń 2007, 15:50 Albo pokaż cały kod tej strony (index.php) to coś wymyślimy, a tak na oko to ciężko się domyśleć co ci mamy wytłumaczyć <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Project 6</title> <link rel="stylesheet" href="included/styl.css" /> </head> <body> <div id="nav"> <ul class="level1"> <li class="submenu"><a href="/services/">News`y</a> <ul class="level2"> <li><a href="index.php?id=add_news">Dodaj</a></li> <li><a href="index.php?id=edit_news">Edytuj</a></li> <li><a href="index.php?id=pokaz_news" >Wlacz/Wylacz</a></li> </ul> </li> <li class="submenu"><a href="/services/">Artykuly</a> <ul class="level2"> <li><a href="">Dodaj</a></li> <li><a href="">Usun</a></li> <li><a href="">Edytuj</a></li> <li><a href="">Wlacz/Wylacz</a></li> </ul> </li> <li class="submenu"><a href="/services/">Galeria</a> <ul class="level2"> <li><a href="">Dodaj</a></li> <li><a href="">Usun</a></li> <li><a href="">Kopiuj</a></li> <li><a href="">Wlacz/Wylacz</a></li> <li><a href="">Edytuj</a></li> </ul> </li> <li><a href="http">Menu</a></li> </ul> </div> <div id="main"> <?php KOD NAWIGACJI ?> </div> </body> </html> więc tak...Kutar...twój kod byłby lepszy bo znacznie wygodniejszy....ale kiedy daje na linka to id czy tam page jak wolisz owszem jest przekazane...ale nie dodaje rozszeżenie więc tak naprawdę nic się nie includuje...Z kolei kod simo działa, ale jest niewygodny w użyciu ale nie dodaje rozszeżenie więc tak naprawdę nic się nie includuje Kompletnie nie rozumiem o co chodzi... możesz jakoś jaśniej? moze zle to ujolem. zasadniczo chodzi o to, ze po kliknieciu na link nic sie nie dzieje... Sprawdź: 1. czy nie popełniłeś błędu w linku; 2. czy plik do którego się odwołujesz jest na serwerze; czy pokazuje się coś innego, np to "Treść strony głównej." - ma się to pokazać jak nie ma pliku na serwie lub nie ma zmiennej PAGE w adresie drugi warunek jest spełniony.... ponieważ zachowuje się tak jakby nie było pliku... a mam jeszcze jedno pytanie od razu... bo nie zawsze będe używał plików z rozszeżeniem .php...jak to przerobić żebym ten kod mógł używać równocześnie do plików .php jak i .html? przypuszczam, że coś z tablicą trzeba pokombinować, wsadzić tam 2 rozszeżenia, ale nie do końca to widze <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Project 6</title> <link rel="stylesheet" href="included/styl.css" /> </head> <body> <div id="nav"> <ul class="level1"> <li class="submenu"><a href="/services/">News`y</a> <ul class="level2"> <li><a href="index.php?pokaz=narzedzia/dodaj.htm">Dodaj</a></li> <li><a href="index.php?pokaz=edytuj.php">Edytuj</a></li> <li><a href="index.php?pokaz=walcz.html" >Wlacz/Wylacz</a></li> </ul> </li> <li class="submenu"><a href="/services/">Artykuly</a> <ul class="level2"> <li><a href="">Dodaj</a></li> <li><a href="">Usun</a></li> <li><a href="">Edytuj</a></li> <li><a href="">Wlacz/Wylacz</a></li> </ul> </li> <li class="submenu"><a href="/services/">Galeria</a> <ul class="level2"> <li><a href="">Dodaj</a></li> <li><a href="">Usun</a></li> <li><a href="">Kopiuj</a></li> <li><a href="">Wlacz/Wylacz</a></li> <li><a href="">Edytuj</a></li> </ul> </li> <li><a href="http">Menu</a></li> </ul> </div> <div id="main"> <?php if($_GET["pokaz"]=="")$pokaz="glowna.php"; else $pokaz=$_GET["pokaz"]; require $pokaz; ?> </div> </body> </html> Skopiuj to i bedzie działać Skopiuj to i bedzie działać Fajnie... i gość podmieniając linka zinkluduje coś ze zdalnego serwera... Dodaj file_exist() i gra muzyka;] eee... a wogóle takie pytanie mam - masz wogóle pliki add_news.php, edit_news.php, pokaz_news.php ?? Mam wrażenie że wogóle nie rozumiesz tego kodu... ;/ Pokaże Ci uproszczony przykład mojego kodu i mam nadzieje że Ci to zadziała ( to chyba najpopularniejszy kod - podobny był nawet przedstawiony w ekspecie [ może nawet to ten sam... :) ] ) <?php //tablica z możliwymi do wyświetlenia stronami $dozwolone=array('glowna','news','kontakt','linki'); //sprawdzamy czy jest zmianna $_GET['strony'], jeśli jest zapisujemy jej wartość do zmiennej $strony if (isset($_GET['strony'])) $site=$_GET['strony']; else $strony=$dozwolone[0]; //sprawdzamy czy zawartosc zmiennej jest "dozwoloną stroną", jeśli tak to ją wyświetlamy, //jeśli nic nie ma w zmiennej $_GET['strony'], wyświetlamy strone główną //gdy strona nie jest dozwolona wyswietlamy strone blad.php if (in_array($_GET['strony'], $dozwolone)) include('strony/'.$strony.'.php'); else if(!isset($_GET['strony'])) include ('strony/home.php'); else include('strony/blad.php'); ?> Powyższy kod wklej w miejsce gdzie ma wyświetlać się zawartość Teraz musimy ustowrzyć folder STRONY i utworzyć w nim pliki GLOWNA.PHP, NEWS.PHP, KONTAKT.PHP, LINKI.PHP ok, pozostało już tylko menu Każdy link bedzie w podobnym "schemacie" <a href="index.php?site=STRONA_DO_WYŚWIETLENIA"> Menu wiec będzie miało taką budowę: <a href="index.php?site=glowna"> <a href="index.php?site=news"> <a href="index.php?site=kontakt"> <a href="index.php?site=linki"> Teraz w skrócie ( to co najważniejsze ) przedstawie - jak to działa :] -> Skrypt pobiera zmienną $_GET['strony'] z adresu, czyli do zmiennej tej przypisywane jest to, co znajduje się po "index.php?site=" np. w adresie "index.php?site=glowna" w zmiennej znajduje sie napis GLOWNA -> Nstępnie wyświetla z folderu STRONY odpowiedni plik, którego nazwę "zdobywa" przez dodanie do wartości zmiennej $_GET['strony'] napisu .PHP <- roższeżenia pliku :) czyli ( biorąc adres z poprzedniego przykładu ) adres pliku to STRONY/GLOWNA.PHP Ok, nie chce mi się więcej pisać ale mam nadzieję że trochę rozumiesz... Jeśli chcesz to dodaj sobie jeszcze gdzieś kod <?php echo ('Zawartość zmiennej $_GET[\'strony\'] - '); echo $_GET['strony'] echo ('<br />"Poszukiwany" przez skrypt plik to - '); echo ('strony'.$_GET['strony'].'.php'); ?> Może nawet jaśniej zrozumiesz o co chodzi... @edit: LOL... troche sie z tym ociągałem.. gdy zaczynałem nie było 2 postów... :) A co do tego dołączania plików "*.html" Dodaj warunek który sprawdza czy jest plik *.php, jeśli go nie ma to sprawdza czy jest plik *.html, a jesli i tego nie ma to wyświetla blad.php. Ale... po co Ci *.html ? Rób pliki *.php bez kodów php... @edit2: Poprawiony kod - for you :) if (in_array($_GET['strony'], $dozwolone) && file_exists($_GET['strony/'.$_GET['strony'].'.php') ) include('strony/'.$strony.'.php'); else if(file_exists($_GET['strony/'.$_GET['strony'].'.html' )) include('strony/'.$strony.'.html'); else if(!isset($_GET['strony'])) include ('strony/home.php'); else include('strony/blad.php'); ?> Sprawdź jakby coś nie działało czy nie ma jakichś prostych błedów - ten kawałek pisałem naprawde szybko więc może pomyliłem się nieco... Użytkownik fenekpl edytował ten post 30 styczeń 2007, 21:10 fenek o ile dobrze zrozumiałem twój kod to ma on jeden mankament. otóż... if (in_array($_GET['strony'], $dozwolone)) include('strony/'.$strony.'.php'); zmusza mnie to do pobierania podstron z jednego katalogu...a ja tych katalogów mam kilka więc jest to troche niewygodne bo chyba musiałbym zrobić kilka warunków z file exist i sprawdzanie każdego katalogu gdzie jest ten plik. Chyba, że coś źle zrozumiałem kolejny problem pojawia się tu: else if(!isset($_GET['strony']) a mianowicie chodzi o to, że ciągle ten warunek jest spełniuony więc tak jakby wogólenie pobierał nazwy strony Użytkownik Dawid-San edytował ten post 31 styczeń 2007, 12:01 Co do pierwszego: a jak podasz a adresie index.php?zmienna=folder/plik albo dla wygody możesz innym znakiem rozdzielać i w str_replace potem zamieniać. Co do drugiego.. jak zawsze spełniony, a jaśli nie ma zmiennej $_GET['strony'] ?? Co do drugiego.. jak zawsze spełniony, a jaśli nie ma zmiennej $_GET['strony'] Kutar ale tu jest właśnie problem, że tej zmiennej nie ma. Przecież jest !isset czyli nie jest ustawiona ta zmienna. Chyba, że się nie rozumiemy obaj :P zapis if(!isset($_GET['strony']) oznacza instrukcję, która będzie spełniona JEŚLI zmiennej nie będzie. Czyli instrukcje, które będą wykonane, gdy gość wywoła adres index.php bez żadnego parametru. Jeśli parametr będzie, te instrukcje zostaną pominięte. PS. lol, przy kolejnych postach w tym temacie coraz bardziej sam tu wszystkiego nie rozumiem..., hehe;] no tak kutar...ale patrz za każdym razem (po otwarciu index.php jak i po kliknięciu na link) wywoływana jest instrukcja if(!isset($_GET['strony']) to znaczy, że parametr nie jest przekazywany ps. jest jedna rzecz której totalnie nie kminie w tym kodzie: początek wygląda tak: if (isset($_GET['strony'])) $site=$_GET['strony']; else $strony=$dozwolone[0]; a link zapisujemy tak: <a href="index.php?site=STRONA_DO_WYŚWIETLENIA"> Skoro link ma przekazywać parametr 'site' to dlaczego my sprawdzamy czy jest ustawiony parametr 'strona' ? Użytkownik Dawid-San edytował ten post 31 styczeń 2007, 16:15 Zamień ten: if (isset($_GET['strony'])) $site=$_GET['strony']; else $strony=$dozwolone[0]; na: if (isset($_GET['site'])) $site=$_GET['site']; else $site=$dozwolone[0]; Teraz ci będzie sprawdzał paramet site. W reszcie kodu też pozmieniaj strony na site, jeśli istnieją eee.... albo po prostu w linkach zmień SITE na STRONY :) tak bedzie prosciej napis SITE to pozostałość bo mojim kodzie :) @edit: PYTANIE: fenek o ile dobrze zrozumiałem twój kod to ma on jeden mankament. otóż... KOD if (in_array($_GET['strony'], $dozwolone)) include('strony/'.$strony.'.php'); zmusza mnie to do pobierania podstron z jednego katalogu...a ja tych katalogów mam kilka więc jest to troche niewygodne bo chyba musiałbym zrobić kilka warunków z file exist i sprawdzanie każdego katalogu gdzie jest ten plik. Chyba, że coś źle zrozumiałem ODPOWIEDŹ: Co do pierwszego: a jak podasz a adresie index.php?zmienna=folder/plik Ale wtyedy poszukuje stron z folderu STRONY/FOLDER/PLIK.PHP A rozumiem że jemu chodzi o to że strony mają być gdzieś indziej, niż w folderze STRONY... W takim wypadku wystarczy z poleceń include usunąć: //stary kod // include('strony/'.$strony.'.php'); //nowy kod include($strony.'.php'); Użytkownik fenekpl edytował ten post 31 styczeń 2007, 21:33 chyba już mam edit // niestety nie Użytkownik Dawid-San edytował ten post 01 luty 2007, 11:43 |
|||
Sitedesign by AltusUmbrae. |