Kalenteri joka näyttää kuukauden kaikki paivat ja näyttää tummennettuna oikean paivan. tyyliä voi muokata rauhassa
kalenteri.php
<? //sisällytetään tyylitiedosto echo "<style type=\"text/css\">@include 'kalenteri.css';</style>"; //sekä scripti joka vaihtaa vuotta/kuukautta echo "<script type=\"text/javascript\" src=\"vaihda.js\"></script>"; //haetaan kuukausi ja vuosi muuttujiin $kuukausi = $_GET['kuukausi']; $vuosi = $_GET['vuosi']; //tulostetaan formin alkutagi echo "<form name=\"paivamaara\">"; //tulostetaan listat josta voi valita kuukaudet ja vuoden echo "<p>valitse kuukausi: <select name=\"kuukaudet\" onChange=vaihda()> <option value=1>tammi <option value=2>helmi <option value=3>maalis <option value=4>huhti <option value=5>touko <option value=6>kesä <option value=7>heinä <option value=8>elo <option value=9>loka <option value=10>syys <option value=11>marras <option value=12>joulu </select></p>"; echo "<p>valitse vuosi: <select name=\"vuodet\" onChange=vaihda()> <option value=2005>2005 <option value=2006>2006 <option value=2007>2007 <option value=2008>2008 <option value=2009>2009 <option value=2010>2010 <option value=2011>2011 <option value=2012>2012 <option value=2013>2013 <option value=2014>2014 <option value=2015>2015 <option value=2016>2016 </select></p>"; //tulostetaan taulukon alkuosa echo "<table> <th><p><b>MA</b></p></th> <th><p><b>TI</b></p></th> <th><p><b>KE</b></p></th> <th><p><b>TO</b></p></th> <th><p><b>PE</b></p></th> <th><p><b>LA</b></p></th> <th><p><b>SU</b></p></th>"; //haetaan valitun kuukauden ja vuoden ekan paivan viikonpaivan numero muuttujaaan //koska functio palauttaa sunnuntain nollana jne. siirretään paivia niin että maanantai //on nolla jne. $eka_paiva = JDDayOfWeek(JulianToJD($kuukausi,1,$vuosi),0) - 1; //muutettaessa sunnuntai muuttuu -1 vaikka se halutaan 6, korjataan asia if($eka_paiva < 0) $eka_paiva += 7; //käydään läpi viisi viikkoa( kuukauden paivat sijoittautuvat max 5 viikolle ) for($viikko = 0; $viikko < 6; $viikko++) { //tulostetaan uuden rivin alku echo "<tr>"; //käydään läpi viikon jokainen paiva for($viikonpaiva = 0; $viikonpaiva < 7; $viikonpaiva++) { //lasketaan oikea paiva viikon ja viikonpaivan avulla(viikko * 7 + viikonpaiva) //otetaaan myös huomioon milloin kuukausi vasta alkaa(-eka_paiva) $paiva = $viikko * 7 + $viikonpaiva - $eka_paiva; //tulostetaan solun alku echo "<td>"; //jos kuukausi on jo alkanut(paiva > 0) eikä olla menty seuraavaaan kuukauteen //(paiva <= cal_days_in_month(0,$uukausi,vuosi)) tulostetaan paivan numero if($paiva > 0 && $paiva <= cal_days_in_month(0,$kuukausi,$vuosi)) { //haetaan tämän päivän tiedot muuttujaan $tanaan = getdate(); //tarkistetaan onko tulostettava päivä sama kuin oikea päivä if($tanaan["year"] == $vuosi && $tanaan["mon"] == $kuukausi && $tanaan["mday"] == $paiva ) //jos on niin tulosteaan päivä paksunnettuna echo "<p><b>$paiva</b></p>"; //muussa tapauksessa tulostetaan numero normaalina else echo "<p>$paiva</p>"; } //jos paiva ei ole "sallittu" tulostetaan tyhjää else echo " "; //tulostetaan solun lopetus echo "</td>"; } //tulostetaan rivin lopetus echo "</tr>"; } //tulostetaan lopuksi vielä taulukon lopetus tagi echo "</table>"; ?>
kalenteri.css
p { font-family:verdana; font-size:10px; } td { background:#EAEAEA; } th { background:#C0C0C0; } table { border:1px solid #000000; } select { border:1px solid #000000; font-family:verdana; font-size:10px; }
vaihda.js
function vaihda() { var k = document.paivamaara.kuukaudet.value; var y = document.paivamaara.vuodet.value; location.href = "?kuukausi="+k+"&vuosi="+y; }
Laita tonne alkuun <? toi tagi <?php tollaseks. Ei kato toimi muuten MBNetin palvelimella
On ihan jees.
Katoppas vaan. Olin eka. Jee
<style>- ja <script>-tagit vaativat type-attribuutin. Ja minkä ihmeen takia tässä käytetään javaskriptiä? Mielestäni sitä tulisi välttää, jos muita vaihtoehtoja on käytettävissä. Ja tässä olisi: ihan perusformi ja submit-painike, ja kaikki onChange():t pois. Nyt esimerkiksi ei saa tammikuuta 2005 valittua mitenkään ilman url-kikkailua.
Lisäksi, jos vikalle riville ei tule mitään, sen voisi jättää piirtämättä.
lainaus:
Ja tässä olisi: ihan perusformi ja submit-painike, ja kaikki onChange():t pois. Nyt esimerkiksi ei saa tammikuuta 2005 valittua mitenkään ilman url-kikkailua.
Minä tekisin niin, että vaihtaisin selectien nimiksi "kuukausi" ja "vuosi" ja laittaisin formin metodiksi GET ja actioniksi tämän saman php:n. No siinä ei ollut mitään uutta. Mutta pistäisin submit-napin <noscriptin> sisään. Näin homma toimii niillä napinpainalluksella, jotka eivät käytä JavaScriptiä ja suoraan niillä jotka käyttävät. Ei JavaScriptissä sinänsä mitään vikaa ole, se on parhaimmillaan ihan hyödyllistä. Mutta siinä on vikaa, jos se on pakkolista. (edit: siis silloin pakkollista, kun sitä voitaisiin olla käyttämättä)
juu no toi javascript olikin ihan vaan esimerkiksi kuukausien vaihtamiseen, kun submit painike oli mielestäni tylsän näköinen xD
Pilkunviilausta:
<?php $tanaan = getdate(); if($tanaan["year"] == $vuosi && $tanaan["mon"] == $kuukausi && $tanaan["mday"] == $paiva ) ?>
voisi olla
tai ainakaan tuota getdate():a ei tarvitsisi kutsua joka kierroksella.
Muuten näyttää ihan asialliselta pätkältä.
Demoa kiitos?
Laittaisit tohon vielä linkit, etä ku klikkaa kyseistä päivää, esim. tammikuun 1-päivä, niin kun sitä klikkaa, niin tulee sivu josta näkee kyseisen päivän nimpparit.
Osato sanoa miten synkyröidään phpllä tehdyt kalenteri outlookin kanssa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.