Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja w funkcji - jak ?
Forum PHP.pl > Forum > PHP
kwiaciarnia
Witam

Mam plan zajec i chce zrobic zeby dany dzien tygodnia i aktualne zajecia byly podswietlane na inny kolor. mam taki kod :

  1. <?php
  2. function podswietlenie_czasowe( $aktualny_czas ) 
  3. {
  4. // ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH ZACZYNAJA SIE WYKLADY
  5. $godzina_od[1] = mktime(8, 0, 0, date("M"), date("d"), date("Y"));
  6. $godzina_od[2] = mktime(9, 40, 0, date("M"), date("d"), date("Y"));
  7. $godzina_od[3] = mktime(11, 20, 0, date("M"), date("d"), date("Y"));
  8. $godzina_od[4] = mktime(13, 0, 0, date("M"), date("d"), date("Y"));
  9. $godzina_od[5] = mktime(14, 40, 0, date("M"), date("d"), date("Y"));
  10. // ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH KONCZA SIE WYKLADY
  11. $godzina_do[1] = mktime(9, 30, 0, date("M"), date("d"), date("Y"));
  12. $godzina_do[2] = mktime(11, 10, 0, date("M"), date("d"), date("Y"));
  13. $godzina_do[3] = mktime(12, 50, 0, date("M"), date("d"), date("Y"));
  14. $godzina_do[4] = mktime(14, 30, 0, date("M"), date("d"), date("Y"));
  15. $godzina_do[5] = mktime(16, 10, 0, date("M"), date("d"), date("Y"));
  16.  
  17.  
  18. if (( $godzina_od[1] <= $aktualny ) && ( $aktualny <= $godzina_do[1] ))
  19. {
  20. $klasa = '"td_aktualne_zajecia"';
  21. return $klasa;
  22. }
  23. }
  24. function podswietlenie_dnia($poniedzialek,$wtorek,$sroda,$czwartek,$piatek)
  25. {
  26. // ZMIENNA ODPOWIADAJACA ZA AKTUALNA GODZINE
  27. $aktualny = mktime(date("H"),date("i"),0, date("M"), date("d"), date("Y"));
  28. // WYSWIETLANIE PLANU ZAJEC
  29. echo "
  30. <table class=\"table\" border=\"1\">
  31. <tr>
  32. <td class=\"td_naglowkowa\" colspan=\"6\"> Plan zajesc grupy 6DD - Tydzien Parzysty</td>
  33. </tr>
  34. <tr>
  35. <td class=\"td_dzien\">Godz.</td><td class=\"td_dzien\">Poniedzialek</td><td class=\"td_dzien\">Wtorek</td><td class=\"td_dzien\">Sroda</td><td class=\"td_dzien\">Czartek</td><td class=\"td_dzien\">Piatek</td>
  36. </tr>
  37. <td class=\"td_czas\">8<sup>00</sup> - 9<sup>30</sup></td>
  38. <td class=\"".$poniedzialek."\"></td>
  39. <td class=";
  40. podswietlenie_czasowe( "$aktualny" ); 
  41. echo "></td>
  42. <td class=\"".$sroda."\">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  43. <td class=\"".$czwartek."\"></td>
  44. <td class=\"".$piatek."\">Sztuczna inteligencja (W)<br />dr inż. Jarosław Śmieja / mgr inż. Witold Brandys<br />AULA WSTI</td>
  45. </tr>
  46. <tr>
  47. <td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
  48. <td class=\"".$poniedzialek."\">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
  49. ...
  50. ...
  51. ...
  52. ?>


Wiem ze problem lezy w wywolaniu drugiej funkcji. Nigdy nie robilem funkcji ktora wywoluje inna wiec nie wiem jak mam to zrobic. PRosze o pomoc
.radex
w czym problem?

  1. <?php
  2. function a(){
  3. echo 'blablabla';
  4. }
  5. function b(){
  6.  a();
  7. }
  8. b();
  9. ?>
kwiaciarnia
wydaje mi sie ze zrobilem tak jak mowisz a mimo to nie chce dzialac
user2
W 2 funkcji, zamiast:
  1. <?php
  2. podswietlenie_czasowe( "$aktualny" );
  3. ?>

daj:
  1. <?php
  2. echo podswietlenie_czasowe( "$aktualny" );
  3. ?>


Drugi sposób to w pierwszej dać zamiast
  1. <?php
  2. return $klasa;
  3. ?>

to
  1. <?php
  2. echo $klasa;
  3. ?>
kwiaciarnia
zrobilem oba sposoby i dalej nie dziala :/ nie mam pojecia co jest nie tak
user2
Ale mam nadzieje, że nie oba na raz smile.gif

Spróbuj jeszcze
podswietlenie_czasowe( "$aktualny" );
zamienić na
podswietlenie_czasowe($aktualny);

Poza tym sugerowałbym używać pierwszego z w.w. sposobów, bo to co masz w kodzie na 100% jest źle, no i żeby trzymać się jakiejś koncepcji smile.gif
kwiaciarnia
probowalem najpierw pierwszym sposobem a pozniej drugim i nic, teraz sprawdzalem bez cudzyslowia i dalej nic, sprawdzalem tez z apostrofami i tez nie dziala :/
user2
Hmm... może wrzuć cały kod to spróbuję pomóc, a na żywym organiźmie pracuje się najlepiej smile.gif
kwiaciarnia
podam linka bo wyskakuje ze post jest za dlugi :/

www.bmjftp.republika.pl/kod.txt
user2
Cytat
Ale mam nadzieje, że nie oba na raz

Przeca mówiłem, a w Twoim kodzie jak na złość zmiksowałeś oba rozwiązania smile.gif

Zatem powinno być:

Kod
return $klasa;


a nie

Kod
echo $klasa;


Zrobiłem tak i działa "komunikacja" między funkcjami działa, ale musisz pamiętać o tym ifie w pierwszej funkcji i, że on teraz nie zwróci nic, bo "zajęć teraz nie ma" wg Twojego planu smile.gif Inaczej mówiąc jeśli wyłączysz if w tej chwili wszystko powinno działać. Daj znać czy jest ok.
kwiaciarnia
ok dzieki, teraz dziala.

ale powstal nowy blad... oO jak juz zastosuje ta druga funkcje w dla wszystkich dni tygodnia to wyrozni wszystkie przedmiotu w tygodniu o danej godzinie ;o moze ktos ma jakis pomysl ?
user2
Sugerowałbym zrobić tak:
1) w funkcji podswietlenie_czasowe dodajesz kolejny argument np. $dzien_tyg
2) wewnątrz tej funkcji zmieniasz ifa na
Kod
if (( $godzina_od[1] <= $aktualny ) && ( $aktualny <= $godzina_do[1] ))
        {

        if($dzien_tyg == date("w", mktime(0,0,0,6,10,2006))){
            $klasa = '"td_aktualne_zajecia"';
            return $klasa;
}
}

3) w kodzie (w tabelce) tam gdzie masz odwołanie do funkcji musisz dopisać, że ma kolejny argument czyli będzie to wyglądać tak:
Kod
echo podswietlenie_czasowe($aktualny,TUTAJ NUMER DNIA);

TUTAJ NUMER DNIA - numer zgodny z rozpiską od "0" (Niedziela) do "6" (Sobota)
Powinno działać, ale pora nie sprzyja logicznemu myśleniu, więc jak coś to pisz winksmiley.jpg
kwiaciarnia
zrobilem tak jak mowiles a przynajmniej staralem sie :/ i nie dziala :/ rozbudowalem to troszke i gdy funkcja bedzie wywolywana dla pierwszych zajec tj 8.00 - 9.30 to dziala wszystko dobrze ale gdy wywolam funkcje juz dla zajec pierwszych i drugich to funkcja zaczyna sie sypac i pokazuje nie prawdziwe dane.

Dla godziny np. 8.48 i wywolaniu funkcji dla zajec pierwszych i drugich funckcja zwroci ze aktualnie trwaja oba zajecia naraz :/
Dla godziny np.10.48 i wywolaniu funkcji dla zajec pierwszych i drugich funkcja zwraca ze aktualnie nie trwaja zadne zajecia :/

troszke juz siedze i nie umiem tego zrobic :/ pomozesz dalej ?

kod zamieszczam pod adresem:
www.bmjftp.republika.pl/kod.txt
user2
Postaram się pomóc, ale jutro dam odpowiedź, bo dzisiaj mam jeszcze sporo roboty.

Udało się. Ale korzystanie z dwóch forum na raz wprowadziło trochę zamieszania w kodzie winksmiley.jpg

Poniżej kod, który powienien działać ok. Wywaliłem for-a, którego wstawiłeś tam wg rozpiski z drugiego forum, bo był nie potrzebny po wprowadzeniu 3 parametru w funkcji - $g.
Więcej w sumie technicznie nie zmieniałem. Jedynie merytorycznie, bo tak było łatwiej przy testowaniu smile.gif

Daj znać czy działa.
Pozdrawiam

  1. <?php
  2.  
  3.  
  4. function podswietlenie_czasowe( $aktualny_czas, $dzien_tyg, $g) 
  5. {
  6. // ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH ZACZYNAJA SIE WYKLADY
  7. $godzina_od[1] = mktime(8, 0, 0, date("M"), date("d"), date("Y"));
  8. $godzina_od[2] = mktime(9, 40, 0, date("M"), date("d"), date("Y"));
  9. $godzina_od[3] = mktime(11, 20, 0, date("M"), date("d"), date("Y"));
  10. $godzina_od[4] = mktime(13, 0, 0, date("M"), date("d"), date("Y"));
  11. $godzina_od[5] = mktime(14, 40, 0, date("M"), date("d"), date("Y"));
  12. // ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH KONCZA SIE WYKLADY
  13. $godzina_do[1] = mktime(9, 30, 0, date("M"), date("d"), date("Y"));
  14. $godzina_do[2] = mktime(11, 10, 0, date("M"), date("d"), date("Y"));
  15. $godzina_do[3] = mktime(12, 50, 0, date("M"), date("d"), date("Y"));
  16. $godzina_do[4] = mktime(14, 30, 0, date("M"), date("d"), date("Y"));
  17. $godzina_do[5] = mktime(16, 10, 0, date("M"), date("d"), date("Y"));
  18.  
  19.  
  20.  
  21. if (( $godzina_od[$g] <= $aktualny_czas ) && ( $aktualny_czas <= $godzina_do[$g] ))
  22. {
  23. if( $dzien_tyg == date("w"))
  24. {
  25. $klasa = '"td_aktualne_zajecia"';
  26. return $klasa;
  27. }
  28. else
  29. {
  30. $klasa = '"td_plan"';
  31. return $klasa;
  32. }
  33. }
  34. else
  35. {
  36. if( $dzien_tyg == date("w"))
  37. {
  38. $klasa = '"td_plan_aktualny"';
  39. return $klasa;
  40. }
  41.  
  42. }
  43.  
  44. }
  45. function podswietlenie_dnia($poniedzialek,$wtorek,$sroda,$czwartek,$piatek)
  46. {
  47. // ZMIENNA ODPOWIADAJACA ZA AKTUALNA GODZINE
  48. $aktualny = mktime(date("H"),date("i"),0, date("M"), date("d"), date("Y"));
  49. // WYSWIETLANIE PLANU ZAJEC
  50. echo "
  51. <table class=\"table\" border=\"1\">
  52. <tr>
  53. <td class=\"td_naglowkowa\" colspan=\"6\"> Plan zajesc grupy 6DD - Tydzien Parzysty</td>
  54. </tr>
  55. <tr>
  56. <td class=\"td_dzien\">Godz.</td><td class=\"td_dzien\">Poniedzialek</td><td class=\"td_dzien\">Wtorek</td><td class=\"td_dzien\">Sroda</td><td class=\"td_dzien\">Czartek</td><td class=\"td_dzien\">Piatek</td>
  57. </tr>
  58. <td class=\"td_czas\">8<sup>00</sup> - 9<sup>30</sup></td>
  59. <td class=";
  60. echo podswietlenie_czasowe($aktualny,1,1); 
  61. echo "></td>
  62. <td class=";
  63. echo podswietlenie_czasowe($aktualny,2,1); 
  64. echo "></td>
  65. <td class=";
  66. echo podswietlenie_czasowe($aktualny,3,1);
  67. echo ">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  68. <td class=";
  69. echo podswietlenie_czasowe($aktualny,4,1);
  70. echo "></td>
  71. <td class=";
  72. echo podswietlenie_czasowe($aktualny,5,1);
  73. echo ">Sztuczna inteligencja (W)<br />dr inż. Jarosław ?mieja / mgr inż. Witold Brandys<br />AULA WSTI</td>
  74. </tr>
  75. <tr>
  76. <td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
  77. <td class=";
  78. echo podswietlenie_czasowe($aktualny,1,2);
  79. echo ">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
  80. <td class=";
  81. echo podswietlenie_czasowe($aktualny,2,2);
  82. echo "></td>
  83. <td class=";
  84. echo podswietlenie_czasowe($aktualny,3,2);
  85. echo ">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  86. <td class=";
  87. echo podswietlenie_czasowe($aktualny,4,2);
  88. echo ">Systemy ekspertowe (lab)<br />dr Katarzyna Trynda<br />ZACH 5p</td>
  89. <td class=";
  90. echo podswietlenie_czasowe($aktualny,5,2);
  91. echo ">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>
  92. </tr>
  93. <tr>
  94. <td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
  95. <td class=";
  96. echo podswietlenie_czasowe($aktualny,1,3);
  97. echo ">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
  98. <td class=";
  99. echo podswietlenie_czasowe($aktualny,2,3);
  100. echo "></td>
  101. <td class=";
  102. echo podswietlenie_czasowe($aktualny,3,3);
  103. echo ">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  104. <td class=";
  105. echo podswietlenie_czasowe($aktualny,4,3);
  106. echo ">Systemy ekspertowe (lab)<br />dr Katarzyna Trynda<br />ZACH 5p</td>
  107. <td class=";
  108. echo podswietlenie_czasowe($aktualny,5,3);
  109. echo ">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>
  110. </tr>
  111. <tr>
  112. <td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
  113. <td class=";
  114. echo podswietlenie_czasowe($aktualny,1,4);
  115. echo ">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
  116. <td class=";
  117. echo podswietlenie_czasowe($aktualny,2,4);
  118. echo "></td>
  119. <td class=";
  120. echo podswietlenie_czasowe($aktualny,3,4);
  121. echo ">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  122. <td class=";
  123. echo podswietlenie_czasowe($aktualny,4,4);
  124. echo ">Systemy ekspertowe (lab)<br />dr Katarzyna Trynda<br />ZACH 5p</td>
  125. <td class=";
  126. echo podswietlenie_czasowe($aktualny,5,4);
  127. echo ">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>
  128. </tr>
  129. <tr>
  130. <td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
  131. <td class=";
  132. echo podswietlenie_czasowe($aktualny,1,5);
  133. echo ">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
  134. <td class=";
  135. echo podswietlenie_czasowe($aktualny,2,5);
  136. echo "></td>
  137. <td class=";
  138. echo podswietlenie_czasowe($aktualny,3,5);
  139. echo ">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
  140. <td class=";
  141. echo podswietlenie_czasowe($aktualny,4,5);
  142. echo ">Systemy ekspertowe (lab)<br />dr Katarzyna Trynda<br />ZACH 5p</td>
  143. <td class=";
  144. echo podswietlenie_czasowe($aktualny,5,5);
  145. echo ">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>
  146. </tr>
  147. </table>
  148. <a href=\"index.php?tydzien=nieparzysty\">Tydzien nieparzysty</a><br />
  149. "; 
  150. }
  151. // KONIEC FUNKCJI
  152. $ktory_dzien = date("w");
  153. switch( $ktory_dzien )
  154. {
  155. case '1':
  156. podswietlenie_dnia('td_plan_aktualny','td_plan','td_plan','td_plan','td_plan');
  157. break;
  158. case '2':
  159. podswietlenie_dnia('td_plan','td_plan_aktualny','td_plan','td_plan','td_plan');
  160. break;
  161. case '3':
  162. podswietlenie_dnia('td_plan','td_plan','td_plan_aktualny','td_plan','td_plan');
  163. break;
  164. case '4':
  165. podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan_aktualny','td_plan');
  166. break;
  167. case '5':
  168. podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan','td_plan_aktualny');
  169. break;
  170. default:
  171. podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan','td_plan');  
  172. }
  173. ?>
kwiaciarnia
Wielkie dzieki! wszystko dziala poprawnie tzn nie bylo klasy dla reszty dni o tych samych godzinach ale juz zrobilem, jeszcze raz dziekuje za pomoc smile.gif
user2
Nie ma problemu. Cieszę się, że pomogłem smile.gif
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.