RJWEBDESIGN - tvorba webových prezentací - Blogspot - PHP - Jak vytvořit PHP kalendář?

RJWEBDESIGN - tvorba webových prezentací

Novinky

27.06.2010
Spoluvyvíjeli jsme aplikaci pro klienta České Dráhy. Aplikace je opět striktně soukromá, nelze uvést odkaz.

16.05.2010
Pro Vodafone jsme naprogramovali aplikaci, která vyhodnocuje interní statistiky. Vývoj trval 2 měsíce. Aplikace není veřejná, proto neuvádím odkaz.

08.03.2010
Nová firemní prezentace firmy AH Electronics s.r.o, k velké spokojenosti zákazníka se připravuje internetový obchod.

30.01.2010
Připraveno nové diskusní fórum. více

02.12.2009
Po několika měsících náročné práce jsem spustil herní portál GAMEWAY.CZ více


Něco málo o mé osobě

Je mi 28 let, bydlím v hlavním městě ČR. Webdesignem a programováním se zabývám již několik let. Pracuji jako programátor ve společnosti AndWeb s.r.o. Ovládám velmi dobře XHTML, CSS, PHP, MYSQL. Středně pokročilou znalost jQuery, 2D Grafika (Adobe Photoshop, SEO optimalizace.


Oblíbené stránky


Cizí krmivo


Přispívám a nechávam si poradit


Sport, sleduji, hraji


Reklama

Španělský fotbal - spanelskyfotbal.cz
Hlavní Logo

Poslední komentáře

  • RJ -

    [369] Když nebudeš vědět něco konkrétního, klidně se zeptej, ale neptej se na celý skript :)

  • Smoula -

    .. sak to ze si to len „vyjal“… neboj zaklady mam dobre len ma zaujala tvoja 2.varianta na mojej stranke mam tiez aktualizaciu vysledkov, len trosku zlozitejsiu…

    Ale ok.. idem sa potrapit :)

  • RJ -

    [367] Je to takový nástin, jak by to mohlo fungovat, vyjal jsem to jako torzo ze svého fotbalového webu.

    Pokud máš nějaké základy v PHP tak to dáš dokupy, pokud ne, tak se PHP nejdřív trošku nauč, stejně bys později nevěděl složitejší věci i kdybych Ti s tímto pomohl.

    :-)

  • Smoula -

    [366]

    Ahoj, mne sa paci ta 2.varianta – vytiahnes z DB aktualne zapasy, zadas vysledky a potom POSTnes, len nejako mi ten script nejde rozbehat :(

  • RJ -

    [365] Ano, samozřejmě. Jednotlivé inputy ponesou název pole. Tj.

    [code]

    A poté projdeš post POLE a uložíš

    foreach ($_POST[„gol1“] …)
    [/code]

Statistika

  • Článků celkem: 15
  • Komentářů celkem: 108

Blogspot » PHP » Jak vytvořit PHP kalendář?

Jak vytvořit PHP kalendář?

Sobota, 12 .Ledna 2008, 12:01, prečteno 10421x

Potřebujete PHP kalendář? Hledal jsem na internetu a nacházel jsem příliš robustní třídy či velmi ošklivé kódy, které začátečník nemůže chápat. Napsal jsem vlastní kalendář, jehož kód je velmi krátký a myslím, že nikomu nebude dělat problémy.

<?php
// odkazy na konkretni dny
$selected_days[2009][2][24] = true;
$selected_days[2009][2][27] = true;
$selected_days[2009][3][5]  = true;
$selected_days[2009][3][17] = true;
$selected_days[2009][4][20] = true;

// prvotni inicializace, nastavime aktualni cas,  mesic a rok
$date = time();
$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);


// pokud v GETu existuje mesic ci rok, tak "aktualni" mesic a rok je ten z URL
if ($_GET["year"]) $year = (int) $_GET["year"];
if ($_GET["month"]) $month = (int) $_GET["month"];

// pro dalsi zobrazeni potrebujeme prvni den v mesici, pocet dni v mesici ...
$first_day = mktime(0,0,0,$month, 1, $year);
$title = date('n', $first_day);
$day_of_week = date('D', $first_day);
$days_in_month = date('t', $first_day);


// ceske mesice
$cz_months = array( 
                    1 => "Leden",
                         "Únor",
                         "Březen",
                         "Duben",
                         "Květen",
                         "Červen",
                         "Červenec",
                         "Srpen",
                         "Září",
                         "Říjen",
                         "Listopad",
                         "Prosinec"
                );

$prevY = $nextY = $year;
$prevM = $nextM = $month;

// nastaveni odkazu pro predchozi a nasledujici mesic / rok
if ($month - 1 < 1) { $prevM = 12; $prevY--;} else {$prevM = $month - 1;}; 
if ($month + 1 > 12){ $nextM = 1; $nextY++;} else {$nextM = $month + 1;};  

$prev = "<a href='?month=".($prevM)."&year=".($prevY)."'><<</a>";
$next = "<a href='?month=".($nextM)."&year=".($nextY)."'>>></a>";

// timto si vyplnime v kalendari prazdne bunky, 1 den v mesici a prvniho neni vzdy pondeli ...
$emptyTD = array("Mon" => 0, "Tue" => 1, "Wed" => 2, "Thu" => 3, "Fri" => 4, "Sat" => 5, "Sun" => 6);
$blank = $emptyTD[$day_of_week];

// vykresleni kalendare
echo "<table border=1 align=center id=calendar>";
echo "<tr><th>$prev</th><th colspan=5> ".$cz_months[$title]." $year</th><th>$next</th></tr>";
echo "<tr><td width=42>M</td><td width=42>T</td><td width=42>W</td><td width=42>T</td><td width=42>F</td><td width=42>S</td><td width=42>S</td></tr>";

$day_count = 1;

echo "<tr>";

// zde prave zjistime pocet prazdnych bunek pred 1 dnem v mesici 
while ( $blank > 0 )
{
  echo "<td></td>";
  $blank--;
  $day_count++;
}

$day_num = 1;


// veskere dny v kalendari
while ($day_num <= $days_in_month)
{
    
    if (isset($selected_days[$year][$month][$day_num]))
    {
    
      if($day_num == $day)
      {
        echo "<td class='today'><b><a href='?year=$year&month=$month&day=$day_num'>$day_num</a></b></td>";
      }
      else
      {
        echo "<td class='days'><a href='?year=$year&month=$month&day=$day_num'>$day_num</a></td>";
      }
    
    }
    else
    {
        echo "<td class='days'>$day_num</td>";  
    }   
    
    


  $day_num++;
  $day_count++;
  
  if ($day_count > 7)
  {
    echo "</tr><tr>";
    $day_count = 1;
  }
}


// timto zajistime spravne zobrazeni kalendare a dopocitani prazdnych bunek
while ($day_count >1 && $day_count <=7)
{
  echo "<td> </td>";
  $day_count++;
}

echo "</tr></table>";
?>
Soubor ke stažení (kalendar.zip)

Hodnocení: Počet hlasů: 20

Komentáře

Pavel Kraus [1] -reagovat- 13.03. 00:16 194.228.201.---

No já tedy nevím, ale mě se zdá, ukazuje nějak divně né? A jak se nastavuje startday – jsme v čechách… :-(

Roman Janko [2] -reagovat- 13.03. 20:44 78.102.107.---

[1] Pavel Kraus Co se ti ukazuje divne? Jinak zahlavi dnu , na to staci jednoduche pole ne?

Ross [3] -reagovat- 01.01. 20:15 86.43.198.---

Velice dobrý a funkční příklad – mám ještě dotaz, jak by se to dalo udělat, že bych si u vybraných dní mohl změnit jednoduše barvu pozadí k danému dni a např. udělat i z čísla odkaz. _ poradíš? Díky

Roman Janko [4] -reagovat- 07.01. 13:34 62.168.38.---

[3] Ross
Velmi jednodusse, vecer priklad rozsirim

Steave [5] -reagovat- 18.02. 09:27 90.178.54.---

Pěkné, a co kdyby měsíce byly česky? Tu část s odkazy na jednotlivé dny bych taky potřeboval :P

Díky

Roman Janko [6] -reagovat- 21.02. 22:52 89.176.35.---

Kód upraven (pouze v prikladu, ne v souboru kalendar.zip )

Jane [7] -reagovat- 04.05. 21:19 90.178.238.---

Ahoj, tak se si tento kalendář stáhla, ale nezobrazí se mi.. Nevim, v čem je chyba… Poradíte pls?? Dělám to v programu Evrsoft First Page 3.0

Roman Janko [8] -reagovat- 07.05. 13:14 62.168.38.---

[7] Jane Tady je asi kazda rada zbytecna … Je nutne si uvedomit ze to je dynamicky kod, bez podpory PHP a APACHE to nespustite. Prectete si o tom neco na http://linuxsoft.cz/php

Aleš [9] -reagovat- 30.10. 09:14 84.233.160.---

Ahoj, není mě jasný význam proměnných $selected_days, může mi to někdo vysvětlit? Díky

Aleš [10] -reagovat- 30.10. 10:31 84.233.160.---

[9] Aleš tak už nic :-)

j.ree [11] -reagovat- 27.04. 14:49 94.113.204.---

je to sice pekny skript, ale docela mi tam vadi, ze nemas osetreny fakt, ze aktualni datum se zvyraznuje jak v budoucich tak i v minulych mesicich. Cize, dneska je 27.4., zvyrazneno budu mit i 27.5, 27.3 apod … :)

RJ [12] -reagovat- 28.04. 00:18 78.102.129.---

[11] j.ree To se da lehce opravit :]

j.ree [13] -reagovat- 28.04. 15:33 94.113.204.---

[12] RJ Vsak jsem si to taky opravil, stacila jedna podminka navic :)

Olííí [14] -reagovat- 05.05. 20:52 88.103.77.---

Ahoj,mám takovej blbej dotaz..trochu se tu orientuju v tom kódě, ale některý věci mi pořád nejsou tak úplně jasný. Nemáš k tomu přesnější popisek? Trochu v tom plavu a newim co je co :D jinak obdivuju samozrejme ;)dyžtak mi písni na maila=)

Přidat komentář

Nový vzkaz

© 2005 - 2008 RJWEBDESIGN, všechna práva vyhrazena.
Nabízíme: Tvorba www stránek
Kontakt: telefony +420 777 856 657 | E-mail: admin@rjwebdesign.net
Spolupracujeme: Aria Studio, MXART Partnerské weby: Pesonline.cz, EuroFotbal.cz, SpanelskyFotbal.cz

© 2008 RJWEBDESIGN