Autor Zpráva
pito
Profil
Zdar,

Mám udělané dny ve stylu YYYY-MM-DD které jsou obaleny v odkazu.
Uživatel může na ně kliknout a pokračovat dál.

Ja teď potřebuji udělat aby pět dni před aktuálním datem byly ty dny neaktivní jako odkaz.

Tedy

if (isset($selected["id"])) {
                    echo "<td class='date_selected clickable'><a href='select_time.php?date_id=" . $selected["id"] ."'>$day_num</a></td>";
                } else {
                    echo "<td>$day_num</td>";
                }

místo $selected["id"] bych měl mít asi $now tedy aktuální den a pak nějak zapsat těch pět dní před,ale nevím jak na to. Nebo udělat další podmínku?
Pomohl by mi někdo naznačit jak bych to mohl vyřešit?
Tomášeek
Profil
pito:
date, strtotime a podmínka (na základě níž vypíšeš odkaz nebo prostý text/nic).
pito
Profil
jo,ale jak zapíšu ty 5 dní před aktuálním datem. Nevím jestli to dobře vysvětluji. Ukážu to na příkladu

$aktualne = date("Y-m-d", Time())

if ($aktualne < 5 + $aktualne) {
echo "<a href="">$datum</a>";
} else {
echo $datum;
}
stejne to mam blbe ukazu to jinak

dnes je 2017-07-27

vypis by mel vypadat takto
2017-07-27
2017-07-28
2017-07-29
2017-07-30
2017-07-31
<a href="rezervace.php?datum=2017-08-01">2017-08-1</a>
<a href="rezervace.php?datum=2017-08-02">2017-08-2</a>
<a href="rezervace.php?datum=2017-08-03">2017-08-3</a>
.....

no prostě aby 5 dní před aktuálním datem nešlo kliknout na odkaz
Kcko
Profil
pito:
Ty odkazy máš v nějakém poli, resp ty datumy?
Co takhle?
<?php

$dates = array(

    '2017-07-19',
    '2017-07-20',
    '2017-07-21',
    '2017-07-22',
    '2017-07-23',
    '2017-07-24',
    '2017-07-25',
    '2017-07-26',
    '2017-07-27',
    '2017-07-28',
    '2017-07-29',
    '2017-07-30',
    '2017-07-31',
    '2017-08-01',
    '2017-08-02',
    '2017-08-03',
    '2017-08-04',

);


$dt = new \DateTime('+5 day');
foreach ($dates as $date)
{
    $dtDate = new \DateTime($date);

    if ($dtDate > $dt)
    {
        printf('<a href="rezervace.php?datum=%s">%1$s</a> <br />', $dtDate->format('Y-m-d'));
    }
    else
    {
        printf("%s <br />", $dtDate->format('Y-m-d'));
    }
}
pito
Profil
nepouzivam pole.

a neslo by to nejak takto?
strtotime("+5 days")
Kcko
Profil
pito:
Je celkem jedno co pouzivas, proste tam akorát strčíš formát YYYY-MM-DD. Asi šlo, používám DateTime objekt, protože se s tím dobře pracuje, ten můj kód je funkční, vyzkoušej si to.
Tomášeek
Profil
pito:
Mrzí mě, že čteš napůl. Odkázal jsem tě na date a strtotime, z nějakého důvodu jsi druhou funkci ignoroval. V #5 jsi pak nějaký fragment kódu dal, ale...

„neslo by to nejak takto?“
... funguje to? Pokud ano, tak šlo. Pokud ne, tak asi nějak podobně, ale trochu jinak. Nastuduj si v PHP Manuálu více o té funkci, zapoj logické uvažování a měl bys být schopen to dát dohromady. Na tom kousku kódu nic špatně není, čili, „ano, takto by to možná mohlo jít“.

Druhá věc, že Kcko dodal funkční kód trochu jiným stylem, nicméně i tak používaným (divím se, že tě nenechal ještě chvilku přemýšlet a nastudovat něco nového).

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: