Autor Zpráva
Naprostý neprogramátor
Profil *
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
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');
    
atd.
Naprostý neprogramátor
Profil *
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 *
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
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
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.

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: