Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odliczanie dni w których bedziemy w szkole
skubekk
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 8.08.2003
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Napisałem skrypt który odlicza dni robocze do pewnej daty. W moim przypadku są to dni do konca roku szkolnego. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Można w nim uwzględnić święta i inne wolne dni.
Może sie komuś przyda... (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

[php:1:5a1fad6f30]<?php
###Skrypt by .::SkUbEkK::.####
###Uszanuj moją prace i niekasuj tego komentarza###

$koniec_mk = mktime (0,0,0,6,25,2004);
$koniec_data = getdate($koniec_mk);
$koniec = $koniec_data[mday]." || ".$koniec_data[mon]." || ".$koniec_data[year];

##############Święta i inne dni wolne od szkoły#################
$wolne[] = "8 || 4 || 2004";
$wolne[] = "9 || 4 || 2004";
$wolne[] = "12 || 4 || 2004";
$wolne[] = "30 || 4 || 2004";
$wolne[] = "3 || 5 || 2004";
$wolne[] = "3 || 5 || 2004";
$wolne[] = "5 || 5 || 2004";
$wolne[] = "6 || 5 || 2004";
$wolne[] = "1 || 6 || 2004";
$wolne[] = "10 || 6 || 2004";
#################################################################
$ile_wolne=count($wolne);

$data = getdate();
$tablica_data = $data[mday]." || ".$data[mon]." || ".$data[year];

$oki = 0;
if($koniec >= $tablica_data){
while ($oki!=1)
{
$start = mktime(0,0,0,$data[mon],$data[mday],$data[year]);

for($i=$data[mday]; $i <= date(t,$start); $i++)
{
$start_dzien = mktime(0,0,0,$data[mon],$i,$data[year]);
$dzien = getdate($start_dzien);
$sprawdzany_dzien = $dzien[mday]." || ".$dzien[mon]." || ".$dzien[year];

for($x=0; $x<=$ile_wolne; $x++)
{
if ($wolne[$x] == $sprawdzany_dzien)
{
$zle++;
}
}

if ($dzien[wday] != "0" AND $dzien[wday] != "6")
{
$tablica_dni[]= $dzien[mday]." || ".$dzien[mon]." || ".$dzien[year];

if ($koniec == $sprawdzany_dzien)
{
echo "Do końca roku szkolnego pozostało:<b> ";
$ile_dni_do_konca = count($tablica_dni)-$zle;
echo $ile_dni_do_konca-1;
$oki=1;
echo " </b>dni w których będziemy w szkole<br>";
break;
}
}
}

$data[mon]++;
$data[mday]=1;

if ($data[mon]==13)
{
$data[mon] =1;
$data[year]++;
}

}

$tydzien = $ile_dni_do_konca/5;
$tydzien =explode(".", $tydzien);
$tydzien = $tydzien[0];
echo "czyli:<b> ".$tydzien."</b> tygodni nauki";
}else{echo "Rok szkolny już się skończył!!!";}
?>
[/php:1:5a1fad6f30]

EDIT: Skrypt został poprawiony.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sleeppower
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.08.2003
Skąd: Kielower

Ostrzeżenie: (0%)
-----


Ten skrypt napisałem sam i robi to samo co twój hehe. U mnie działa. Z resztą na podstawie tego można bardzo prosto zrobić wersje dla java script.
[php:1:6befa314e3]<?php
$d_form = $_POST['dzien'];
$m_form = $_POST['miesiac'];
$r_form = $_POST['rok'];
$miesiac_dni = array(31,29,31,30,31,30,31,31,30,31,30,31);
//tablica zwiera daty świąt format: miesiąc dzień
$swieta = array('1-1','12-24','12-25','12-26','11-11','4-11','4-12','6-10','5-1','5-3','4-8','4-9','4-13');
$data_przyszlosc = mktime('','','',$m_form,$d_form,$r_form);
$data_aktualna=mktime();
$roznica = $data_przyszlosc - $data_aktualna;
$ile_dni = floor($roznica/(24*60*60))+1;
$dzien=24*60*60;
if ($ile_dni==0)
{
echo 'To już dziś!';
exit;
}

echo 'Pozostało jeszcze '.$ile_dni.' dni';
$ile_2=0;
$ile_4=0;
for($i=0;$i<$ile_dni;$i++)
{
$data_inf=getdate($data_aktualna+($dzien*$i));
$dzien_tyg=$data_inf['wday'];
$dzien_mies=$data_inf['mday'];
$miesiac=$data_inf['mon'];
for($x=0;$x<count($swieta);$x++)
{
$swieto = explode('-',$swieta[$x]); // rozdzielenie zawartości zmienne tabicy $swieta na miesiac i dzien
if ($swieto[0] == $miesiac && $swieto[1] == $dzien_mies && $dzien_tyg<>0 && $dzien_tyg<>6)
$ile_4++;
}
if ($dzien_tyg==0 || $dzien_tyg==6)
$ile_2++;
}
echo '<br>';
$ile_3=$ile_dni-$ile_2;
echo 'Bez sobót i niedziel pozostało jeszcze '.$ile_3.' dni';
echo '<br>';
$ile_5=$ile_3-$ile_4;
echo 'Bez sobót, niedziel i wybranych świat pozostało '.$ile_5.' dni';
?>[/php:1:6befa314e3]
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 17:47