[PHP] Jak poprawnie wykorzystać if, else i date?


(Saver) #1

Witam, dzisiejszy problem jest w Tamagochi, chce zrobić aby w godzinach podanych w programie PHP wyświetlało że Trwa Audycja, i żeby wyświetlał to w tych godzinach co trwa audycja,

Podaje źródło PHP:

<?php

#$godzina = date ("H:i"); 


$godzina = "21:48";


if ($godzina == "6:15" >= "7:05")

{

echo "Trwa audycja!";

}


if ($godzina == "16:20" >= "17:10")

{

echo "Trwa audycja!";

}


if ($godzina == "3:40" >= "4:30")

{

echo "Trwa audycja!";

}


if ($godzina == "21:05" >= "22:00")

{

echo "Trwa audycja!";

}


else

{

echo "Brak audycji";

}

?>

[/code]

Czyli:

Mógłby mi ktoś poprawić kod PHP.

Pozdrawiam


(Damgora) #2

"21:48" to ciąg znaków (string), a co za tym idzie przykładowo "3:20" jest traktowana jako większa od "22:10"

Powinieneś porównywać liczby.

zobacz:

http://www.php.net/manual/en/function.time.php

http://php.net/manual/en/function.mktime.php

albo:

http://pl.php.net/manual/en/class.datetime.php

Poza tym pisząc if ($godzina == "16:20" >= "17:10")

miałeś na myśli chyba coś na tej zasadzie: if ($godzina>=$poczatek && $godzina<$koniec)


(Saver) #3

Dokładnie,

Chce zrobić że od godziny np. 12:15 do godziny 14:05 wyświetlało Trwa Audycja,

-- Dodane 18.10.2010 (Pn) 16:41 --

Działa :slight_smile:

Zrobiłem tak jak pisałeś:

Mam nowy problem, gdy jest audycja to pokazuje też tekst z else czyli brak audycji :confused:

<?php

#$godzina = date ("H:i"); 


#$godzina = "21:48";


#

$godzina = "7:06";




if ($godzina >= "6:15" && $godzina < "7:05")

{

echo "Trwa audycja!";

}


if ($godzina >= "16:20" && $godzina < "17:10")

{

echo "Trwa audycja!";

}


if ($godzina >= "3:40" && $godzina < "4:30")

{

echo "Trwa audycja!";

}


if ($godzina >= "21:05" && $godzina < "22:00")

{

echo "Trwa audycja!";

}


else

{

echo "Brak audycji";

}

?>[/code]

(Damgora) #4

powtórzę - porównywanie stringów nie jest tu dobrym pomysłem (patrz mój 1. post)

zamiast

if(...){...}

if(...){...}

if(...){...}

if(...){...}

...

else{...}

użyj

if(...){...}

elseif(...){...}

elseif(...){...}

elseif(...){...}

...

else{...}

wtedy echo "Brak audycji" wykona się tylko gdy wszystkie warunki nie będą prawdziwe (teraz zawsze gdy ostatni jest nieprawdziwy)


(Saver) #5

Działa, Dziękuje Ci bardzo serdecznie za tą szybką i bardzo pomocną pomoc :slight_smile:


([alex]) #6

$godzina="07:06";

if

(

("03:40"<=$godzina && $godzina<"04:30")||

("06:15"<=$godzina && $godzina<"07:05")||

("16:20"<=$godzina && $godzina<"17:10")||

)

{

echo " Trwa audycja!";

}

else

{

echo "Brak audycji";

}