Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Menu w jednym pliku
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
cpa.php:
  1. $cpa = $_GET['cpa'];
  2.  
  3. switch ($cpa) {
  4. case "tutoriale":
  5. include("./cpa/index.php");
  6. break;
  7. case "admin":
  8. include("./cpa/admin.php");
  9. break;
  10. case "dodaj_tut":
  11. include("./cpa/functions.php"); // functions.php?id=3
  12. break;
  13. case "edytuj_tut":
  14. include("./cpa/functions.php"); // functions.php?id=5
  15. break;
  16. case "kategorie":
  17. include("./cpa/kategorie.php");
  18. break;
  19. case "dodaj_kat":
  20. include("./cpa/functions.php"); // functions.php?id=9
  21. break;
  22. case "edytuj_kat":
  23. include("./cpa/functions.php"); // functions.php?id=11
  24. break;
  25. case "ustawienia":
  26. include("./cpa/functions.php"); // functions.php?id=1
  27. break;
  28. case "szukaj":
  29. include("./cpa/szukaj.php");
  30. break;
  31. case "pokaz":
  32. include("./cpa/pokaz.php");
  33. break;
  34. case "wyloguj":
  35. include("./cpa/cpa.php"); // admin.php?id=5
  36. break;
  37. default:
  38. echo "<p class='tekst'>Brak uprawnień ;)<br />Wróć do <a href='./cpa.php?cpa=tutoriale'>Strony Głównej</a>.</p>";
  39. }

Menu plików w katalogu [cpa]:
  1. echo "<a href='./cpa.php?cpa=tutoriale'>Tutoriale</a>
  2. <a href='./cpa.php?cpa=edytuj_tut'>Edytuj tutoriale</a>
  3. <a href='./cpa.php?cpa=dodaj_tut'>Dodaj tutorial</a>
  4. <a href='./cpa.php?cpa=kategorie'>Kategorie</a>
  5. <a href='./cpa.php?cpa=edytuj_kat'>Edytuj kategorie</a>
  6. <a href='./cpa.php?cpa=dodaj_kat'>Dodaj kategorię</a>
  7. <a href='./cpa.php?cpa=ustawienia'>Ustawienia</a>
  8. <a href='./cpa.php?cpa=szukaj'>Szukaj</a>
  9. <a href='./cpa.php?cpa=admin'>Wyloguj</a>";

Problemem moim jest dołączenie pliku functions.php. W nim mam zawarte funkcje, które do tej pory wywoływałem jako functions.php?id=1. Oczywiście, nie ma takiego pliku, więc wywala błędy.
Jak przekazać te zmienne w menu?
thomson89
Nie rozumiem zbytnio. Skoro robiłeś functions.php?id=1, to znaczy że z id korzysta jakaś funkcja w tym pliku?

Przypuszczam że miałeś tak:
  1. function funkcja(){
  2. $id = $_GET['id'];
  3. // inne akcje
  4. }


Jeżeli powyższe się zgadza to daj tak:
  1. function funkcja($id){
  2. //inne akcje
  3. }


I wtedy, dołączasz plik do tego cpa.php: require_once('functions.php'); funkcja($_GET['id']);
Kshyhoo
Nie dopisałem tego... w function.php są formularze:
  1. $mid = $_GET['id'];
  2.  
  3. if ($mid == 1) {
  4. $content = "<div class='tabele'>
  5. <form method='post' action='cpa/functions.php?id=2'>
  6. ...
  7. <input type='submit' value='Zapisz ustawienia' class='submit'></td>
  8. </form>
  9. }

Żeby użyć formularza zmiany ustawień, używałem linku:
  1. <a href='./functions.php?id=1'>Ustawienia</a>

jeżeli przechodzę z pliku do pliku, to działa. Ale chcąc zrobić osobne menu i dołączać pliki już nie.
thomson89
zamknij to w funkcje (ten formularz)

  1.  
  2. function formularz($mid){
  3.  
  4. if ($mid == 1) {
  5. $content = "<div class='tabele'>
  6. <p><form method='post' action='cpa/functions.php?id=2'>
  7. ...
  8. <input type='submit' value='Zapisz ustawienia' class='submit'></td>
  9.  
  10. </form>";
  11. }


A plik cpa.php zmodyfikuj:

  1. $cpa = $_GET['cpa'];
  2. require_once('functions.php'); //tu zmienilem
  3.  
  4. switch ($cpa) {
  5. case "tutoriale":
  6. include("./cpa/index.php");
  7. break;
  8. case "admin":
  9. include("./cpa/admin.php");
  10. break;
  11. case "dodaj_tut":
  12. formularz(3); //i tu zmienilem; functions.php?id=3
  13. break;
  14. case "edytuj_tut":
  15. formularz(5); //i tu zmienilem; functions.php?id=5
  16. break;

i analogicznie zmieniasz cały cpa.php
Kshyhoo
Zrobię tak, ale jeszcze jedno pytanie. W pliki function.php przekazywałem dane tak:
  1. $mid = $_GET['id'];
  2.  
  3. if ($mid == 1) {
  4. $content = "<p><form method='post' action='cpa/functions.php?id=2'>
  5. ...
  6. <input type='submit' value='Zapisz ustawienia' class='submit'></form></p>
  7. }
  8.  
  9. if ($mid == 2) {
  10.  
  11. $content = " <p><form method='post' action='cpa/functions.php?id=2'>
  12. ...
  13. <input type='submit' value='Zapisz ustawienia' class='submit'></form></p>
  14. }
  15.  
  16. echo $content ;


Jak teraz zapisać action?
thomson89
Action robisz według danych ze switcha.

Czyli, jeżeli masz wywołać funkcję formularz z parametrem 2, to musisz zobaczyć na switch'a:

  1. case "dodaj_tut":
  2. formularz(2);
  3. break;

z tego wynika, ze action musisz ustawić aby cpa=dodaj_tut
Kshyhoo
Nie zrozumieliśmy się. Zrobiłem tak jak napisałeś, plik funcion.php dołącza się prawidłowo za wyjątkiem jednego: nie wyświetla formularza winksmiley.jpg Miałem tam też menu (robiło się podwójne).
thomson89
musisz w funkcji dopisać return $content a w switchu

case "dodaj_tut":
echo formularz(2);
break;
Kshyhoo
Nie działa, wycina wszystko, nawet z innych stron. Nie kumam tego return chyba.
thomson89
Zmień tą funkcję z pliku functions.php:
  1. function funkcja($mid){
  2. if ($mid == 1) {
  3. $content = "<p><form method='post' action='cpa/functions.php?id=2'>
  4. ...
  5. <input type='submit' value='Zapisz ustawienia' class='submit'></form></p>
  6. }
  7.  
  8. if ($mid == 2) {
  9.  
  10. $content = " <p><form method='post' action='cpa/functions.php?id=2'>
  11. ...
  12. <input type='submit' value='Zapisz ustawienia' class='submit'></form></p>
  13. }
  14.  
  15. //echo $content;
  16. return $content; // <--- tutaj zmieniłem
  17. }


A w pliku cpa.php powinieneś zmienić:
  1. //(...)
  2. case "dodaj_tut":
  3. //include("./cpa/functions.php"); // functions.php?id=3
  4. echo funkcja(3);
  5. break;
  6. case "edytuj_tut":
  7. //include("./cpa/functions.php"); // functions.php?id=5
  8. echo funkcja(5);
  9. break;
  10. //(...)


I powinno dzialać, gdy wpiszesz cpa.php?cpa=dodaj_tut
Kshyhoo
Nie działa (dołącza plik function.php, bo mam dwa menu).
Nie ma innego sposobu dołączenia jak zwykły plik tyle że ze zmienną ?
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.