Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
Pomocí fce fileexists() zjišťuji existenci souborů v adresáři. Tyto soubory jsou ve formátu např. 01_2010.pdf, kde 01 znamená číslo týdne a 2010 číslo roku.
Pokud soubor existuje, potřebuji vypsat na výstup datumový rozsah daného týdne ve formátu (např. v tomto případě) 04.01.2010 - 10.01.2010 Nejprve zjistím číslo týdne a roku: list($tyden, $rok) = explode("_", str_replace(".pdf", "", "01_2010.pdf")); Jak dál? |
||
Jan Tvrdík Profil |
#2 · Zasláno: 29. 12. 2009, 19:47:34 · Upravil/a: Jan Tvrdík
$start = strtotime($rok . 'W' . $tyden); $end = strtotime('+6 days', $start); echo date('d.m.Y', $start) . ' – ' . date('d.m.Y', $end); |
||
mackopu Profil |
#3 · Zasláno: 29. 12. 2009, 19:55:20
Skvostné!
Děkuji mnohokrát. |
||
mackopu Profil |
#4 · Zasláno: 30. 12. 2009, 15:47:47 · Upravil/a: mackopu
Nedá mi to a musím se podělit o celý zdroják, kvůli kterému jsem toto vlákno rozpoutal. Odstranil jsem z něj pouze ty části, které zjišťují přítomnost výše zmíněných PDF souborů.
Věřím, že se to leckomu hodí - skript v zásadě vykresluje kompletní kalendář podle zvoleného roku, který navíc ukazuje čísla týdnů - to jsem často u podobných řešení postrádal - (po najetí myší na ně se ještě zobrazí jejich datumový rozsah) a zvýrazňuje státní svátky včetně velikonočního pondělí (!) (opět info po najetí myší). Do budoucna pravděpodobně přidělám ještě zobrazování jmenin. Jakékoliv nápady na vylepšení a optimalizaci pochopitelně vítám. <?php if(!isset($vybrany_rok)) { $vybrany_rok = Date("Y"); } echo "<h2 style=\"margin-top:40px;\">Kalendář roku ".$vybrany_rok.":</h2>\n"; echo "<form method=\"GET\" action=\"\">\n"; echo " <select size=\"1\" name=\"vybrany_rok\">\n"; $zac = Date("Y")-1; $kon = $zac + 10; for($i=$zac; $i<=$kon; $i++) { echo " <option value=\"".$i."\"".($i == $vybrany_rok ? " selected" : "").">".$i."</option>\n"; } echo " </select>\n"; echo " <input type=\"submit\" value=\"Vybrat\">\n"; echo " <a href=\"index.php?action=insert_form_rozpis_ledu&vybrany_rok=".date("Y")."#dnesek\">přejít na dnešek</a>\n"; echo "</form>\n"; function VypisMesic($month, $year) { // 1, 2010 $cz_mesic = array( "1" => "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ); $svatky[] = "1.1.".$year.": Nový rok, Den obnovy samostatného českého státu (státní svátek)"; // velikonoční neděle $vel_nedele = date("d.m.Y", easter_date($year)); list($vel_d, $vel_m, $vel_r) = explode(".", $vel_nedele); $vel_mk = mktime(0,0,0, $vel_m, $vel_d+1, $vel_r); // velikonoční pondělí $vel_pondeli = date("j.n.Y", $vel_mk); $svatky[] = $vel_pondeli.": Velikonoční pondělí (ostatní svátek)"; $svatky[] = "1.5.".$year.": Svátek práce (ostatní svátek)"; $svatky[] = "8.5.".$year.": Den osvobození (státní svátek)"; $svatky[] = "5.7.".$year.": Den slovanských věrozvěstů Cyrila a Metoděje (státní svátek)"; $svatky[] = "6.7.".$year.": Den upálení mistra Jana Husa (státní svátek)"; $svatky[] = "28.9.".$year.": Den české státnosti (státní svátek)"; $svatky[] = "28.10.".$year.": Den vzniku samostatného československého státu (státní svátek)"; $svatky[] = "17.11.".$year.": Den boje za svobodu a demokracii (státní svátek)"; $svatky[] = "24.12.".$year.": Štědrý den (ostatní svátek)"; $svatky[] = "25.12.".$year.": První vánoční svátek (ostatní svátek)"; $svatky[] = "26.12.".$year.": Druhý vánoční svátek (ostatní svátek)"; $date = getdate(mktime(0,0,0,$month,1,$year)); $today = getdate(); $hours = $today['hours']; $mins = $today['minutes']; $secs = $today['seconds']; if(strlen($hours)<2) $hours="0".$hours; if(strlen($mins)<2) $mins="0".$mins; if(strlen($secs)<2) $secs="0".$secs; $days = date("t",mktime(0,0,0,$month,1,$year)); // pocet dnu v danem mesici $start = $date['wday'] == 0 ? 7 : $date['wday']; // týden začíná pondělím $name = $date['month']; $offset = $days + $start - 1; if($offset <= 28) $weeks=28; elseif($offset > 35) $weeks = 42; else $weeks = 35; $jmeno_mesice = $cz_mesic[$month]; $col = 1; $cur = 1; $radku = 1; $output = ''; for($i=1;$i<=$weeks;$i++) { if($col==1) { $output .= " <tr>\n"; $cislo_tydne = StrFTime("%V", mktime(0,0,0, $month, $cur, $year)); $start_rozsah = strtotime($year . 'W' . $cislo_tydne); $end_rozsah = strtotime('+6 days', $start_rozsah); $rozsah = date('d.m.Y', $start_rozsah ) . ' – ' . date('d.m.Y', $end_rozsah ); $output.=" <td align=\"center\" style='color:green; cursor:help;' title=\"".$rozsah."\"><span style='border-bottom-style:dashed; border-bottom-width:1px;'>".intval($cislo_tydne)."</span></td>\n"; } if($i <= ($days+($start-1)) && $i >= $start) { if(($cur==$today[mday]) && ($name==$today[month]) && $year==$today[year]) { $style = "background-color:yellow;"; // dnes $style_2 = "color:red;font-weight:bold;"; $zalozka = "<a name=\"dnesek\"></a>"; } else { $style = ""; $style_2 = ""; } // je dnes svátek? for($z=0; $z<count($svatky); $z++) { list($datum_sv, $nazev_sv) = explode(": ", $svatky[$z]); if($datum_sv == $cur.".".date("n", strtotime($cur.".".$name.".".$year)).".".$year) { $style = "background-color:#ffcccc;cursor:help;"; $tit = " title=\"".$nazev_sv."\""; break; } else { $tit = ""; } } $output .= "<td style='".$style.$style_2."'".$tit.">".$zalozka.$cur."</td>\n"; $cur++; $col++; } else { $output .= "<td> </td>\n"; $col++; } if($col==8) { $output .= " </tr>\n"; $col = 1; $radku++; } } $td_mesice = " <td rowSpan=\"".$radku."\">".strtoupper($jmeno_mesice)."</td>\n"; return $td_mesice.$output; }; $pocet_tydnu_v_roce = Date("W", mktime(0,0,0, 12, 28, $vybrany_rok)); echo "<p>Zvolený rok má ".$pocet_tydnu_v_roce." týdnů\n"; echo "<p><table border=\"1\" cellpadding=\"3\" cellspacing=\"0\" style=\"border-collapse:collapse; text-align:center;\" bordercolor=\"#111111\">\n"; echo " <tr style=\"font-weight:bold;\">\n"; echo " <td width=\"100\" rowSpan=\"2\">Měsíc</td>\n"; echo " <td width=\"50\" rowSpan=\"2\">Číslo<br>týdne</td>\n"; echo " <td colSpan=\"7\">Dny týdne</td>\n"; echo " </tr>\n"; echo " <tr style='background-color:#e9e9e9;'>\n"; echo " <td width=\"25\">Po</td>\n"; echo " <td width=\"25\">Út</td>\n"; echo " <td width=\"25\">St</td>\n"; echo " <td width=\"25\">Čt</td>\n"; echo " <td width=\"25\">Pá</td>\n"; echo " <td width=\"25\">So</td>\n"; echo " <td width=\"25\">Ne</td>\n"; echo " </tr>\n"; for($a=1; $a<=12; $a++) { echo VypisMesic($a, $vybrany_rok); } echo "</table>\n"; ?> |
||
Časová prodleva: 15 let
|
0