Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z include
Forum PHP.pl > Forum > Przedszkole
ichu
Mam następujący problem. Napisałem funkcję o nazwie tabela(arg1, arg2, arg3, arg4), który pobiera odpowiednie zmienne, tablicę i umieszcza to wszystko w odpowiednio skonstruowanej tabeli. Ma to być coś na kształt rozkładu jazdy - dla każdego przystanku jest inny zestaw danych w osobnym pliku.

Chciałbym, aby każdy przystanek wywoływany był tylko za pomocą jednego pliku rozklad.php z odpowiednio dodaną zmienną do adresu, np: rozklad.php?np=mba00

By to osiągnąć, napisałem funkcję (nie wiem czy jest to poprawne rozwiązanie, ale działa)

  1. <?php
  2. function rozklad($np)
  3. {
  4. include("przystanki/".$np.".php");
  5. }
  6. echo rozklad($np);
  7. ?>


Zmienna $np przechowuje adres osobnego pliku, który zawiera instrukcję wywołującą funkcję tabela z odpowiednimi argumentami.
Zawartość pliku mba00.php:

  1. <?
  2. echo tabela($kr1, $tam, $bkwp, $lb);
  3. ?>


Problem tylko w tym, że funkcja prawdopodobnie nie jest wywoływana, gdyż nie wyświetla się żądana tabela. Gdy do pliku rozklad.php wstawię:

  1. <?
  2. echo tabela($kr1, $tam, $bkwp, $lb);
  3. ?>


zamiast

  1. <?
  2. echo rozklad($np);
  3. ?>

Wówczas wszystko jest ok, tabela jest wyświetlana. Pomocy!

Co ciekawe, gdy usunąłem argumenty w wyołaniu funkcji tabela() w pliku mba00.php, wówczas wywaliło błąd o braku argumentów. Gdy je z powrotem wstawiłem, tabela jednak nie wyświetliła się sad.gif

Dopisane:
Odkryłem jeszcze jeden problem: mianowicie gdy chcę wywołać drugi raz funkcję tabela() już z innymi argumentami, wywala taki błąd: Fatal error: Cannot redeclare rzad1() (previously declared in c:\usr\krasnal\www\rozklad\engine.php:53)
plisek
po pierwsze podaj kod, jak zadeklarowałeś funcję tabela??
deklarując ją z kilkoma agumrtami musisz podac wszystkie przy wywołaniu jej.
np
tabela (arg1, arg2)

przy wywołaniu używasz tabela (wart arg1, wart arg2)
a nie tabela(wart1)

mozesz sie zabezpieczyć w deklaracji funkcji przypisać wartości domyslne do arg1 czy arg2, wtdy przy wywolaniu funcji wystarczy podać jeden argument.

triche zamotałem, ale mam nadzieje ze zrozumiesz.

pozdr
ichu
Racja, powinienem wkleić kod funkcji tabela(). Już nadrabiam brak:

  1. <?php
  2. function tabela($arg1, $arg2, $arg3, $arg4)
  3. {
  4. function rzad1($arg1, $arg2, $arg3, $arg4)
  5. {
  6. echo("<td>$arg1</td><td>$arg2</td>");
  7. for($i=1; $i<=10; $i++)
  8. {
  9. echo("<td>${$arg3[$i]}</td>");
  10. }
  11. echo("</tr><tr><td colspan="12" rowspan="1">$arg4</td></tr>");
  12. }
  13. function rzad2($arg1, $arg2, $arg3, $arg4)
  14. {
  15. echo("<td colspan=1 rowspan=2>$arg1</td><td colspan="1" rowspan="2">$arg2</td>");
  16. for($i=1; $i<=10; $i++)
  17. {
  18. echo("<td>${arg3[$i]}&nbsp;</td>");
  19. }
  20. echo("</tr><tr>");
  21. for($i=1; $i<=10; $i++)
  22. {
  23. echo("<td>${arg3[$i+10]}&nbsp;</td>");
  24. }
  25. echo("</tr><tr><td colspan="12" rowspan="1">$arg4</td></tr>");
  26. }
  27. function rzad3($arg1, $arg2, $arg3, $arg4)
  28. {
  29. echo("<td colspan=1 rowspan=3>$arg1</td><td colspan=1 rowspan=3>$arg2</td>");
  30. for($i=1; $i<=10; $i++)
  31. {
  32. echo("<td>${arg3[$i]}&nbsp;</td>");
  33. }
  34. echo("</tr><tr>");
  35. for($i=1; $i<=10; $i++)
  36. {
  37. echo("<td>${arg3[$i+10]}&nbsp;</td>");
  38. }
  39. echo("</tr><tr>");
  40. for($i=1; $i<=10; $i++)
  41. {
  42. echo("<td>${arg3[$i+20]}&nbsp;</td>");
  43. }
  44. echo("</tr><tr><td colspan="12" rowspan="1">$arg4</td></tr>");
  45. }
  46. $ile=count($arg3);
  47. if ($ile <= 10)
  48. {
  49. echo rzad1($arg1, $arg2, $arg3, $arg4);
  50. }
  51. else if ($ile >10 && $ile <=20)
  52. {
  53. echo rzad2($arg1, $arg2, $arg3, $arg4);
  54. }
  55. else if ($ile >20 && $ile <=30)
  56. {
  57. echo rzad3($arg1, $arg2, $arg3, $arg4);
  58. }
  59. }
  60. ?>
gilbo
Funkcje rzad1...3 muszą znajdować się poza funkcją tabela ponieważ przy każdym wywołaniu funkcji tabela deklarujesz od nowa te 3 funkcje co owocuje błędem.

Może spróbuj zrobić tak, że plik mba00.php będzie wyglądał tak:
  1. <?php
  2. $tabela = tabela($kr1, $tam, $bkwp, $lb);
  3. ?>


a strona:
  1. <?php
  2. function rozklad($np){
  3. include('przystanki/'.$np.'.php');
  4. return $tabela;
  5. }
  6. echo rozklad($np);?>


Pozatym zdecyduj się czy robisz cudzysłowia (") czy apostrofy (') bo wywalanie zwykłej zmiennej ("coś".$zmienna."cos") z cudzysłowia jest bez sensu...

Pozdrawiam
ichu
Zastosowałem się do Twoich wskazówek, i teraz mogę wywoływac funkcję tabela() kilka razy pod rząd z różnymi argumentami smile.gif O to chodziło!
Pozostaje jeszcze problem wywołania tej funkcji:
  1. <?
  2. function rozklad($np)
  3. {
  4. include('przystanki/'.$np.'.php');
  5. }
  6. $np = $_GET['np'];
  7. echo rozklad($np);
  8. ?>


Dodałem $np = $_GET['np']; ale mimo to tabela nie jest wyświetlana gdy użyję adresu "rozklad.php?np=mba00". Plik mba00.php jest wczytywany, gdy np. usunę jakiś argument wyświetlany jest komunikat błędu, ale gdy podam wszystkie potrzebne argumenty, tabela nie jest wyświetlana.
Gość_Norbert_*
  1. <?php
  2. function rozklad($np)
  3. {
  4. include("przystanki/".$np.".php");
  5. }
  6. echo rozklad($np);
  7. ?>


Funkcja rozklad() nie zwraca zadnej wartosci, dlatego nic nie zostaje wyswietlone przy tym wywolywaniu funkcji: echo rozklad($np);

Nie wiem jak wyglada plik przystanki/XXX.php, dlatego nie moge podac dokladnie rozwiazania, ale dane ktore chcesz wyswietlic w taki sposob musisz zwrocic przez funkcje za pomoca return

  1. <?php
  2. function rozklad($np)
  3. {
  4. include("przystanki/".$np.".php");
  5. return $WYNIK;
  6. }
  7. echo rozklad($np);
  8. ?>
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.