Autor Zpráva
Hozna.P
Profil *
Ahoj všem, mám tento php kód
  echo '<normal>'.substr($jdate->toMySQL(true),11,8).'</normal> <strong>'.$item->name.':</strong> <a href="index.php?option=com_joomsport&task=view_match&id='.$item->match_id.'">'.$post.' ...</a>';
pro zobrazení komentářů v následujícím tvaru "19:56:55 Honza.P:Napsaný komentář..." a potřeboval bych poradit jak udělat když najedu ukazatelem na ten čas aby se tam ukázal čas včetně data napsání jakoby přes atribut title. Po najetí myši by se mělo ukázat něco takového 19:56:55 16.06.2012. Snad mě chápete. Děkuji za jakoukoliv radu

Moderátor Petr ZZZ: Titulek „Atribut title“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Chamurappi
Profil
Reaguji na Hozna.Pa:
jakoby přes atribut title
A v čem je problém? Proč tedy nepoužiješ atribut title?

Mimochodem, HTML značka <normal> neexistuje (z čehož plynou různé možné problémy).
Honza.P
Profil
Chamurappi:
Nevím jak atribut použít v tomto kódě. V PHP jsem začátečník


Celý od vypadá takto
<ul>
    <?php foreach ($items as $item) { ?>
    <li><?php 
    

    $post = substr($item->comment,0,26); // Zobrazí zprávu (komentář)
  $tz = new DateTimeZone(JFactory::getApplication()->getCfg('offset'));

  $jdate = new JDate($item->date_time);

  $jdate->setTimezone($tz);



  echo '<normal>'.substr($jdate->toMySQL(true),11,8).' <strong>'.$item->name.':</strong> <a href="index.php?option=com_joomsport&task=view_match&id='.$item->match_id.'">'.$post.' ...</a>';     
    ?></li>
    <?php } ?>
</ul> 
Chamurappi
Profil
Reaguji na Honzu.P:
V PHP jsem začátečník
Co konkrétně nevíš? Spojovat řetězce umíš, vypisovat proměnné také… alespoň ten kód, který jsi předložil, tyto činnosti provádí, takže nepotřebuješ umět PHP, stačí ti zkoušet a přemýšlet.
Alphard
Profil
Chamurappi:
zkoušet a přemýšlet
Raději to druhé.

Používáte mně neznámou třídu JDate, ale zdá se mi, že buď je nevhodná, nebo ji používáte nevhodně.

V konstruktoru předáváte $item->date_time, to bude zřejmě klasický formát 2012-06-17 02:44:04 (doufám, že sloupec má typ datetime a ne nějaký string).
Ovšem při výpisu používáte metodu toMySQL() a potřebný tvar data upravujete pomocí substr(), což se mi zdá praštěné. Rozumná třída pro práci s časem by měla obsahovat formátovací metodu přijímací parametry date() nebo strftime().
Jan Tvrdík
Profil
Alphard:
Používáte mně neznámou třídu JDate
Trochu jsem hledat a vypadá to na třídu z Joomly. Podle API by měla být k dispozici metoda toFormat, která akceptuje formát stejný jako strftime. Takže $jdate->toMySQL(true),11,8) by mělo být ekvivalentní $jdate->toFormat('%T').
Honza.P
Profil
Takto vytvořený kód používám z důvodu, že tento kod, který jsem používal předtím

echo '<strong>'.$item->name.' ('.substr($item->date_time,11,8).') : </strong><a href="index.php?option=com_joomsport&task=view_match&id='.$item->match_id.'">'.$post.' ...</a>';  

zobrazoval čas ve formátu bez GMT+2, takže když byl komentář napsán 19:56:55 výstup byl 17:56:55.


Alphard:
Potřebný tvar upravuji z důvodu, že tvar 2012-06-17 02:44:04 je příliš dlouhý a proto zobrazuji jen čas bez data. Proto jsem se ptal jak bych mohl po najetí myši na čas zobrazit celý ten formát 2012-06-17 02:44:04
Amunak
Profil
Honza.P:
Možná bys mohl zobrazovat relativní datum (před hodinou, třemi dny, týdnem, ...) a v title celé datum než to řešit takhle. Co když tam přijdu v poledne a uvidím 11:57:42 Někdo: ... a řeknu si aha, tady to žije, někdo sem napsal před třemi minutami; nenajedu na to, a přitom ten komentář bude třeba měsíc starý.

Když už, tak zobrazuj datum. A sekundy jsou, myslím, zbytečné.

Teď mě ještě napadá, že to možná nemáš pro komentáře k článkům nebo tak, ale třeba na nějaký chat. Pak to bude asi v pořádku. Každopádně případ, kdy tam uživatel přijde po delší době a vidí čas který může být několik dní starý bys měl řešit stejně.
Honza.P
Profil
Amunak:
Je to přesně tak, jak jsi napsal. Když uživatel přijde po delší době a bude tam 11:57:42 Někdo: ... tak si najede myší na ten čas a tam se mu ukáže celý ten formát včetně data. O nic jiného mi nejde :-(

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0