Starší komentáře ke článku: Kdo má dnes svátek?

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Martin Drozd

Datum vložení: 12.9.2001 10:22:17

Správný výpočet přestupného roku je následující:

<I>if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0))</I>

Pokud výraz vrací TRUE, pak je rok $year přestupný. Nestačí tedy pouze zjistit, zda je rok beze zbytku dělitelný 4. Toto nefunguje např. na rok 1900 nebo 2100. Rok 2100 je sice daleko, takže tento skript na zjišťování svátků v roce funguje bez problémů, ale principiálně je to špatně. Můžete si to sami vyzkoušet.

P.S.Myslím, že PHP nabízí funkci, která zjistí, zda je daný rok přestupný či ne. (Možná je to něco jako IsLeapYear nebo LeapYear).

Avatar

Autor komentáře: Milan Jakel

Datum vložení: 12.9.2001 14:35:42

Zdravim Vás,
díky za upozornění, jistě, nejpozději do roku 2099, si skript všichni opravíme :-)
M.J.

Avatar

Autor komentáře: Michal Blažke

Datum vložení: 12.9.2001 15:08:22

Právě proto, že skript - jak sám autor připouští - tady asi nebude "od teď až do skonání světa", se mi zdá úsměvné nejen patlat se s přestupností roku 1900, ale už vůbec s nějakou dělitelností - prosté
if ($rok==2004) || ($rok==2008)
by určitě postačilo také :-)
Chtěli-li bychom být ortodoxní, pak bychom spíše měli uvažovat o proměnné
$je_prestupny={<I>NejakaMetodaJakOdpovedetAnoNe</I>}
a tu pak používat ve všech souvisejících výrazech jako True nebo False...
... vono se to taky pak líp čte :-)
---
Ale to už je spíš téma na samostatný článek o praktické optimalizaci; autorův článek jsem samozřejmě přečetl s chutí :-)

Avatar

Autor komentáře: Kai-man

Datum vložení: 14.9.2001 13:08:19

hmmm a proč se nervovat s přestupným rokem? stačí na to jít s úplně jiné strany :-)

tabulka v databázi:
<I>CREATE TABLE svatky (
datum varchar(6),
svatek varchar(50)
);</I>

datum se tam vkládá ve formátu "dd.mm." (pro některé "05.06.") a potom stačí dodat jeden script:
<I>
<?php
$dnes=Date(("d.m.Y"),Time());
$dness=Date(("d.m."),Time());
$z=Time()+86400;
$zitra=Date(("d.m."),$z);
$ds=MySQL_Query("SELECT svatek FROM svatky WHERE datum='$dness'");
$zs=MySQL_Query("SELECT svatek FROM svatky WHERE datum='$zitra'");
$ds1=MySQL_Fetch_Array($ds);
$zs1=MySQL_Fetch_Array($zs);
echo "Dnes je ".$dnes.". Dneska má svátek ".$ds1["svatek"]." a zítra ".$zs1["svatek"].".";
?>
</I>

Tak a je to a je vyřešený i přestupný rok, jelikož tam dáme datum "29.02.". Upravit si to může každý jak chce, je to jen na ukázku :-)

Avatar

Autor komentáře: Milan Jakel

Datum vložení: 14.9.2001 14:31:43

Zdravim Vas,
diky za Vas pohled na reseni problemu!
Tisic programatoru -> tisic reseni.
At se Vam dari.
M.J.

Avatar

Autor komentáře: Jednorozec

Datum vložení: 7.11.2001 10:29:19

Myslim si, ze patlat se s DB pro zjisteni svatku (vzhledem k obsahlosti dat) je naprosty nesmysl, protoze je daleko jednodussi pouziti. A to pres pole o dvou rozmerech.

$svatek = Array(1=>Array(1=>"","Karina","Radmila","Diana" ...

Potom uz jen pouziji:
svátek má <? echo $svatek[(int)Date(m)][(int)Date(d)] ?>

A cela veda je hotova :o)

Avatar

Autor komentáře: petr

Datum vložení: 23.11.2001 14:12:12

Už třeba proto, že s daty té databáze můžeš dál operovat.. něco k tomu přidávat apod.. vyhledávat v ní...nemusí být jen stránky se svátkem dnes..zítra.. jde to využít ještě dál..
Ale na pokud by šlo jen o toto.. tak máš určitě pravdu.. ale ve finále výsledek je stejný, takže je to úplně jedno..podle mě

Avatar

Autor komentáře: Studio POHODA

Datum vložení: 1.4.2004 3:52:43

Jedno to neni - uz jen z duvodu rychlosti :-)
Ja osobne jsem to resil take prez pole.
Ale to je pouze nazor...

Avatar

Autor komentáře: Vitis

Datum vložení: 26.7.2004 22:40:59

Prosimvas nemohl by mi to nekdo poslat cely (uplne aby se mi to i zobrazovalo) Nevim kde delam chybu ale porad mi to pise: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in... A kdyz napisui skcipt pro zobrazeni tak se mi tam misto promeny neukaze nic...

Avatar

Autor komentáře: Jirka

Datum vložení: 10.8.2006 15:24:14

Dobrý den, chci se zeptat v jaké kodové jazykové stránce jste ten .sql soubor zakódoval ? Tipoval bych cp1250, ale jakmile naimportuji data do db, tak se mi i přesto že mam nastaveno cp1250 rozhodí háčky a čárky. Prosím o pomoc s tímto problemem. Děkuji za odpověď i pomoc. A děkuji za pěkný tutoriál !

Zpět na článek | Úvodní stránka Interval.cz