Autor Zpráva
_fantomas
Profil
Zdravím, potreboval by som napísať podmienku ze ak je prvý december zacne snežit a ak je dátum vačší ako 20 marec dalšieho roku tak prestane snežiť.
Sneženie mam vyriešené akúrat neviem dať dokopy tu podmienku.
Nevedeli by ste mi niekto pomôcť prosím?
Tomášeek
Profil
_fantomas:
Sice se k tobě na web asi nikdy nedostanu, ale... prosím, zapomeň na sněžení.
_fantomas
Profil
robim web pre inych za peniaze takže mne to môže byt fuk len plním požiadavky
Keeehi
Profil
_fantomas:
takže mne to môže byt fuk
A to je právě to, kde jsi úplně mimo. To že si klient něco přeje ještě neznamená, že mu to automaticky uděláš. Pokud chce nějakou blbost, tak mu to máš vysvětlit. On to vědět nemusí ale ty jsi ten profesionál co to vědět má. I když profesionál je asi silné slovo, neboť podmínky a práce s časem se probírá tak maximálně okolo páté kapitoly téměř jakékoli učebnice jakéhokoliv jazyka.
_fantomas
Profil
Takže toto fórum slúži nato aby si tu odbornici vyhonili ego uplne ma zhodili aký som amatér ale k tomu čo som potreboval bolo dodané že sa nato mam len vykašlat. Bravo ...
pcmanik
Profil
_fantomas:
Čo konkrétne nevieš? Prácu s podmienkami? Prácu s časom? Čo si skúšal? Si si istý že to chceš riešit v PHP? Ukáž kód.
Keeehi
Profil
_fantomas:
Takže toto fórum slúži nato aby si tu odbornici vyhonili ego uplne ma zhodili aký som amatér
Tady jde o něco jiného. Je to podobné, jako kdyby jsi přišel za nějakým kuchařem a chtěl od něj pomoci s nějakým receptem od Ládi Hrušky. Taky ti s ním nepomůže, protože ví, že by ti pak po něm bylo špatně. Rád ti ale pomůže při učení se třeba kuřecího vývaru.
mckay
Profil
_fantomas:
Předpokládejme, že to, že Ti na stránce bude sněžit je realizováno pomocí nějakého kódu, který do stránky vkládáš. Před lety, když jsem to zkoušel, to mohl být například externí javascript soubor. Pro účely tohoto příkladu umístěný v souboru snow.js.

Postup pak bude následující: Ověříme že je vhodný čas vložit do stránky skript pro sněžení a pokud bude, vložíme ho.

Logika za následujícím kódem:

Čas je uvnitř systému často reprezentován jako počet časových jednotek uplynulých od nějaké konkrétní doby.

My vytvoříme 3 proměnné, které budou obsahovat počáteční čas, od kterého začne sněžit ($startTime), čas po kterém již sněžit nebude ($endTime) a aktuální čas ($currentTime) s následujícími hodnotami:
// Stringová reprezentace času odpovídající formátu yyyy-mm-dd pro aktuální rok.
// Tzn. bude-li rok 2017, $startTime bude obsahovat 2017-12-01
$startTime = date("y") . "-12-01";  
$endTime = (date("y")+1) . "-03-20"; // Rok je zvýšen o 1, neb 'marec' se nachází v příštím roce.
$currentTime = date("Y-m-d");

Počet jednotek času od konkrétního data se v PHP dá získat z času a data ve vhodném formátu (a v tomto formátu to již máme) například pomocí funkce strtotime. Tuto funkci aplikujeme na naše proměnné, čímž získáme čísla reprezentující čas v daných okamžicích a tyto čísla porovnáme.

Má-li sněžení být vkládáno do stránky, potřebujeme aby pro $currentTime platilo následující:
1. Počet časových jednotek pro $currentTime musí být větší než počet časových jednotek pro $startTime
a zároveň:
2. Počet časových jednotek pro $currentTime musí být menší než počet časových jednotek pro $endTime

Připravíme si tedy funkci, která dokáže ze stringových časových údajů, které jsme si před chvílí vytvořili, říci zda má sněžit nebo nemá, pojmenujme si ji například checkDateIsInRange/3 a použijeme ji k rozhodnutí, zda vložíme do stránky kód co spustí sněžení (viz předpoklad který jsem uvedl v prvním odstavci).

$startTime = date("y") . "-12-01";  
$endTime = (date("y")+1) . "-03-20"; 
$currentTime = date("Y-m-d");

function checkDateIsInRange($currentTime, $startTime, $endTime)
{
    $current = strtotime($currentTime);
    $start = strtotime($startTime);
    $end = strtotime($endTime);

    return ($current >= $start && $current <= $end);
}

if (checkDateIsInRange($currentTime, $startTime, $endTime))
{
    // Tady bude kód který pouští sněžení ...
    echo "<script type=\"text/javascript\" src=\"snow.js\"></script>";
}

Samozřejmě, tahle kontrola by algoritmicky podobně šla napsat i v javascriptu a vykonat na straně uživatele (což může být příhodné z výkonnostního hlediska*).

__

Taková malá poznámka pod okraj: Přesně tenhle typ příspěvků, co můžeme pozorovat jako odpovědi, je podle mého, jeden z důvodů, proč Vám tahle diskuse tak umírá, a proč já osobně jsem sem s postupem času přestal mít zájem pravidelně chodit. Jasně, často si o to lidé říkají způsobem, kterým očekávají, že někdo udělá jejich práci za ně... ale ostatně, od toho tu víceméně jsme, ne? (Nepočítám-li odkázání diskutujících do přílušných sekcí Prací a zakázek, pokud chtějí příliš).

Co si myslím, že by býval byl vhodný přístup v tomto konkrétním případě, který by nedělal od začátku nepřátelskou atmosféru by bylo vytáhnout kód, který stejně všichni máte od momentu 1 v hlavě, postnout ho, ideálně doplnit o vysvětlení a až následně edukovat tázajícího o problémech v jeho přístupu.

Tak či onak, nežádám Vás o žádnou reakci, ani diskusi na toto téma. Potěšilo by mě však, kdybyste navrhovanému přístupu věnovali pár taktů svého procesorového času a třeba při příští otázce podobného charakteru ho zkusili aplikovat. :-)
_es
Profil
mckay [#8]:
Ak niekto žiada radu o nejakej „somarine“ tak môže byť dobrá rada aj to, poradiť mu, že to je somarina. Napríklad z rád o „protikopírovacích ochranách“ boli niektorí aj schopní pochopiť, že taká „ochrana“ má na web celkovo negatívny vplyv. Podobne by to snáď šlo aj pri takýchto nadbytočných „blbinkách“, ktoré len zbytočne zaťažujú počítač návštevníka a aj inak sťažujú normálne použitie stránky.
Kajman
Profil
mckay [#8]:

Když se ten php kód pustí v lednu 2018, tak bude kontrolovat, zda je datum v rozmezí 2018-12-01 až 2019-03-20, takže sněžit nebude. Myslím, že pro severní polokouli stačí porovnat stríngy m-d - že je >= než prosincová nebo <= než březnová hranice.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0