Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] strona w stronie (include) i linki
Forum PHP.pl > Forum > PHP
gawar
Witam, w głównym pliku "index.php" mam taki kod odpowiadający za wyświetlanie pod stron w stronie głównej -"index.php"
  1. <?php
  2. $go = $_GET['go'];
  3. $go2 = $_GET['go2'];
  4. $go3 = $_GET['go3'];
  5.  
  6. if(!empty($go) and empty($go2)) {
  7.  
  8. if(is_file("$go")) include "$go";
  9. else echo "<br />Nie ma takiej strony 1:-(";
  10. }
  11. elseif(!empty($go) and !empty($go2)) {
  12.  
  13. if(is_file("go2/$go2")) include "go2/$go2";
  14. else echo "<br />Nie ma takiej strony 2:-(";
  15. }
  16. elseif(!empty($go) and !empty($go2) and !empty($go3)) {
  17.  
  18. if(is_file("go2/go3/$go3")) include "go2/go3/$go3";
  19. else echo "<br />Nie ma takiej strony 3:-(";
  20. }
  21. else include "start.html";
  22. ?>

i teraz mój problem jest następujący- klikając na jeden link ze strony index.php przechodzę do strony która pyta o dane, potrzebne do wyszukania informacji z bazy danych mysql
"index.php?go=wysz_id.html"
następnie już w następnej stronie dane te się wyświetlają
"index.php?go=wysz_id.html&amp;go2=wysz_id.php"
i teraz mam link który prowadzi do strony modyfikacji tych wyświetlonych danych link według struktury katalogów wygląda tak
"go2/go3/edit_wysz_id?a=edit&amp;id={$r['id_danezm']}\"
i jeżeli tak mam skonstruowany link to wszytko jest ok, problem pojawia się wtedy gdy chciałbym aby i ta strona wyświetlała się w stronie index.php , nie wiem czy powinienem brać pod uwagę w tym linku wszystkie strony przez które przechodzę do tego linku czy powinienem je ominąć?
żaden z moich pomysłów się nie sprawdza:( bardzo proszę o pomoc!
CuteOne
beznadziejny kod winksmiley.jpg

  1.  
  2. $modules = array(
  3. 'login' => 'includes/login/login/login/modules', //głupi przykład ale ukazuje to co chcesz osiągnąć
  4. 'reg' => 'includes/reg/modules',
  5. 'main' => 'includes/main',
  6. );
  7.  
  8. $page = $_GET['page'];
  9.  
  10.  
  11. if(!empty($page) && file_exists($modules[$page].'.php')) {
  12.  
  13. include $modules[$page].'.php';
  14. }
  15. else {
  16.  
  17. include $modules['main'].'.php'; // załącza stronę domyślną
  18. }
gawar
a jak mają teraz wyglądać te linki?
na przykład otworzę jakąś stronę z menu- index.php potem wejdę na jakiś link który jest właśnie w tej nowo otwartej stronie itd.itd.?
to linki ze znakiem "&" muszę tworzyć?
Unado
Jeśli dobrze zrozumiałem to chcesz ładować na stronie głównej jedynie treść z różnych plików?
To może taki kod?:
  1. <?
  2. $page = $_GET['page'];
  3. if (is_file($page.'.php')){
  4. include($page.'.php');
  5. echo $main;
  6. }
  7. else{
  8. include('404.php'); // czyli domyślna treść w index.php
  9. }
  10. ?>

Link będzie wtedy wyglądał tak jak wrzucisz jakiś plik php: index.php?page=news
Czyli plik to news.php

#Down
To dupa! Na pewno jest jakieś wyjście z takiej sytuacji ;d
CuteOne
gawar:
index.php?page=main to jest parametr, który pobierasz w index.php a następnie porównujesz do tego masz w tablicy z linkami..

teraz wystarczy dodać do niego kilka parametrów, które odbierzesz w main.php a nie jak ty to masz w index.php
index.php?page=main&param=10&param2=ok

plik main.php:
  1. $param = !empty($_GET['param']) ? $_GET['param'] : '';
  2. $param2 = !empty($_GET['param2']) ? $_GET['param2'] : '';
  3.  
  4. echo $param. ' ' .$param2;


rozumiesz teraz istotę szablonów?

unado: a co jeżeli jeden plik znajduje się w folderze "pupcia" a drugi w "niemowlecia" questionmark.gif
gawar
teraz to już przepraszam ale nic nie rozumiem:(
do pliku index.php wrzucam ten kod tam gdzie mają mi się wyświetlać strony, jak kliknę na dany link?

  1. $modules = array(
  2.  
  3. 'login' => 'includes/login/login/login/modules', //te nazwy login mają odpowiadać moim katalogom w strukturze strony?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
  4. 'reg' => 'includes/reg/modules', // a to co będzie znaczyćquestionmark.gifquestionmark.gifquestionmark.gif?
  5.  
  6. 'main' => 'includes/main',
  7. );
  8.  
  9. $page = $_GET['page'];
  10.  
  11. if(!empty($page) && file_exists($modules[$page].'.php')) {
  12.  
  13. include $modules[$page].'.php';
  14.  
  15. }
  16.  
  17. else {
  18. include $modules['main'].'.php'; // załącza stronę domyślną
  19. }

w pliku main.php ma być to? tak?

  1. $param = !empty($_GET['param']) ? $_GET['param'] : '';
  2.  
  3. $param2 = !empty($_GET['param2']) ? $_GET['param2'] : '';
  4.  
  5. echo $param. ' ' .$param2;

gdzie param to nazwy plików tak??muszę wypisać wszystkie linki ze strony?

Przepraszam jak zamotał ale teraz to już nic nie rozumiem:(
CuteOne
Zastanów się - po co pisać w adresie strony go2/go3/edit_wysz_id?a=edit&id={$r['id_danezm']}\ questionmark.gif

Zacznijmy od początku stwórz nowy folder o nazwie test w katalogu główny serwera (tam gdzie masz folder "go") tak żeby po wpisaniu http://localhost/test pojawiła ci się twoja strona. Następnie utwórz w nim plik index.php i wrzuć tam kod:

  1. <?php
  2. $modules = array(
  3. 'login' => 'includes/logowanie',
  4. 'reg' => 'includes/rejestracja',
  5. 'main' => 'includes/main',
  6. );
  7.  
  8. $page = $_GET['page'];
  9.  
  10.  
  11. if(!empty($page) && file_exists($modules[$page].'.php')) {
  12.  
  13. include $modules[$page].'.php';
  14. }
  15. else {
  16.  
  17. include $modules['main'].'.php';
  18. }
  19. ?>


W tym samym folderze utwórz kolejny folder o nazwie includes.. a w nim utwórz plik main.php
Do main.php wrzuć ten kod:

  1. $param = !empty($_GET['param']) ? $_GET['param'] : '';
  2.  
  3. echo 'Znajdujesz się w pliku includes/main.php a parametry to: ';
  4. echo $param. '<br>';
  5.  
  6. if($param) {
  7. echo 'Zechciej kliknąć na rejestrację: <a href="index.php?page='.$param.'&krok=1">LINK</a>';
  8. }


Kolejny plik również umieść w folderze includes pod nazwą rejestracja.php i wrzuć do niego:

  1. $krok= !empty($_GET['krok']) ? $_GET['krok'] : '';
  2.  
  3. echo 'Znajdujesz się na stronie rejestracji w kroku '.$krok;


I teraz otwórz przeglądarkę i adresie wpisz http://localhost/test/index.php?page=main&param=reg
gawar
zrobiłem tak jak mi napisałeś, tylko teraz jeżeli będę chciał umieścić jakiegoś linka do pod strony na stronie index.php to muszę rozumiem do tablicy go dodać? a w jakiej formie mam go wywołać? tzn. jak on ma wyglądać?
CuteOne
Pokazałem możliwości jakie niesie za sobą stosowanie wywoływania plików przez index.php ty sam musisz zdecydować w jakiej formie ma to wyglądać.

1. Tak - dodatkowo dodając bezpośredni link do tablicy uzyskujesz nad nim kontrolę np.

  1.  
  2. $modules = array(
  3. 'login' => array('includes/logowanie', 1, 0),
  4. 'reg' => array('includes/rejestracja', 0, 0),
  5. 'main' => array('includes/main', 1, 1)
  6. );
  7.  
  8. $page = $_GET['page'];
  9.  
  10.  
  11. if(!empty($page) && file_exists($modules[$page][0].'.php') && $modules[$page][2] == 1) { //$modules[$page][2] == 1 znaczy, że skrypt jest aktywny
  12.  
  13. if($modules[$page][1] == 1 && $_SESSION['loged']) { //$modules[$page][1] == 1 znaczy tylko dla zalogowanych
  14.  
  15. include $modules[$page][0].'.php';
  16. }
  17. else {
  18.  
  19. include $modules['main'][0].'.php';
  20. }
  21. }
  22. else {
  23.  
  24. include $modules['main'][0].'.php';
  25. }


2. rusz głową winksmiley.jpg
gawar
bardzo dziękuje Ci za pomoc, ale Ty mi to zbyt komplikujesz:( ja żadnych sesji nie potrzebuje, żadnego sprawdzania czy dany element w tablicy jest 1 czy 0, bo mi to nie jest potrzebne do niczego. mi chodziło tylko o pomoc w skrypcie który będzie miał za zadanie coś takiego



jeszcze raz dzięki za poświęcony czas ale to mi jeszcze bardziej wszystko skomplikowało:(
CuteOne
Oki prosto i na temat:
1. W index.php wstaw kod:

  1. <?php
  2. $modules = array(
  3. 'login' => 'includes/logowanie',
  4. 'reg' => 'includes/rejestracja',
  5. 'main' => 'includes/main',
  6. );
  7.  
  8. $page = $_GET['page'];
  9.  
  10.  
  11. if(!empty($page) && file_exists($modules[$page].'.php')) {
  12.  
  13. $to_include = $modules[$page].'.php';
  14. }
  15. else {
  16.  
  17. $to_include = $modules['main'].'.php';
  18. }
  19.  
  20. include 'templates/szablon.tpl.php';
  21.  
  22. ?>


2. do szablon.tpl.php ten kod:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>testt</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <table>
  11.  
  12. <tr>
  13. <!-- MENU -->
  14. <td>
  15. <a href="index.php?page=login">Logowanie</a><br>
  16. <a href="index.php?page=reg">Rejestracja</a>
  17. </td>
  18.  
  19. <!-- Część środkowa w której includowane będą podstrony -->
  20. <td><?php include $to_include; ?></td>
  21. </tr>
  22. </table>
  23.  
  24. </body>
  25. </html>


3. aby sprawdzić czy wszystko działa stwórz plik login.php w folderze takim jak w tablicy $modules i wrzuć tam kod:
  1. <table>
  2. <tr>
  3. <td> Strona login.php wszystko działa ;]</td>
  4. </tr>
  5. </table>

4. teraz wejdź na stronę i kliknij w link do logowania





gawar
dziękuje za pomoc!
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.