Autor Zpráva
EMP
Profil
Mám takovýto skript na vypisování ze souboru testy.xml:
$xml=simplexml_load_file("testy.xml");
foreach ($xml->komentar as $komentar){
echo'
<div class="nadpis-text">
<span>';
if ($komentar->schoolsubject=="Občanská výchova") {echo 'Občanská vých.';} else { echo $komentar->schoolsubject;} echo '</span></div>
<div class="line-text"></div>
<div class="koment">
<p class="koment-predmet">';
if ($komentar->subject != ""){echo 'Předmět: '.$komentar->subject;} echo '</p>
<p class="koment-date">Datum testu: '.$komentar->den.'. '.$komentar->mesic.'. '.$komentar->rok.'</p><br>
<p class="koment-message">'.$komentar->message.'</p>
<p class="koment-odkaz">';
if ($komentar->odkaz != ""){echo 'Odkaz: <a href="'.$komentar->odkaz.'" target="_blank">'.$komentar->odkaz.'</a>';} echo '</p>
</div>
<div class="line-bottom"></div>
<div class="podpis-text">
<span>'.$komentar->username.'</span></div>
';
}

Nešlo by nějak udělat, aby se toto vypsalo pouze, když reálné datum (datum u klienta na počítači) bude menší než "Datum testu"= $komentar->den + $komentar->mesic + $komentar->rok (řádek 11)?
Děkuji za rady
Taps
Profil
EMP:
Nešlo by nějak udělat, aby se toto vypsalo pouze,
Určitě by to šlo. Stačí si zjistit datum vytvoření souboru testy.xml a tento datum porovnávat se současným datumem.
Alphard
Profil
Funkcí mktime() můžete snadno získat timestamp pro porovnání. Jestli není nějaký zvláštní důvod používat datum u klienta, vzal bych serverový čas.
EMP
Profil
Taps:
Já nemyslím datum vytvoření souboru testy.xml, myslím tím datum vytvoření příspěvku zapsaného v $komentar->den + $komentar->mesic + $komentar->rok
Alphard:
datum u klienta
ne.. to klidně serverový čas vezmu... (to bylo jen pro vysvětlení)
Funkcí mktime() můžete snadno získat timestamp pro porovnání.
Tu funkci jsem teda snad pochopil, ale nevím, jak to převést do praxe, jsem v php začátečník, tak jestli byste mi nemohli poradit trochu konkrétněji.

Díky
Alphard
Profil
EMP:
Není co řešit, dle manuálu dosadíte parametry, funkce vám vrátí timestamp data. Aktuální timestamp získáte pomocí time(). Pak stačí porovnat
if (time() < mktime())
EMP
Profil
Alphard:
Díky, napsal jsme to takhle:
foreach ($xml->komentar as $komentar){
$maxdate = "2011-$komentar->mesic-$komentar->den";
  if (date('Y-m-d') < date($maxdate)) {
  echo'nějaký text';
  }
}

Ale když si nechám vypsat čas funkcí time(), napíše mi to 1296578835, pomůžete mi to rozluštit? :-)
Alphard
Profil
date($maxdate) nedává smysl.

napíše mi to 1296578835, pomůžete mi to rozluštit?
To je timestamp (stačí hledat). Není třeba ho luštit, jen porovnat.

if (time() < mktime(0, 0, 0, (int) $komentar->mesic, (int) $komentar->den, (int) $komentar->rok))
EMP
Profil
Alphard:
date($maxdate) nedává smysl.
...sry, to jsem trochu pomotal
mělo to být takto:
foreach ($xml->komentar as $komentar){
$komdate = "2011-$komentar->mesic-$komentar->den";
$maxdate = "2011-09-01";
  if ((date('Y-m-d') < $komdate) AND ($komdate < $maxdate)) {
    echo'nějaký text';
  }
}


Ale udělal jsem to jak říkáš...
Díky moc

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: