Tein PHP:llä viikon valitsimen, mutta jotenkin tuntuu, että siitä tuli melko monimutkainen. Pystyisiköhän samaa asiaa tekemään yhtään helpommin? En ole myöskään täysin varma, toimiiko tuo seuraavaan vuoteen automaattinen siirtyminen oikein.
<?php print"<ul>"; $year = $_GET["year"]; if(empty($year)){$year = date('Y'); } $week = $_GET["week"]; if(empty($week)){$week = date('W'); } function weekAction($action, $amount, $year, $week){ if($action == "+"){ $week = $week+$amount; if($week > 52){ $week = 1; $year = $year+1; define("week_nextyr", "true"); } if(week_nextyr == "true"){ $amount = $amount-1; $week = $week+$amount; } } elseif($action == "-"){ $week = $week-$amount; if($week < 1){ $week = 52; $year = $year-1; } } return array($week, $year); } function printSelector($weekArray, $symbol = ""){ $weekTemp = $weekArray[0]; $yearTemp = $weekArray[1]; if(empty($symbol)){ $symbol = $weekTemp; } print"<li class='{$class}'><a href='weekselect.php?week={$weekTemp}&year={$yearTemp}'>{$symbol}</a></li>"; } for($i=0;$i<9;$i++){ switch($i){ case 0: printSelector(weekAction("-", 1, $year, $week), "«"); break; case 1: printSelector(weekAction("-", 3, $year, $week)); break; case 2: printSelector(weekAction("-", 2, $year, $week)); break; case 3: printSelector(weekAction("-", 1, $year, $week)); break; case 4: print"<li class='active'><span>{$week}</span></li>"; break; case 5: printSelector(weekAction("+", 1, $year, $week)); break; case 6: printSelector(weekAction("+", 2, $year, $week)); break; case 7: printSelector(weekAction("+", 3, $year, $week)); break; case 8: printSelector(weekAction("+", 1, $year, $week), "»"); break; } } print"</ul>"; ?>
Ei valmis ratkaisu, mutta:
Millä lailla tuo ei ole valmis ratkaisu?
Olli kirjoitti:
Millä lailla tuo ei ole valmis ratkaisu?
No jos vaikka sillä tavalla, että qeijon koodi ei tulosta mitään listaa valinnoista vaan esittelee vain, miten strtotime-funktiolla ja date-funktiolla saa helpommin tulostettua eri valintoja. Näitä neuvoja soveltamalla voisit siis korvata koko weekAction-kikkailusi noilla kahdella funktiolla.
Ok, kiitoksia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.