| Autor | Zpráva | ||
|---|---|---|---|
| Naprostý neprogramátor Profil * |
#1 · Zasláno: 18. 1. 2013, 23:24:52
Dobrý den,
předně bych chtěl upozornit, že s php mám zkušenosti co se týče samotného psaní kódu v řádech desítek minut, čili jsem naprostej amatér. Nicméně snažím se vytvořit snad jednoduchý kus kódu, který by mi vypsal, nebo spíš vyhodil na-includované soubory v závislosti na aktuálním datu(mu). Mám toto a bohužel mi to háže více souborů naincludovaných a přitom jsem si myslel, že pro jednu podmínku existuje pouze jedna možnost vypsání echa, jestli mi rozumíte. <?php
echo date("d.m.Y");
define('DIR', __DIR__); // vytvori konstantu DIR a naplni ji obsahem php promenne __DIR__
if ( (date("d.m.Y") >= "09.01.2013") && (date("d.m.Y") <= "19.01.2013") )
include(DIR.'/calendar/1.php');
if ( (date("d.m.Y") >= "20.01.2013") && (date("d.m.Y") <= "23.01.2013") )
include(DIR.'/calendar/2.php');
if ( (date("d.m.Y") >= "24.01.2013") && (date("d.m.Y") <= "30.01.2013") )
include(DIR.'/calendar/3.php');
if ( (date("d.m.Y") >= "31.01.2013") && (date("d.m.Y") <= "02.02.2013") )
include(DIR.'/calendar/4.php');
if ( (date("d.m.Y") >= "03.02.2013") && (date("d.m.Y") <= "10.02.2013") )
include(DIR.'/calendar/5.php');
if ( (date("d.m.Y") >= "11.02.2013") && (date("d.m.Y") <= "25.02.2013") )
include(DIR.'/calendar/6.php');
?>Děkuji předem za Vaši případnou pomoc. |
||
| tiso Profil |
#2 · Zasláno: 18. 1. 2013, 23:37:30
Porovnávaš reťazce a tam to funguje inak, ako pri bežných číslach. Preto sa dátumy porovnávajú usporiadané naopak: rok - mesiac - deň.
|
||
| abc Profil |
Nejlépe porovnávat timestampy:
<?php
define('DIR', __DIR__); // vytvori konstantu DIR a naplni ji obsahem php promenne __DIR__
$now = time();
if (($now >= strtotime("09.01.2013")) && ($now <= strtotime("19.01.2013")))
include (DIR . '/calendar/3.php');
|
||
| Naprostý neprogramátor Profil * |
#4 · Zasláno: 18. 1. 2013, 23:46:43 · Upravil/a: Naprostý neprogramátor
už to funguje, děkuji moc :)
tak nefunguje to zcela správně... teďka - 19.01.2012 se mi stále zobrazuje první podmínka, místo toho, aby se to přehodilo do té druhé. Nevíte někdo, jak je to možné? Vždyť teďka je přece aktuální datum větší nebo roven 19. 1. 2013 a zároveň menší nebo roven 23. 1. 2013. Nebo se mýlím?.. ještě raději přikládám kód: <?php
define('DIR', __DIR__); // vytvori konstantu DIR a naplni ji obsahem php promenne __DIR__
// pozor, slozka calendar je ulozena ve slozce pluginu php text widget
if ( (date("Y.m.d") >= "2013.01.09") && (date("Y.m.d") <= "2013.01.18") )
include(DIR.'/calendar/1.php');
if ( (date("Y.m.d") >= "2013.01.19") && (date("Y.m.d") <= "2013.01.23") )
include(DIR.'/calendar/2.php');
if ( (date("Y.m.d") >= "2013.01.24") && (date("Y.m.d") <= "2013.01.30") )
include(DIR.'/calendar/3.php');
if ( (date("Y.m.d") >= "2013.01.31") && (date("Y.m.d") <= "2013.02.02") )
include(DIR.'/calendar/4.php');
if ( (date("Y.m.d") >= "2013.02.03") && (date("Y.m.d") <= "2013.02.10") )
include(DIR.'/calendar/5.php');
if ( (date("Y.m.d") >= "2013.02.11") && (date("Y.m.d") <= "2013.02.25") )
include(DIR.'/calendar/6.php');
if ( (date("Y.m.d") >= "2013.02.26") && (date("Y.m.d") <= "2013.03.02") )
include(DIR.'/calendar/7.php');
if ( (date("Y.m.d") >= "2013.03.03") && (date("Y.m.d") <= "2013.03.9") )
include(DIR.'/calendar/8.php');
if ( (date("Y.m.d") >= "2013.03.10") && (date("Y.m.d") <= "2013.03.16") )
include(DIR.'/calendar/9.php');
if ( (date("Y.m.d") >= "2013.03.17") && (date("Y.m.d") <= "2013.03.30") )
include(DIR.'/calendar/10.php');
if ( (date("Y.m.d") >= "2013.03.31") && (date("Y.m.d") <= "2013.04.6") )
include(DIR.'/calendar/11.php');
if ( (date("Y.m.d") >= "2013.04.7") && (date("Y.m.d") <= "2013.04.13") )
include(DIR.'/calendar/12.php');
if ( (date("Y.m.d") >= "2013.04.14") && (date("Y.m.d") <= "2013.04.20") )
include(DIR.'/calendar/13.php');
if ( (date("Y.m.d") >= "2013.04.21") && (date("Y.m.d") <= "2013.04.27") )
include(DIR.'/calendar/14.php');
if ( (date("Y.m.d") >= "2013.04.28") && (date("Y.m.d") <= "2013.05.04") )
include(DIR.'/calendar/16.php');
if ( (date("Y.m.d") >= "2013.05.05") && (date("Y.m.d") <= "2013.05.12") )
include(DIR.'/calendar/17.php');
if ( (date("Y.m.d") >= "2013.05.13") && (date("Y.m.d") <= "2013.05.19") )
include(DIR.'/calendar/18.php');
?>jdu zkusit ty timestampy |
||
| abc Profil |
Zkus na začátek skriptu:
date_default_timezone_set('Europe/Prague');Mám podezření na to, že máš stále 18.1. Případně si vypiš echo date("Y.m.d");
|
||
| Naprostý neprogramátor Profil * |
#6 · Zasláno: 19. 1. 2013, 00:28:55 · Upravil/a: Naprostý neprogramátor
jojo, chápu jak jsi to myslel... bohužel ale teďka jak jsem to předělal na timestamp, tak mi to hlásí chybu... takhle to teda mam napsany:
<?php
date_default_timezone_set('Europe/Prague');
define('DIR', __DIR__);
// vytvori konstantu DIR a naplni ji obsahem php promenne __DIR__
// pozor, slozka calendar je ulozena ve slozce pluginu php text widget
$now = time();
if (($now >= strtotime("09.01.2013")) && ($now <= strtotime("19.01.2013")))
include(DIR.'/calendar/1.php');
if (($now >= strtotime("2013.01.19") && ($now <= strtotime("2013.01.23")))
include(DIR.'/calendar/2.php');
if (($now >= strtotime("2013.01.24") && ($now <= strtotime("2013.01.30")))
include(DIR.'/calendar/3.php');
if (($now >= strtotime("2013.01.31") && ($now <= strtotime("2013.02.02")))
include(DIR.'/calendar/4.php');
if (($now >= strtotime("2013.02.03") && ($now <= strtotime("2013.02.10")))
include(DIR.'/calendar/5.php');
if (($now >= strtotime("2013.02.11") && ($now <= strtotime("2013.02.25")))
include(DIR.'/calendar/6.php');
if (($now >= strtotime("2013.02.26") && ($now <= strtotime("2013.03.02")))
include(DIR.'/calendar/7.php');
if (($now >= strtotime("2013.03.03") && ($now <= strtotime("2013.03.09")))
include(DIR.'/calendar/8.php');
if (($now >= strtotime("2013.03.10") && ($now <= strtotime("2013.03.16")))
include(DIR.'/calendar/9.php');
if (($now >= strtotime("2013.03.17") && ($now <= strtotime("2013.03.30")))
include(DIR.'/calendar/10.php');
if (($now >= strtotime("2013.03.31") && ($now <= strtotime("2013.04.6")))
include(DIR.'/calendar/11.php');
if (($now >= strtotime("2013.04.7") && ($now <= strtotime("2013.04.13")))
include(DIR.'/calendar/12.php');
if (($now >= strtotime("2013.04.14") && ($now <= strtotime("2013.04.20")))
include(DIR.'/calendar/13.php');
if (($now >= strtotime("2013.04.21") && ($now <= strtotime("2013.04.27")))
include(DIR.'/calendar/14.php');
if (($now >= strtotime("2013.04.28") && ($now <= strtotime("2013.05.04")))
include(DIR.'/calendar/16.php');
if (($now >= strtotime("2013.05.05") && ($now <= strtotime("2013.05.12")))
include(DIR.'/calendar/17.php');
if (($now >= strtotime("2013.05.13") && ($now <= strtotime("2013.05.19")))
include(DIR.'/calendar/18.php');
?>a ta chyba je: Parse error: syntax error, unexpected T_INCLUDE in /home/users/rzelenka/westham.cz/web/wp-content/plugins/php-text-widget/plugin.php(18) : eval()'d code on line 14 z čehož můžete usoudit, že ukázku můžete vidět na westham.cz nad patičkou webu... verze bez time stamp mi funguje... Díky moc, nechám to tak :) |
||
| abc Profil |
Ještě ti to trochu vylepším, ať to není tak zbytečně ukecané:
<?php
date_default_timezone_set('Europe/Prague');
define('DIR', __DIR__);
$array = array(
// zacatek => konec
'9.1.2013' => '19.1.2013',
'19.1.2013' => '23.1.2013',
'24.1.2013' => '30.1.2013',
);
$now = time();
$i = 1;
foreach ($array as $start => $end) {
if (strtotime($start) <= $now && $now <= strtotime($end)) {
include(DIR . "/calendar/$i.php");
break;
}
$i++;
}EDIT: podmínkou je ovšem to, že jdou kalendáře stejně za sebou jako data v poli EDIT2: kdybys měl zájem můžu ti to přepsat tak, že budeš zadávat pole ve tvaru $array = (
//cislo cal. => pocatek => konec
1 => array('9.1.2013' => '19.1.2013'),
); |
||
| Tori Profil |
#8 · Zasláno: 19. 1. 2013, 08:01:46
abc:
Místo tohoto: $now = time(); bych asi použila $now = strtotime('today 00:00:00'); Jinak z toho vyjde nespojitá řada, např. v čase mezi 23.1.2013 01:00 a 24.1.2013 01:00 se neincluduje nic.
Další možnost je porovnávat den v roce: $now = date('z');
// ...
if (date('z', strtotime($start)) <= $now && $now <= date('z', strtotime($end))) { |
||
| petr 6 Profil |
#9 · Zasláno: 19. 1. 2013, 21:03:18
Tori:
Další možností, jak zabránit nespojité řadě, je, že se v každé podmínce jedna nerovnost změní na ostrou a příslušné datum posune o jeden den Naprostý neprogramátor: V kódu v [#6] máš víc levých závorek než pravých, proto ta chyba. |
||
|
Časová prodleva: 14 let
|
|||
0