Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak to zrobić w PHP
Forum PHP.pl > Forum > Przedszkole
exit
Witam jestem początkującym userem php. Dobrze znam html, ale chce czegoś więcej. Co mam zrobić, żeby pliki, które dołączam za pomocą polecenia "include" nie wskazywały za każdym razem innego miejsca.
Mam plik o nazwie index.php a wnim na przykład coś takiego
...
<?php
include(dane/menu.inc)
?>
...
ten plik jak widać jest w innym katalogu niż index.php. Plik dołącza się bardzo ładnie ale jeśli w menu napisany jest adres np <a href=index.php"> to po zaincludowaniu ten sam adres w przeglądarce pokazuje <a href="dane/index.php"> i wszystko sie wali.

Wiem, że to co napisałem jest zakręcone jak baranie rogi, ale jak by ktoś wiedział jak sobie z tym poradzić to niech się ujawni:-)
silent
Coś widocznie pokręciłeś, bo nie może się tak dziać. Daj listingi kodu takie jak masz.
shizo
Po includowaniu plik staje się "jakby częścią pliku" index.php. Dlatego jeżeli plik *.inc masz w katalogu np. dnae, to jak linki pisz np.
  1. <a href="../index.php">INDEX<?a>
Guest
Wielkachne dzieki shizo. Teraz działa jak talala:-). I own U.
redman2
I own U - posiadam ciebie

I owe U - jestem ci cos winny.

Piszcie po polsku.
Troche to smiesznie wyglada...
exit
Hi. Ktoś tam napisał, że chodzi jak talala? No może i chodzi (faktycznie tak jest), ale tylko w podkatalogu dane. W innych podkatalogach znowu nie działa bo pokazuje inny adres. Nie wiem jak to zrobić. Teraz zapodam listingi kodu, noże ktoś sie połapie?
No wiec tak:

Plik index.php wygląda następująco
  1. <html>
  2. <head>
  3. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html\";charset=\"ISO-8859-2\">
  4. <?php
  5. include(&#092;"style/main_style.inc\")
  6. ?>
  7. <title>Internetowy Serwis Informacyjny</title>
  8. </head>
  9. <body topmargin=0 align=\"center\" bgcolor=white>
  10. <?php
  11. include(&#092;"header/naglowek.inc\")
  12. ?>
  13. <table width=\"100%\" border=0 cellspacing=0 cellpadding=2>
  14. <tr>
  15. <td align=\"center\" colspan=\"3\">
  16. <?php
  17. include(&#092;"header/menu.inc\")
  18. ?>
  19. </td>
  20. </tr>
  21. </table>
  22. <table width=\"100%\" border=0 cellspacing=0 cellpadding=2>
  23. <tr align=\"center\">
  24. <td width=\"180px\" valign=\"top\">
  25. <?php
  26. include(&#092;"glowna/left/menuleft.inc\")
  27. ?>
  28. </td>
  29. <td valign=\"top\">
  30. <?php
  31. include(&#092;"glowna/center/aktual.inc\")
  32. ?>
  33. </td>
  34. <td width=\"180px\" valign=\"top\">
  35. <?php
  36. include(&#092;"glowna/right/events.inc\")
  37. ?>
  38. </td>
  39. </tr>
  40. <tr>
  41. <td colspan=\"3\" class=\"fotter\">
  42. <?php
  43. include(&#092;"fotter/stopka.inc\")
  44. ?>
  45. </td>
  46. </tr>
  47. </table>
  48. </body>
  49. </html>

Plik menuleft.inc, który jest w katalogu glowna/left - wygląda następująco
  1. <?php
  2.  
  3. <table border=1 width=&#092;"174px\" cellspacing=0 cellpadding=1 class=\"noborders\">
  4. <tr>
  5.  <td class=&#092;"colorslr\">
  6.  <div id=&#092;"menu_gora\">.:: MENU ::.
  7.  </div>
  8.  </td>
  9. </tr>
  10. <tr>
  11. <td class=&#092;"all_borders\">
  12. <div id=&#092;"menu\">
  13. <a href=&#092;"dane1.php\" class=\"menu\">DANE 1</a><br>
  14. <a href=&#092;"dane2.php\" class=\"menu\">DANE 2</a><br>
  15. <a href=&#092;"dane3.php\" class=\"menu\">DANE 3</a><br>
  16.  </div>
  17. </td>
  18. </tr>
  19. </table>
  20.  
  21. ?>

Problem jest w tym, że po wyświetleniu strony index.php link DANE 1 pokazuje adres http://www.mojastrona.pl/dane1.php a po przejściu do dowolnego podkatalogu pokazuje np http://mojastrona.pl/glowna/left/dane1.php - czyli dodaje tą wredną, perfidną, podfłą ścieżkę (nienawidze jej!). Pokazuje tym samym inny adres. Nie moge zrobić tego, co proponuje shizo bo wtedy adres DANE 1 na stronie głównej (index.php) pokazuje inną lokalizację.
Jeśli ktoś jest na tyle fanatyczny, żeby zamiast iść na spacer w sobotę siedzi przed kompem to zapraszam.
PS: Jak ktoś chce to mogę naewt całość spakować i opchnąć mailem.

Uff.... ale sie spisałem

Zmoderowane przez: seaquest
BBCode
Opisałeś się, opisałeś, a ja i tak musiałem poprawić...
shima
Cytat(exit @ 2004-12-11 10:55:12)
Jeśli ktoś jest na tyle fanatyczny, żeby zamiast iść na spacer w sobotę siedzi przed kompem to zapraszam.

Niektórzy pracują :-(

Niewiele zrozumiałrm z Twoich postów, sformatuj je, bo tak czytanie zabiera zbyt dużo czasu. Co zrozumiałem (popraw mnie, jeżeli coś zrozumiałem źle):
1. Masz stronę podzieloną na sekcje
----------------------------------------------------------------
naglowek |
----------------------------------------------------------------
lewa | centralna |
| |
| |
----------------------------------------------------------------
stopka |
----------------------------------------------------------------

reszta mało istotna.
2. Chcesz, żeby działało dla różnych podkatalogów. Nagłówek i stopka sie nie zmieniają (questionmark.gif) więc moga byc na twardo, nazwę katalogu podaj jako zmienną i includuj w ten sposób

  1. <?php
  2. $nazwa_katalogu='dane';
  3. include('pliki/'.$nazwa_katalogu.'/centralny.php');
  4.  
  5. ?>

a nazwę katalogu przesyłaj np. poprzez GET

PS. I formatuj kod!
exit
Ha, ja też jestem w robocie:-(

Dobrze mnie zrozumiałeś z tymi sekcjami shima.
Tylko powiedz jeszcze jak przesłać nazwę katalogu poprzez GET. Może to jest łatwe, ale na razie mój poziom znajomości php (czyli dno, 3 metry mułu i wodorosty na wierzchu ) nie pozwala na zrobienie tego.

Przeformatowałem kod strony, może teraz łatwiej będzie patrzeć.

  1. <html>
  2. <head>
  3. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html\";charset=\"ISO-8859-2\">
  4. <?php include(&#092;"style/main_style.inc\") ?>
  5. <title>Internetowy Serwis Informacyjny</title>
  6. </head>
  7. <body topmargin=0 align=\"center\" bgcolor=white>
  8. <?php include(&#092;"header/naglowek.inc\") ?>
  9. <table width=\"100%\" border=0 cellspacing=0 cellpadding=2>
  10. <tr>
  11. <td align=\"center\" colspan=\"3\">
  12. <?php include(&#092;"header/menu.inc\") ?>
  13. </td>
  14. </tr>
  15. </table>
  16. <table width=\"100%\" border=0 cellspacing=0 cellpadding=2>
  17. <tr align=\"center\">
  18. <td width=\"180px\" valign=\"top\">
  19. <?php include(&#092;"glowna/left/menuleft.inc\") ?>
  20. </td>
  21. <td valign=\"top\">
  22. <?php include(&#092;"glowna/center/aktual.inc\") ?>
  23. </td>
  24. <td width=\"180px\" valign=\"top\">
  25. <?php include(&#092;"glowna/right/events.inc\") ?>
  26. </td>
  27. </tr>
  28. <tr>
  29. <td colspan=\"3\" class=\"fotter\">
  30. <?php include(&#092;"fotter/stopka.inc\") ?>
  31. </td>
  32. </tr>
  33. </table>
  34. </body>
  35. </html>

Plik menuleft.inc, który jest w katalogu glowna/left - wygląda następująco

  1. <?php
  2. <table border=1 width=&#092;"174px\" cellspacing=0 cellpadding=1 class=\"noborders\">
  3. <tr>
  4. <td class=&#092;"colorslr\">
  5. <div id=&#092;"menu_gora\">.:: MENU ::.
  6. </div>
  7. </td>
  8. </tr>
  9. <tr>
  10. <td class=&#092;"all_borders\">
  11. <div id=&#092;"menu\">
  12. <a href=&#092;"dane1.php\" class=\"menu\">DANE 1</a><br>
  13. <a href=&#092;"dane2.php\" class=\"menu\">DANE 2</a><br>
  14. <a href=&#092;"dane3.php\" class=\"menu\">DANE 3</a><br>
  15. </div>
  16. </td>
  17. </tr>
  18. </table>
  19. ?>


Acha gdybyś mógł jeszcze wyjaśnić mi linijkę

include('pliki/'.$nazwa_katalogu.'/centralny.php');

z tego co wiem to kropka służy do sklejania ciągów. Wydaje mi się, że jest to ścieżka dostępu do katalogu, tylko co oznacza nazwa ‘pliki/’ i dlaczego jest w tych apostrofach. Czy jest to nazwa mojego głównego katalogu na serwerze czy coś z zupełnie innej beczki.

Acha x2, żebym nie zapomniał, co masz na myśli mówiąc „formatuj kod” – copyright by shima;-)
shima
Cytat
Tylko powiedz jeszcze jak przesłać nazwę katalogu poprzez GET

W linku. Jeżeli chcesz ładowac różne sekcje to najlepiej zrobić to tak:
  1. <?php
  2. if (!isset($_GET['sekcja']) //jeśli zmienna sekcja z tablicy GET nie jest ustawiona
  3. include('jakas_stala_sciezka_w_ktorej_sa_wszystkie_sekcje/sekcja_domyslna/plik_centralny.php'); //zainkluduj to
  4. else //a może jest ustawiona
  5. include('jakas_stala_sciezka_w_ktorej_sa_wszystkie_sekcje/'.$_GET['sekcja'].'/plik_centralny.php'); //załącz żądaną sekcję
  6.  
  7. ?>

a przesłanie w linku:
http://standardowa_sciezka/plik_w_ktorym_i...adowana<?php
Czyli to:
Cytat
  1. <?php
  2. include(&#092;"glowna/center/aktual.inc\")
  3. ?>

mogłoby wyglądać
  1. <?php
  2. if (!isset($_GET['sekcja'])
  3. include(&#092;"glowna/center/aktual.inc\");
  4. else 
  5. include(&#092;"glowna/'.$_GET['sekcja'].'/aktual.inc\");
  6.  
  7. ?>


a to:
Cytat
  1. <?php
  2. <a href=&#092;"dane1.php\" class=\"menu\">DANE 1</a><br>
  3. <a href=&#092;"dane2.php\" class=\"menu\">DANE 2</a><br>
  4. <a href=&#092;"dane3.php\" class=\"menu\">DANE 3</a><br>
  5.  
  6. ?>

tak:
  1. <?php
  2. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 1</a><br>
  3. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 2</a><br>
  4. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 3</a><br>
  5.  
  6. ?>

Oczywiście musisz to przetrawić, zmienić nazwy zmiennych, sprawdzić literówki etc.
Cytat
Acha gdybyś mógł jeszcze wyjaśnić mi linijkę

include('pliki/'.$nazwa_katalogu.'/centralny.php');

jw. zamiast ładować na stałe ten sam katalog ładuję żadany, a jego nazwa siedzi w zmiennej $nazwa_katalogu

Cytat
Wydaje mi się, że jest to ścieżka dostępu do katalogu, tylko co oznacza nazwa ‘pliki/’ i dlaczego jest w tych apostrofach. Czy jest to nazwa mojego głównego katalogu na serwerze czy coś z zupełnie innej beczki.

Dokładnie jak piszesz, a w apostrofach, bo podwójne "uszy" powodują, że string jest parsowany, a pojedyncze - nie. Możesz zamienić na podwójne, też będzie działać.

Cytat
co masz na myśli mówiąc „formatuj kod”


pisz tak, zeby było łatwo czytać
exit
No to dałeś mi zadanie na niedziele! W poniedziałek okaże się czy dałem radę czy nie.
Wielkie dzięki za podpowiedzi.
Jak by mmi nie szło to jeszcze bede pisał.
THX 4 ALL.
Speedy
Witam.
W Waszą dyskusję zbytnio się nie zgłebiałem. Wiem , że o chodzi o poprawne wyświetlanie i odczytywanie danych (chyba) .

W związku z tym również dorzucę swój mały wkład winksmiley.jpg

Następujący kod :

  1. <?php
  2. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 1</a><br>
  3. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 2</a><br>
  4. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 3</a><br>
  5.  
  6. ?>


Powinien wyglądać tak :

  1. <?php
  2. <a href=\"index.php?sekcja=dane1\" class=\"menu\">DANE 1</a><br>
  3. <a href=\"index.php?sekcja=dane1\" class=\"menu\">DANE 2</a><br>
  4. <a href=\"index.php?sekcja=dane1\" class=\"menu\">DANE 3</a><br>';
  5.  
  6. ?>


lub ewentualnie tak :

  1. <?php
  2. print &#092;"
  3. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 1</a><br>
  4. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 2</a><br>
  5. <a href=&#092;"index.php?sekcja=dane1\" class=\"menu\">DANE 3</a><br>\";
  6.  
  7. ?>


Aczkolwiek nie wiem, jak to jest skoordynowane z całością , więc może i dobrze smile.gif .

Pozdrawiam .
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.