Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Modyfikacja skryptu
Forum PHP.pl > Forum > Przedszkole
boy
  1. <?php include &#092;"includes/menu.htm\"; ?><?php 
  2.  
  3. $folPages = 'includes/'; // folder , w ktorym trzymasz te strony 
  4. $page = $_GET['page']; 
  5. if(isset($page)) { 
  6. $roz = array(&#092;"php\"); // itp. 
  7. for($i=0;$i<count($roz);$i++) 
  8. { 
  9. if(file_exists($folPages.$page.'.'.$roz[$i])) { 
  10. include($folPages.$page.'.'.$roz[$i]); 
  11. break; 
  12. } else { 
  13.  if($i == (count($roz) - 1)) { 
  14.  echo 'blad, brak pliku'; 
  15.  } 
  16. } 
  17. } 
  18. } else { 
  19. include($folPages.'index.php'); 
  20. } 
  21.  
  22. ?>

W powyzszy kodzie mam fajny szablonik na ktoryn pracują moje strony.
Problem pojawia sie gdy chce zagnieździc katalog w katalogu.
Wówczas adres index.php?page=nazwa_pliku nie funkcjonuje.
Sądze ze nalezałoby uzyc index.php?page=nazwa_pliku&katalog=nazwa_pliku
Jak zmodyfikowac mój kod, by obslugiwal katalogi podrzędne ?

---

hwao
nospor
  1. <? include &#092;"includes/menu.htm\"; ?><?php 
  2.  
  3. $folPages = 'includes/'; // folder , w ktorym trzymasz te strony 
  4. $page = $_GET['page']; 
  5. $kat = $_GET['katalog']; 
  6. if(isset($page)) { 
  7.  $roz = array(&#092;"php\"); // itp. 
  8.  for($i=0;$i<count($roz);$i++) 
  9.  { 
  10.  if(file_exists($folPages.$kat.'/'.$page.'.'.$roz[$i])) { 
  11.  include($folPages.$kat.'/'.$page.'.'.$roz[$i]); 
  12.  break; 
  13.  } else { 
  14. if($i == (count($roz) - 1)) { 
  15. echo 'blad, brak pliku'; 
  16. } 
  17.  } 
  18.  } 
  19. } else { 
  20.  include($folPages.'index.php'); 
  21. } 
  22.  
  23. ?>
boy
Ok.
Mozesz mi jeszcze powiedzieć "z czym to się je" ?
Jak powiedzmy w moim katalogu mam includes, a w nim katalog sport.
Jak wtedy beda wygladaly adresy do stron w tym nowym katalogu ?
nospor
z dżemem smile.gif
"includes/sport/twoje pliki"
boy
smile.gif
Do tej pory miałem np index.php?page=strona

a teraz po zastosowaniu Twej modyfikacji np jak w katalogu głównym includes stworze katalog sport - a w nim np plik xxx
to jak bedzie wygladal adres do niego ?

Czy da sie zrobic cos takiego :
Kod
index.php?page=nazwa_pliku&katalog=nazwa_pliku
nospor
no tak jak sam proponowales:
index.php?page=strona&katalog=nazwa_katalogu
boy
Dla scisłości :
Jest katalog główny includes /czy moze byc inny przy naszym powyzszym szablonie ? cvzy trzeba by cos zmieniac?/
w nim katalog podrzedny : sport[/] a tam pliki np [b]xxx, aaa, ddd, eee ... jak bedzie wygladal adres do mego pliku xxx questionmark.gif
nospor
przy tym szablonie jest katalog includes a w nim inne katalogi

index.php?page=xxx&katalog=sport
boy
Kod
Warning: main(): Failed opening 'includes/menu.htm' for inclusion (include_path='.') in c:\usr\krasnal\www\gospodarka\index.php on line 3


Taki błąd wyskakuje wiec cos jest nie tak sad.gif

Dodam ze działa wyswietlanie w tymn owym katalogu z adresu
Kod
<a class=linki href=index.php?page=xxx&katalog=katalog> test |</a>


tylko na górze strony wywala ten powyzszy błąd.
nospor
ale czemu napisales katalog=katalog. mialo byc katalog=sport

a poza tym on ci nie moze zincludowac twojego wcześniejszego include zaraz na poczatku skryptu. to juz nie moja wina
boy
Wiem ze na poczatku mialobyc katolog sport i jest taki. Jest tez testowy katalog o nazwie katalog.

Juz mi działa poprostu mialem zadeklarowane menu.htm, a zamiast niego był plik menu.inc juz poprawilem i dziala. smile.gif
DZIEKI SERDECZNE !


Skrypt jest o tyle uniwerslany ze moge dodac kazdy katalog i wreszcie mam rozwiazany dylemat.

Mam pytanie:
Czy na bazie tego skryptu-szablonu bedzie mozna tworzyc strony oparte na tabelach /w nich includowane poszczegolne podstrony typu: menu, newsy, stopka.../, ale dodatkowo gotowe obce skrypty typu ksiegi gosci, newsy ... by było wyswietlane : menu w srodku skrypt stopka itd ...

Na dniach jak wyrobie sie z czasem to wyprobuje to do powyzszego celu.
Prosze o Twoją opinie i ewentualne porady.
nospor
ale zamotales pytanie. za minutke spadam do domu, wiec pewnie jutro odpowiem. Jakbys jednak napisal troche bardziej konkretnie to pewnie by mi to pomoglo.

Ale tak na szybko to jesli bedą dobre tabele to chyba tak (o ile dobrze zrozumialem twoje pytanie) (do jutra)
nospor
Skąd wykrywał katalogi? Z url czy z dysku?
boy
Jezeli chciałbym bardziej go rozbudowac do wiekszej ilosci katalogów wtedy musze zmienic w tym kodzie :
  1. <? include &#092;"includes/menu.htm\"; ?><?php 
  2.  
  3. $folPages = 'includes/'; // folder , w ktorym trzymasz te strony 
  4. $page = $_GET['page']; 
  5. $kat = $_GET['katalog']; 
  6. if(isset($page)) { 
  7.  $roz = array(&#092;"php\"); // itp. 
  8.  for($i=0;$i<count($roz);$i++) 
  9.  { 
  10.  if(file_exists($folPages.$kat.'/'.$page.'.'.$roz[$i])) { 
  11.  include($folPages.$kat.'/'.$page.'.'.$roz[$i]); 
  12.  break;

dodac dodatkowa zmienna
  1. <?php
  2.  
  3. $kat2 = $_GET['katalog2'];
  4. ?>

i
  1. <?php
  2. if(file_exists($folPages.$kat2.'/'.$kat.'/'.$page.'.'.$roz[$i])) { 
  3.  include($folPages.$kat2.'/'.$kat.'/'.$page.'.'.$roz[$i]); 
  4.  
  5. ?>
itd a czy mozna by skrypt automatycznie wykrywał katalogi ?
nospor
Skąd wykrywał katalogi? Z url czy z dysku?
boy
Zeby wykrywał nowe katalogi na serwerze www .
nospor
Do latania po dysku sluza funkcje dotyczące systemu plików. Możesz sczytać zawartosć katalogu, będziesz wiedział jakie ma on pliki i katalogi i robić z tym co ci się żywnie podoba.
Jeśli chesz podawać w url zagnieżdżone katalogi to możesz jako parametr katalog wpisywać wartość katalog1-katalog2-katalog3....itd, po czym po odczytaniu url zamienić wszystkie kreski w zmiennej katalog na /. Dalem kreski bo / w url jako warości zmiennej raczej podać nie możesz.
boy
Kilka postów wyzej wymysliłem sposob na to by skrypt obslugiwał wiecej katalogów ipodkatalogów. Czy dobrze go przekształciłem ?
nospor
Dobrze.
Aczkolwiek pamiętaj, żeby sprawdzać czy podrzędny katalog2 zostal podany w url, bo chyba nie zawsze będziesz miał zagnieżdżenia podwójne. Jeśli go nie będzie to trzeba budować warunek file_exist tyko z jednym katalogiem
boy
wiec jak to by wygladalo w naszym przypadku z tym file_exist ?
nospor
Napisze od razu na dwa katalogi, przy czym katalog2 to podrzedny do katalog (tak jest intuicyjnie), a nie jak u ciebie na odwrót:
  1. <?php
  2.  
  3. if (isset($_GET['katalog']))
  4.    $kat=$_GET['katalog'].'/';
  5. else
  6.    $kat='';
  7. if (isset($_GET['katalog2']))
  8.    $kat2=$_GET['katalog2'].'/';
  9. else
  10.    $kat2='';
  11. $file=$folPages.$kat.$kat2.$page.'.'.$roz[$i];
  12. f(file_exists($file)) 
  13.        include($file);
  14.  
  15. ?>


edit: spadam domciu. do jutra (ale tylko do 14). a potem weekend i wolne smile.gif

edit: już jest jutro:)
Tak se myslalem, ze moglbyc zczytywać z url dowolną liczbę zagnieżdżeń katalogów.
Załóżmy, że nazwa katalogu to parametr zaczynający się na kat(a tak żeby było krócej), czyli np. kat1=cos1&kat2=cos2&kat3=cos3;
Wystarczy wówczas z url zczytać wszystkie parametry zaczynajace sie na kat:
  1. <?php
  2.  
  3. $katalogi='';
  4. foreach ($_GET as $name=>$value)
  5.     if (substr($name,0,3)=='kat')
  6.         $katalogi.=$value.'/';
  7.  
  8.  
  9. ?>

A dalej po staremu:
  1. <?php
  2.  
  3.  
  4. if(isset($page)) { 
  5.    $roz = array(&#092;"php\"); // itp. 
  6.    for($i=0;$i<count($roz);$i++) 
  7.    { 
  8.      $file=$folPages.$katalogi.$page.'.'.$roz[$i];
  9.      f(file_exists($file)) 
  10.      {
  11.           include($file);
  12.           break;
  13.       }
  14.    }
  15. }
  16. ?>


hihi, tylko gdy jakiś parametr będzie się nazywał np. katastrofa to też się załapie, bo zaczyna się na kat. Można by ewentualnie sprawdzać czy po kat jest liczba
boy
Na poczte podeslalem Ci maila.
Jak mi odpiszesz to podesle moja testoa strone oparta o ten skrypt.
Mam małe problemy z praktycznym zastosowaniem.
nospor
odeslalem
boy
Cytat
Tak se myslalem, ze moglbyc zczytywać z url dowolną liczbę zagnieżdżeń katalogów.
Załóżmy, że nazwa katalogu to parametr zaczynający się na kat(a tak żeby było krócej), czyli np. kat1=cos1&kat2=cos2&kat3=cos3;

Mógłbys rozwinąc tę myśl, jak by ten kod w calosci wygladał ?
nospor
  1. <?php
  2.  
  3. $folPages = 'includes/'; // folder , w ktorym trzymasz te strony 
  4. $page = $_GET['page']; 
  5. $katalogi='';
  6. foreach ($_GET as $name=>$value)
  7.     if (substr($name,0,3)=='kat')
  8.         $katalogi.=$value.'/';
  9.  
  10. if(isset($page)) { 
  11.    $roz = array(&#092;"php\"); // itp. 
  12.    for($i=0;$i<count($roz);$i++) 
  13.    { 
  14.      $file=$folPages.$katalogi.$page.'.'.$roz[$i];
  15.      if(file_exists($file)) { 
  16.        include($file); 
  17.        break; 
  18.      } else { 
  19.       if($i == (count($roz) - 1)) { 
  20.         echo 'blad, brak pliku'; 
  21.       } 
  22.      } 
  23.    } 
  24. } else { 
  25.    include($folPages.'index.php'); 
  26. }
  27.  
  28. ?>
boy
Wyskakuje błąd w lini 3.
Moze zostawmy to, bo jest jakies niepewne.
Moze pozostanmy przy tych 2 dodatkowych katalogach. Mógłbyś mi ten kod z 2 katalogami przedstawic w całości i ewentualnie jak by wygladal z 3 katalogami, wtedy bym se go przeanalizowal i dalej sam wiedzial jak dodawac nowe opcje katalogow.
nospor
Jakoś nie widzę bledu w lini 3 . MOże u Ciebie to inna jest linia 3.

No toć połączyć musisz dwa kawałki kodu
  1. <?php
  2.  
  3. $folPages = 'includes/'; // folder , w ktorym trzymasz te strony 
  4. $page = $_GET['page']; 
  5. if (isset($_GET['katalog']))
  6.    $kat=$_GET['katalog'].'/';
  7. else
  8.    $kat='';
  9. if (isset($_GET['katalog2']))
  10.    $kat2=$_GET['katalog2'].'/';
  11. else
  12.    $kat2='';
  13. if(isset($page)) { 
  14.    $roz = array(&#092;"php\"); // itp. 
  15.    for($i=0;$i<count($roz);$i++) 
  16.    { 
  17.      $file=$folPages.$kat.$kat2.$page.'.'.$roz[$i];
  18.      if(file_exists($file)) { 
  19.        include($file); 
  20.        break; 
  21.      } else { 
  22.       if($i == (count($roz) - 1)) { 
  23.         echo 'blad, brak pliku'; 
  24.       } 
  25.      } 
  26.    } 
  27. } else { 
  28.    include($folPages.'index.php'); 
  29. }
  30.  
  31. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.