Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 9. 12. 2008, 02:15:45 · Upravil/a: mackopu
Mám skript na vypsání dvojjazyčného kalendáře a zajímalo by mě, jak zařídit, aby se v české verzi vypisovaly sloupce s názvy dnů ne od neděle, ale od pondělí (to není takový problém, stačí to jen posunout v array $zkratky_dni), ale přitom aby se úměrně k tomu posunula i čísla dnů. Ladím to celý den a nemůžu na to kápnout :-/
<?php if($_GET['lang'] == "") { $lang = "cz"; } $lang_dnes = $lang == "cz" ? "Dnes" : "Today"; if($lang == "cz") { $zkratky_dni = array( "Ne", "Po", "Út", "St", "Čt", "Pá", "So" ); } else { $zkratky_dni = array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ); } $cz_mesic = array( "1" => "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ); $output = ''; $month = $_GET['month']; $year = $_GET['year']; if($month == '' && $year == '') { $time = time(); $month = date('n',$time); $year = date('Y',$time); } $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)); $start = $date['wday']+1; $name = $date['month']; $year2 = $date['year']; $offset = $days + $start - 1; if($month==12) { $next=1; $nexty=$year + 1; } else { $next=$month + 1; $nexty=$year; } if($month==1) { $prev=12; $prevy=$year - 1; } else { $prev=$month - 1; $prevy=$year; } if($offset <= 28) $weeks=28; elseif($offset > 35) $weeks = 42; else $weeks = 35; $jmeno_mesice = $lang == "cz" ? iconv("windows-1250","UTF-8",$cz_mesic[$month]) : $name; $output .= "<div align='center'> <center> <table cellpadding='1' cellspacing='0' border='1' bordercolor='silver'> <tr> <td colspan='7'> <table cellpadding='3' width='100%'> <tr> <td> <a href='javascript:navigate($prev,$prevy,\"".$lang."\")'><<</a> <a class='link-today' href='javascript:navigate(\"\",\"\",\"".$lang."\")'>".$lang_dnes."</a> <a href='javascript:navigate($next,$nexty,\"".$lang."\")'>>></a> </td> </tr> <tr> <td>$jmeno_mesice $year2</td> </tr> </table> </td> </tr> <tr bgcolor='#808080' style='color:#FFFFFF; font-size:10px;'>"; for($i=0; $i<7; $i++) { $output .= "<th width='27' height='20'>".iconv("windows-1250","UTF-8",$zkratky_dni[$i])."</th>"; } $output .= "</tr>"; $col=1; $cur = 1; $next=0; for($i=1;$i<=$weeks;$i++) { if($next==3) $next=0; if($col==1) $output.="<tr>"; $output.="<td class='day"; if($i <= ($days+($start-1)) && $i >= $start) { if(($cur==$today[mday]) && ($name==$today[month])) $output.=" today"; $output.="'>$cur</td>"; $cur++; $col++; } else { $output.="'> </td>"; $col++; } if($col==8) { $output.="</tr>"; $col=1; } } $output.=" </center> </div> </table>"; echo $output; ?> |
||
mackopu Profil |
#2 · Zasláno: 9. 12. 2008, 11:59:02
Pro lepší představu uvidíte kalendář tady.
Poraďte prosím, je to moc pěkná aplikace postavená na AJAXU, PHP a MYSQL- rád se pak podělím o zdrojáky. |
||
Majkl578 Profil |
#3 · Zasláno: 9. 12. 2008, 13:42:29
zkusil bych to prvne jednoduse, takto (netestovano):
<?php if($_GET['lang'] == "") { $lang = "cz"; } $lang_dnes = $lang == "cz" ? "Dnes" : "Today"; if($lang == "cz") { $zkratky_dni = array( "Ne", "Po", "Út", "St", "Čt", "Pá", "So" ); } else { $zkratky_dni = array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ); } $cz_mesic = array( "1" => "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ); $output = ''; $month = $_GET['month']; $year = $_GET['year']; if($month == '' && $year == '') { $time = time(); $month = date('n',$time); $year = date('Y',$time); } $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)); $start = $date['wday']+1; $name = $date['month']; $year2 = $date['year']; $offset = $days + $start - 1; if($month==12) { $next=1; $nexty=$year + 1; } else { $next=$month + 1; $nexty=$year; } if($month==1) { $prev=12; $prevy=$year - 1; } else { $prev=$month - 1; $prevy=$year; } if($offset <= 28) $weeks=28; elseif($offset > 35) $weeks = 42; else $weeks = 35; $jmeno_mesice = $lang == "cz" ? iconv("windows-1250","UTF-8",$cz_mesic[$month]) : $name; $output .= "<div align='center'> <center> <table cellpadding='1' cellspacing='0' border='1' bordercolor='silver'> <tr> <td colspan='7'> <table cellpadding='3' width='100%'> <tr> <td> <a href='javascript:navigate($prev,$prevy,\"".$lang."\")'><<</a> <a class='link-today' href='javascript:navigate(\"\",\"\",\"".$lang."\")'>".$lang_dnes."</a> <a href='javascript:navigate($next,$nexty,\"".$lang."\")'>>></a> </td> </tr> <tr> <td>$jmeno_mesice $year2</td> </tr> </table> </td> </tr> <tr bgcolor='#808080' style='color:#FFFFFF; font-size:10px;'>"; for($i=0; $i<7; $i++) { $output .= "<th width='27' height='20'>".iconv("windows-1250","UTF-8",$zkratky_dni[$i])."</th>"; } $output .= "</tr>"; $col=1; $cur = 1; $next=0; for($i=1;$i<=$weeks;$i++) { if($next==3) $next=0; if($col==2) $output.="<tr>"; $output.="<td class='day"; if($i <= ($days+($start-1)) && $i >= $start) { if(($cur==$today[mday]) && ($name==$today[month])) $output.=" today"; $output.="'>$cur</td>"; $cur++; $col++; } else { $output.="'> </td>"; $col++; } if($col==8) { $col=1; } if($col==2) { $output.="</tr>"; } } $output.=" </center> </div> </table>"; echo $output; ?> |
||
mackopu Profil |
#4 · Zasláno: 9. 12. 2008, 13:49:24
Bohužel. Sice to vypisuje správně počty dnů, ale jinak tam jsou chyby.
|
||
Majkl578 Profil |
#5 · Zasláno: 9. 12. 2008, 14:18:51
slo by lepe specifikovat toto: "ale jinak tam jsou chyby."?
co udela puvodni zmena navic s touto: if($lang == "cz") { $zkratky_dni = array( "Ne", "Po", "Út", "St", "Čt", "Pá", "So" ); } else { $zkratky_dni = array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ); } na if($lang == "cz") { $zkratky_dni = array( "Po", "Út", "St", "Čt", "Pá", "So", "Ne" ); } else { $zkratky_dni = array( "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ); } |
||
mackopu Profil |
#6 · Zasláno: 9. 12. 2008, 14:46:32
Pro testování nahlédnutí jsem udělal samostatnou stránku.
Majkl578: Provedl jsem tebou navrženou změnu, naní to ono, koukni na to. |
||
Majkl578 Profil |
#7 · Zasláno: 9. 12. 2008, 16:44:43
co toto:
<?php if($_GET['lang'] == "") { $lang = "cz"; } $lang_dnes = $lang == "cz" ? "Dnes" : "Today"; if($lang == "cz") { $zkratky_dni = array( "Po", "Út", "St", "Čt", "Pá", "So", "Ne" ); } else { $zkratky_dni = array( "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ); } $cz_mesic = array( "1" => "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ); $output = ''; $month = $_GET['month']; $year = $_GET['year']; if($month == '' && $year == '') { $time = time(); $month = date('n',$time); $year = date('Y',$time); } $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)); $start = $date['wday']+1; $name = $date['month']; $year2 = $date['year']; $offset = $days + $start; if($month==12) { $next=1; $nexty=$year + 1; } else { $next=$month + 1; $nexty=$year; } if($month==1) { $prev=12; $prevy=$year - 1; } else { $prev=$month - 1; $prevy=$year; } if($offset <= 28) $weeks=28; elseif($offset > 35) $weeks = 42; else $weeks = 35; $jmeno_mesice = $lang == "cz" ? iconv("windows-1250","UTF-8",$cz_mesic[$month]) : $name; $output .= "<div align='center'> <center> <table cellpadding='1' cellspacing='0' border='1' bordercolor='silver'> <tr> <td colspan='7'> <table cellpadding='3' width='100%'> <tr> <td> <a href='javascript:navigate($prev,$prevy,\"".$lang."\")'><<</a> <a class='link-today' href='javascript:navigate(\"\",\"\",\"".$lang."\")'>".$lang_dnes."</a> <a href='javascript:navigate($next,$nexty,\"".$lang."\")'>>></a> </td> </tr> <tr> <td>$jmeno_mesice $year2</td> </tr> </table> </td> </tr> <tr bgcolor='#808080' style='color:#FFFFFF; font-size:10px;'>"; for($i=0; $i<7; $i++) { $output .= "<th width='27' height='20'>".iconv("windows-1250","UTF-8",$zkratky_dni[$i])."</th>"; } $output .= "</tr>"; $col=1; $cur = 1; $next=0; for($i=1;$i<=$weeks;$i++) { if($next==3) $next=0; if($col==2) $output.="<tr>"; $output.="<td class='day"; if($i <= ($days+($start-1)) && $i >= $start) { if(($cur==$today[mday]) && ($name==$today[month])) $output.=" today"; $output.="'>$cur</td>"; $cur++; $col++; } else { $output.="'> </td>"; $col++; } if($col==8) { $col=1; } if($col==2) { $output.="</tr>"; } } $output.=" </center> </div> </table>"; echo $output; pokud to nepujde (jako ze asi ne), mohl by jsi sem dat komplet kod? upravil bych to na localu a rovnou zkusil, at to tu nemusime resit takhle jak idioti... ;) |
||
mackopu Profil |
#8 · Zasláno: 9. 12. 2008, 16:54:12
Pořád to není ono. Stáhni si zdrojáky odtud a dej mi pak vědět. Díky.
|
||
Majkl578 Profil |
#9 · Zasláno: 9. 12. 2008, 17:49:35
dumal jsem nad tim dlouho a chodil jsem okoro horky kase. nakonec stacilo zmenit jen jeste toto:
$start = $date['wday']+1; na $start = $date['wday'] == 0 ? 7 : $date['wday']; |
||
mackopu Profil |
#10 · Zasláno: 9. 12. 2008, 18:08:58
Skvělé (viz náhled).
Jen jsem to ještě upravil tak, aby anglická verze začínala nedělí a ne pondělkem: if($lang == "cz") { $zkratky_dni = array( "Po", "Út", "St", "Čt", "Pá", "So", "Ne" ); } else { $zkratky_dni = array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ); } ........................ if($lang == "cz") { $start = $date['wday'] == 0 ? 7 : $date['wday']; } else { $start = $date['wday']+1; } Díky za spolupráci. |
||
Majkl578 Profil |
#11 · Zasláno: 9. 12. 2008, 18:46:41
jop tak by to melo jit dobre ;) neni zac
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0