Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Kalenteri php:llä

Sivun loppuun

Mazuli [24.05.2005 18:52:23]

#

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 "&nbsp;";
      //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;
}

temu92 [28.05.2005 23:48:46]

#

Laita tonne alkuun <? toi tagi <?php tollaseks. Ei kato toimi muuten MBNetin palvelimella

On ihan jees.

Katoppas vaan. Olin eka. Jee

pwc [29.05.2005 08:33:50]

#

<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ä.

arcatan [29.05.2005 10:00:01]

#

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ä)

Mazuli [29.05.2005 12:43:07]

#

juu no toi javascript olikin ihan vaan esimerkiksi kuukausien vaihtamiseen, kun submit painike oli mielestäni tylsän näköinen xD

ajv [30.05.2005 07:36:41]

#

Pilkunviilausta:

<?php
$tanaan = getdate();
if($tanaan["year"] == $vuosi    &&
   $tanaan["mon"]  == $kuukausi &&
   $tanaan["mday"] == $paiva      )
?>

voisi olla

<?php
if(date("Ynj") == $vuosi.$kuukausi.$paiva)
?>

tai ainakaan tuota getdate():a ei tarvitsisi kutsua joka kierroksella.
Muuten näyttää ihan asialliselta pätkältä.

kayttaja-2791 [30.05.2005 16:48:45]

#

Demoa kiitos?

aeolus [03.06.2005 22:10:51]

#

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.

stere [17.06.2005 14:07:24]

#

http://koti.mbnet.fi/sllz/new/kalenteri.php

samanmuhammad [06.03.2008 21:32:42]

#

Osato sanoa miten synkyröidään phpllä tehdyt kalenteri outlookin kanssa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta