Autor | Zpráva | ||
---|---|---|---|
pepepa Profil * |
#1 · Zasláno: 13. 12. 2009, 10:10:20
Ahoj, chtěl jsem se zeptat, jak upravit kalendář tak, aby mi místo čísla měsíce zobrazoval český název měsíce.
Funkci na převod názvů měsíců jsem nalezl, ale nedaří se mi ji implementovat. České názvy měsíců: function cesky_mesic($mesic) { static $nazvy = array(1 => 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'); return $nazvy[$mesic]; } echo cesky_mesic(date("n")) . "\n"; Kalendář: <? // pokud nejsou proměnné zinicializovány, vloží aktuální hodnoty if(!IsSet($month)) $month = Date("m"); if(!IsSet($year)) $year = Date("Y"); // převod na korektní hodnoty $year = Date("Y", MkTime(0,0,0, $month, 1, $year)); $month = Date("m", MkTime(0,0,0, $month, 1, $year)); $count_days = Date("t", MkTime(0,0,0, $month, 1, $year)); // počet dnů v měsíci // ke každému dni přiřadí jeho číslo v týdnu (1 = pondělí, ...) for($i=1;$i<=$count_days;$i++): $date[$i] = Date("w", MkTime(0,0,0,$month,$i,$year)); if($date[$i]==0) $date[$i] = 7; endfor; $first = $date[1]; // číslo prvního dne v měsíci (1 = pondělí, ...) // vypisuje odkazy pro zobrazení statistiky za dané období function DateLink($from, $to, $text) { global $month, $year; if(MkTime(0,0,0,$month,$from,$year) <= MkTime(0,0,0, Date("m"), Date("d"), Date("Y"))): echo '<a href="ukaz.php?month=' . $month . '&year=' . $year . '&from_date=' . $year . '-' . $month . '-' . $from . '&to_date=' . $year . '-' . $month . '-' . $to . '">'; echo $text; echo '</a>'; else: echo $text; endif; } ?> <table cellspacing="0" align="center"> <tr><td align="center" colspan="8"> <? // předchozí, aktuální a následující měsíc echo '<a href="kalendar.php?month=' . ($month-1) . '&year=' . $year . '"><<</a> '; DateLink(1, $count_days, $month . " / " . $year); // odkaz na měsíční statistiku echo ' <a href="kalendar.php?month=' . ($month+1) . '&year=' . $year . '">>></a>'; ?> </td></tr> <tr><td>T</td><td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td></tr> <? $day = 0; for($x=0;$x<=5;$x++): echo '<tr><td align="center"><b>'; // poslední den v týdnu if($x==0) // první týden $end = 7-$first+1; elseif($day+7>=$count_days) // poslední týden $end = $count_days; else // zbylé týdny $end = $day+7; // odkaz na týdenní statistiku DateLink($day+1, $end, $x+1); echo '</td>'; for($i=1;$i<=7;$i++): echo '<td align="center">'; $day = $x*7+$i-$first+1; // na základě obou cyklů postupně počítá den if($date[$day] == $i) DateLink($day, $day, $day); // odkaz na denní statistiku else echo " "; echo '</td>'; endfor; echo '</tr>'; if(!CheckDate($month, $day+1, $year)) break; // pokud neexistuje následující datum, ukončí cyklus endfor; ?> Předem vám moc děkuji. |
||
AM_ Profil |
#2 · Zasláno: 13. 12. 2009, 10:59:05
vypadá, že výstup měsíc/rok se generuje na řádku 45 - kdyžtak použij debugger, hledat kde se to vypisuje je jen mravenčí práce která není moc zábavná, ale zvládne si to najít každý...
|
||
valecekm Profil |
#3 · Zasláno: 13. 12. 2009, 11:47:25 · Upravil/a: valecekm
pepepa:
<?php function cesky_mesic($mesic) { $mesic_o = str_replace(". 0", ". ", $mesic); settype($mesic_o, "integer"); static $nazvy = array(1 => 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'); return $nazvy[$mesic_o]; } // pokud nejsou proměnné zinicializovány, vloží aktuální hodnoty if(!IsSet($month)) $month = Date("m"); if(!IsSet($year)) $year = Date("Y"); // převod na korektní hodnoty $year = Date("Y", MkTime(0,0,0, $month, 1, $year)); $month = Date("m", MkTime(0,0,0, $month, 1, $year)); $count_days = Date("t", MkTime(0,0,0, $month, 1, $year)); // počet dnů v měsíci // ke každému dni přiřadí jeho číslo v týdnu (1 = pondělí, ...) for($i=1;$i<=$count_days;$i++): $date[$i] = Date("w", MkTime(0,0,0,$month,$i,$year)); if($date[$i]==0) $date[$i] = 7; endfor; $first = $date[1]; // číslo prvního dne v měsíci (1 = pondělí, ...) // vypisuje odkazy pro zobrazení statistiky za dané období function DateLink($from, $to, $text) { global $month, $year; if(MkTime(0,0,0,$month,$from,$year) <= MkTime(0,0,0, Date("m"), Date("d"), Date("Y"))): echo '<a href="ukaz.php?month=' . $month . '&year=' . $year . '&from_date=' . $year . '-' . $month . '-' . $from . '&to_date=' . $year . '-' . $month . '-' . $to . '">'; echo $text; echo '</a>'; else: echo $text; endif; } ?> <table cellspacing="0" align="center"> <tr><td align="center" colspan="8"> <?php // předchozí, aktuální a následující měsíc echo '<a href="kalendar.php?month=' . ($month-1) . '&year=' . $year . '"><<</a> '; DateLink(1, $count_days, cesky_mesic($month) . " / " . $year); // odkaz na měsíční statistiku echo ' <a href="kalendar.php?month=' . ($month+1) . '&year=' . $year . '">>></a>'; ?> </td></tr> <tr><td>T</td><td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td></tr> <?php $day = 0; for($x=0;$x<=5;$x++): echo '<tr><td align="center"><b>'; // poslední den v týdnu if($x==0) // první týden $end = 7-$first+1; elseif($day+7>=$count_days) // poslední týden $end = $count_days; else // zbylé týdny $end = $day+7; // odkaz na týdenní statistiku DateLink($day+1, $end, $x+1); echo '</td>'; for($i=1;$i<=7;$i++): echo '<td align="center">'; $day = $x*7+$i-$first+1; // na základě obou cyklů postupně počítá den if($date[$day] == $i) DateLink($day, $day, $day); // odkaz na denní statistiku else echo " "; echo '</td>'; endfor; echo '</tr>'; if(!CheckDate($month, $day+1, $year)) break; // pokud neexistuje následující datum, ukončí cyklus endfor; ?> |
||
Časová prodleva: 14 let
|
0