[PHP] wywolanie funkcji w innej funkcji - jak?

0

witam

chce zrobic plan zajec ktory bedzie wyroznicac aktualny dzien oraz aktualnie trwajace zajecia. ponizej kod:

<?php
function podswietlenie_czasowe( $aktualny_czas ) 
	{
		// ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH ZACZYNAJA SIE WYKLADY
		$godzina_od[1] = mktime(8, 0, 0, date("M"), date("d"), date("Y"));
		$godzina_od[2] = mktime(9, 40, 0, date("M"), date("d"), date("Y"));
		$godzina_od[3] = mktime(11, 20, 0, date("M"), date("d"), date("Y"));
		$godzina_od[4] = mktime(13, 0, 0, date("M"), date("d"), date("Y"));
		$godzina_od[5] = mktime(14, 40, 0, date("M"), date("d"), date("Y"));
		// ZMIENNE ODPOWIADAJACE ZA GODZINY O KTORYCH KONCZA SIE WYKLADY
		$godzina_do[1] = mktime(9, 30, 0, date("M"), date("d"), date("Y"));
		$godzina_do[2] = mktime(11, 10, 0, date("M"), date("d"), date("Y"));
		$godzina_do[3] = mktime(12, 50, 0, date("M"), date("d"), date("Y"));
		$godzina_do[4] = mktime(14, 30, 0, date("M"), date("d"), date("Y"));
		$godzina_do[5] = mktime(16, 10, 0, date("M"), date("d"), date("Y"));

		
		if (( $godzina_od[1] <= $aktualny ) && ( $aktualny <= $godzina_do[1] ))
		{
			$klasa = '"td_aktualne_zajecia"';
			return $klasa;
		}	
	}
function podswietlenie_dnia($poniedzialek,$wtorek,$sroda,$czwartek,$piatek)
	{
		// ZMIENNA ODPOWIADAJACA ZA AKTUALNA GODZINE
		$aktualny = mktime(date("H"),date("i"),0, date("M"), date("d"), date("Y"));
		// WYSWIETLANIE PLANU ZAJEC
		echo "
			<table class=\"table\" border=\"1\">
				<tr>
					<td class=\"td_naglowkowa\" colspan=\"6\"> Plan zajesc grupy 6DD - Tydzien Parzysty</td>
				</tr>
				<tr>
					<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>
				</tr>
					<td class=\"td_czas\">8<sup>00</sup> - 9<sup>30</sup></td>
					<td class=\"".$poniedzialek."\"></td>
					<td class=";
					podswietlenie_czasowe( "$aktualny" ); 
				echo "></td>
					<td class=\"".$sroda."\">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
					<td class=\"".$czwartek."\"></td>
					<td class=\"".$piatek."\">Sztuczna inteligencja (W)<br />dr inż. Jarosław Śmieja / mgr inż. Witold Brandys<br />AULA WSTI</td>				
				</tr>
				<tr>
					<td class=\"td_czas\">9<sup>40</sup> - 11<sup>10</sup></td>
					<td class=\"".$poniedzialek."\">Bezpieczeństwo systemów informatycznych (W)<br />dr inż. Romuald Błaszczyk<br />AULA WSTI</td>
					<td class=\"".$wtorek."\"></td>
					<td class=\"".$sroda."\">Seminarium dyplomowe (p/s)<br />dr inż. Mariusz Boryczka<br />ZACH 5p</td>
					<td class=\"".$czwartek."\">Systemy ekspertowe (lab)<br />dr Katarzyna Trynda<br />ZACH 5p</td>
					<td class=\"".$piatek."\">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>
				</tr>
				<tr>
					<td class=\"td_czas\">11<sup>20</sup> - 12<sup>50</sup></td>
					<td class=\"".$poniedzialek."\">Systemy ekspertowe (W)<br />dr Katarzyna Trynda<br />AULA WSTI</td>
					<td class=\"".$wtorek."\">Seminarium dyplomowe (p/s)<br />dr inż. Hafed Zghidi<br />PD 4p</td>
					<td class=\"".$sroda."\">Seminarium dyplomowe (p/s)<br />dr Ireneusz Gościniak<br />ZACH 5p</td>
					<td class=\"".$czwartek."\">Technologie sieci rozległych (lab)<br />mgr inż. Arkadiusz Banasik<br />PD 4p</td>
					<td class=\"".$piatek."\">Pracownia dyplomowa (p/s)<br />mgr Arkadiusz Sacewicz<br />PN 4p</td>				
				</tr>
				<tr>
					<td class=\"td_czas\">13<sup>00</sup> - 14<sup>30</sup></td>
					<td class=\"".$poniedzialek."\">Seminarium dyplomowe (p/s)<br />dr inż. Jarosław Karcewicz / dr Katarzyna Trynda<br />163A / 164 parter </td>
					<td class=\"".$wtorek."\">Seminarium dyplomowe (p/s)<br />dr inż. Hafed Zghidi<br />PD 4p</td>
					<td class=\"".$sroda."\"></td>
					<td class=\"".$czwartek."\">Technologie sieci rozległych (lab)<br />mgr inż. Arkadiusz Banasik<br />PD 4p</td>
					<td class=\"".$piatek."\">Sztuczna inteligencja (lab)<br />dr inż. Jarosław Śmieja/mgr inż. Witold Brandys<br />PD 4p</td>				
				</tr>
				<tr>
					<td class=\"td_czas\">14<sup>40</sup> - 16<sup>10</sup></td>
					<td class=\"".$poniedzialek."\">Seminarium dyplomowe (p/s)<br />dr inż. Jarosław Karcewicz / dr Katarzyna Trynda<br />163A / 164 parter </td>
					<td class=\"".$wtorek."\"></td>
					<td class=\"".$sroda."\"></td>
					<td class=\"".$czwartek."\"></td>
					<td class=\"".$piatek."\">Budowa i projektowanie aplikacji multimedialnych (lab)<br />mgr inż. Stanisław Widuch<br />PD 5p</td>				
				</tr>				
			</table>
			<a href=\"index.php?tydzien=nieparzysty\">Tydzien nieparzysty</a><br />
		"; 
    }
// KONIEC FUNKCJI
$ktory_dzien = date("w");
switch( $ktory_dzien )
    {
        case '1':
            podswietlenie_dnia('td_plan_aktualny','td_plan','td_plan','td_plan','td_plan');	                      
            break;
        case '2':
            podswietlenie_dnia('td_plan','td_plan_aktualny','td_plan','td_plan','td_plan');		
            break;
        case '3':
            podswietlenie_dnia('td_plan','td_plan','td_plan_aktualny','td_plan','td_plan');	
            break;
        case '4':
            podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan_aktualny','td_plan');	
            break;
        case '5':
            podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan','td_plan_aktualny');	
            break;
        default:
            podswietlenie_dnia('td_plan','td_plan','td_plan','td_plan','td_plan');		   
    }
?>

Wiem ze problem tkwi w wyolaniu drugiej funkcji ( wewnatrz innej ) Nigdy nie robilem takiego przypadku i nie mam pojecia jak to zrobic. Prosze o pomoc :)

0

Tzn. skąd to wiesz ? Apache wywala jakiś błąd, czy skrypt źle działa.

W pierwszej funkcji sprawdzasz tylko zmienne od[1] i do[1] reszte olewając.
Wstaw tam pętle:

for $i:=1;$i<6;$i++ {
if (( $godzina_od[$i] <= $aktualny ) && ( $aktualny <= $godzina_do[$i] ))
                {
                        $klasa = '"td_aktualne_zajecia"';
                        return $klasa;
                }   
}

Dalej podswietlenie_czasowe( "$aktualny" ); wstawiłeś cudzysłów co znaczy że do funkcji przekazujesz string "$aktualny" a nie wartość która jest pod tą zmienną. I w ogóle co ta funkcja robi w tamtym miejscu. Jakbyś dał przed nią echo to jeszcze.
A wywoływanie funkcji w innej nie powinno sprawiać błędów.

0

zrobilem tak jak mowiles. na poczatku dzialalo, 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 :/ pomoze ktos ?

kod zamieszczam pod adresem:
www.bmjftp.republika.pl/kod.txt

1 użytkowników online, w tym zalogowanych: 0, gości: 1