| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
KalenteriJ0p3 05.01.03 18:38 Kalenteri, jossa mahdollisuus selata edellisiä ja tulevia kuukausia ja tämän hetkisen päivän erottelu.
<?php /* HUOM. korjattu: 22.5.2005 copyright: Joona Putkonen Koodikirjatossa näyttää olevan toinenkin kalenteri, mutta minulla on kuukausien selaus mahdollisuus ja muutenkin yksinkertaisemmin toteutettu, joten helpommin luettavissa (siis ainakin omasta mielestäni). */ $kk = $_GET['kk']; $year = $_GET['year']; header("Cache-Control: no-store, no-cache, must-revalidate"); $kuukaudet=array("", "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"); if($kk == "") { $kk = date("n"); } if($year == "") { $year = date("Y"); } if($kk == "12") { $ny = $year + 1; $seur = "1&year=" . $ny; }else{ $jaa = $kk + 1; $seur = $jaa . "&year=" . $year; } if($kk == "1") { $ey = $year - 1; $edel = "12&year=" . $ey; }else{ $juu = $kk - 1; $edel = $juu . "&year=" . $year; } $taakse = $PHP_SELF . "?kk=" . $edel; $eteen = $PHP_SELF . "?kk=" . $seur; ?> <html> <head> <title>Almanakka</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <style type="text/css"> <!-- body { font-family: Arial; color: #000000; text-decoration: none;background-color: #999999;} .kal { font-family: Arial; font-size: 16px; font-weight: bold; color: #000000; text-decoration: none; background-color: #97A083; text-align: left; vertical-align: text-top; padding: 3px;} .nyt {font-family: Arial; font-size: 16px; font-weight: bold; color: #000000; text-decoration: none; background-color: #818297; text-align: left; vertical-align: text-top; padding: 3px;} .otsikko { font-family: Arial; font-size: 36px; font-weight: bold; color: #000000; text-decoration: none; background-color: #97A083; text-align: center; vertical-align: middle; padding: 3px;} .paiva {font-family: Arial; font-size: 18px; font-weight: bold; color: #000000; text-decoration: none; text-align: center; vertical-align: middle; padding: 3px; background-color: #97A083;} input { font-family: Arial; font-size: 12px; font-weight: bold; color: #000000; text-decoration: none; text-align: center; vertical-align: middle; padding: 2px; border: 1px solid #000000; background-color: #97A083; } --> </style> </head> <body> <table align="center"><tr><td align="right" valign="bottom"><input name="ala" type="button" value="Edellinen kuukausi" onClick="document.location='<?php echo $taakse ?>'"></td><td> <table width="350" bgcolor="#000000" cellspacing="1" align="center"> <tr><td colspan="7" class="otsikko"> <?php print($kuukaudet[$kk] . " " . $year); ?> </td></tr> <tr> <td class="paiva" width="50">Ma</td> <td class="paiva" width="50">Ti</td> <td class="paiva" width="50">Ke</td> <td class="paiva" width="50">To</td> <td class="paiva" width="50">Pe</td> <td class="paiva" width="50">La</td> <td class="paiva" width="50">Su</td> </tr> <?php function kalenteri($vuosi, $kuukausi) { $eka_paiva = date("w", mktime(0,0,0,$kuukausi,1,$vuosi)); $paivia_kuussa = date("t", mktime(0,0,0,$kuukausi,1,$vuosi)); if($kuukausi == date("n") && $vuosi == date("Y")) { $nyt = date("j"); }else{ $nyt = "jotain"; } $j = "1"; for($i=1;$i<7;$i++) { $alku = "1"; print("<tr>\n"); if($i=="1") { /* LISAYS */ if($eka_paiva == "0") { $alku = "7"; for($p=1;$p<7;$p++) { print("<td class=\"kal\"></td>\n"); } } /* LISAYS */ for($a=1;$a<$eka_paiva;$a++) { print("<td class=\"kal\"></td>\n"); $alku = $eka_paiva; } } for($c=$alku;$c<8;$c++) { if($j>$paivia_kuussa) { print("<td class=\"kal\"></td>\n"); }elseif($j == $nyt) { print("<td class=\"nyt\">" . $j . "</td>\n"); }else{ print("<td class=\"kal\">" . $j . "</td>\n"); } $j++; } print("</tr>\n"); if($j > $paivia_kuussa) { $i++; } } } kalenteri($year,$kk); ?> </table> </td><td align="left" valign="bottom"><input name="yla" type="button" value="Seuraava kuukausi" onClick="document.location='<?php echo $eteen ?>'"></td></tr></table> </body> </html> J0p3 18:45 5.1.03 Kalenteri testattavana osoitteessa: http://koti.mbnet.fi/j0p3/almanakka.php JoneZi 03:25 6.1.03 Toihan on muuten ihan hullun hieno!!!!! JoneZi 03:29 6.1.03 Miten saat ton toimii? LL 12:39 6.1.03 Ihan hieno. Plussapisteet ulkoasusta :) empty 15:04 6.1.03 Ihan hienohan tuo on, jos vaan olisit jaksanu tehä semmosen että saa lisätä tapahtumia siihen :) J0p3 17:09 6.1.03 Itse asiassa mä kejitin siitä jo sellasen Että siihen voi lisätä tapahtuman, ja sitten se avataan uuteen pikkuikkunaan, mutta on vielä vähän testaus asteella. J0p3 17:11 6.1.03 JoneZi mitä tarkotat: miten sain sen toimiin? J0p3 17:28 6.1.03 Jos teen tänne jotain, teen sen TYYLILLÄ =D amp_god 01:33 11.1.03 Asiallinen patentti, täytyy myöntää ^_^ empty 20:54 12.1.03 iha jees jobex 14:08 15.1.03 Hienoa! en antanut täysiä pisteitä ainakaan vielä, mutta sitten, kun niitä tapahtumia voi merkata niin taatusti tulee täydet ja päälle! ;) neon 22:06 8.3.03 tohon kun lasketaan kuinkamonta päivää on kuukaudessa voi käyttää myös cal_days_in_month(CAL_JULIAN,int month, int year) funkkaria empty 00:03 22.4.03 En ole PHP:tä koskaan kirjoittanut joten en ole tästä 100% varma. Mutta näyttäisi siltä että tuon pääluupin voisi kirjoittaa paljon yksinkertaisemminkin: while($j<$paivia_kuussa) { print("<tr>\n"); for($c=1;$c<8;$c++) { if($j>$paivia_kuussa || $j<$eka_paiva) { print("<td class=\"kal\"></td>\n"); }elseif($j == $nyt) { print("<td class=\"nyt\">" . $j . "</td>\n"); }else{ print("<td class=\"kal\">" . $j . "</td>\n"); } $j++; } print("</tr>\n"); } Miinusta tulee myös sekavista muuttujannimistä ($jaa, $juu, $ny jne.) ja kommenttien puutteesta. Mutta ihan hienon näköinen. JaSe 13:25 1.6.03 Bugittaa muuten. Näyttää täksi päiväksi (1.6 sunnuntai) maanantaita. Eli kai tuo jenkkien sunnuntaista alkava viikko sekottaa. J0p3 17:50 16.6.03 Joo, oon korjannut sen bugin yhteen isompaan projektiin. Korjaan sen tohon kun löytyy sopiva aika. -Teme- 17:45 27.11.03 Nätti on juu, sellanen olis aika kova jo et voi tallentaa tapahtumia vaik MySQL:ään ja sit kalenteri näyttää ne käyttäjälle. :> Tomaattisose 15:22 20.6.04 Tähän vois laittaa semmosen admin hommeliinin et vois laittaa tapahtumii päiville ja jne... J0p3 13:12 18.7.04 Näin melkeen vuoden poissaolon jälkeen vois taas alkaa selaileen tätä mureakuhaa ja soodailla taas lissää... Mutta Tomaattisoseelle. Eikös nämä koodinpätkät ole tarkoitettu esimerkeiksi, eikä valmiiksi sovelluksiksi muille? Siis en aijjo ruveta säätämään tästä mitäään ylisuurta projektia uudestaan, kun se ajaa asiansa näinkin, eli esimerkkinä, jota voi kukin omien tarpeidensa mukaan soveltaa. Jokainen voi vapaasti minunpuolestani lainailla pätkiä tästä. makel 02:47 21.9.04 Sanoisin että kelpo esimerkki tämä. phadej 21:32 4.10.04 1900 luvun alkupuolella ainakin näytää kaikki kuukaudet olevan 31 päivää pitkät, ei se häiritse kyl ku toi on almanakka, mutta kalenterissa se on bugi ja http://koti.mbnet.fi/j0p3/almanakka.php?kk=2&year=1970 tossa ulkonäkö vähän pätkii, muuten varsin kelpo ja mainio.. nii ja jos laittaa kk=13 ja enemmän ni ei sano mitään (sen toisaalta voi lisätä itsekkin jos tarvetta on :) jone92 17:28 18.1.05 sanokaapa helppoja koodeja millä tohon vois liittää tapahtumat J0p3 11:39 22.5.05 Noniin, sainpas aikaiseksi näin 2 vuoden ja 4 kk:n jälkeen fixata ton pätkän kuntoon. Aikaisemmin siis tämä kalenteri piirsi oikeasti sunnuntaina alkavan kuukauden maanantaina alkavaksi. Nyt lisäsin pätkän koodia, joka korjaa asian. Pätkä on eroteltu /* LISAYS */ "tagien" sisaan, jos jotakin kiinnostaa. editoitu: 21:30 5.6.05 Zott 16:48 5.6.05 Kalenteri antoi minulla reilusti ilmoituksia mm. headerit eivät toimineet. Lisäksi mm. $year ja $kk muuttujista tuli virheitä. Lisäksi PHP_SELF kohdista tuli herjaa. Korjasin kalenterin kuitenkin seuraavasti: Välittömästi alkuun $kk ja $year rivien tilalle seuraava: if (isset($_GET['kk'])) { $kk = strip_tags($_GET['kk']); } else { $kk = ""; } if (isset($_GET['vuosi'])) { $year = strip_tags($_GET['vuosi']); } else { $year = ""; } Lisäksi headerit pitää välittömästi lähettää ensimmäisenä rivinä, ennen mitään muuta. Eli header kohta nostetaan ensimmäiseksi, muuten headerit ei liiku, vaan PHP lähettää oletusarvoiset headerit kun koodia lähdetään ajamaan. Itse asiassa, headereilla ei taida tässä sovelluksessa olla mitään virkaa, eli header kohta pois? Tämän lisäksi PHP_SELF ei sellaisenaan toiminut. Ratkaisin ongelman näin $taakse = $_SERVER["PHP_SELF"] . "?kk=" . $edel; $eteen = $_SERVER["PHP_SELF"] . "?kk=" . $seur; Nyt kalenteri ei herjaa mitään ja toimii juuri niin kuin pitääkin. Kiitos hyvästä kalenteripohjasta! EDIT: Lisäsinpä vielä haunkin... Tämä vaikka tuonne aivan viimeiseksi elementiksi. Näytti olevan tyylimäärittelyissä inputille jostain syystä vaikka sellaista ei ole koko kalenteripohjassa (edit olihan siellä sittenkin painikkeet)? Liekkö jäänyt jostain alkuperäisestä versiosta, mutta nyt hakukin on tehty. Tällä voi siis hakea tietyn kuukauden ja vuoden esiin. Ps. Siellä on nyt <center> yms hötömarkuppia, mutta olkoon kun pohjassa ei ollut eroteltu muutenkaan erillistä CSS:ää. <center> <form action="<? $_SERVER["PHP_SELF"] ?>" method="GET"> kk <input type="text" name="kk"><br>vuosi <input type="text" name="year"><br> <input type="submit" value="Hae"></form></center> Ps. Jos joku tappelee noiden CSS merkintöjen kanssa niin suoraan sieltä ensimmäisestä <table> tagista pois se musta tausta :| |
![]() Haku
|