php datum

Programovacie jazyky, rady, poradňa...
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

php datum

Príspevok od používateľa funny102 »

Zdravím možno je to pre niekoho maličkosť resp bizarnosť no ja si nedám rady..
Niesom vyučený programátor ani s tím nepracujem často ale potreboval by som pomoc
cez príkaz <td><?php echo $order['date_added']; ?></td> vypsujem dátum 13/03/2014 - 12:41:40
Potreboval by som ho asi rovno aj skrátiť stačí len na 13/03/2014 a potom pridať 14 dní.
Pridať by som možno aj vedel no nemôžem ten čas od tial dostať.

Skúste mi trošku pomoc. Dakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

<?php
$datum = str_replace("/",".",reset(explode(" - ",$order['date_added'])));
echo date("d/m/Y", strtotime($datum . " +14 days"));
?>
keďže máš ten dátum v nenormalizovanom formáte, aký sa bežne nepoužíva, treba ho najprv upraviť. V prvom kroku funkciou explode rozdelím reťazec na dve časti podľa pomlčky do poľa. Funkciou reset zoberiem prvý prvok (teda dátum), a funkciou str_replace nahradím lomítka za bodky. Takýto dátum potom môžem spracovať funkciou strtotime kde rovno pridám 14 dní, a vypíšem cez date zase v tvojom formáte s lomítkami
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:

Kód: Vybrať všetko

<?php
$datum = str_replace("/",".",reset(explode(" - ",$order['date_added'])));
echo date("d/m/Y", strtotime($datum . " +14 days"));
?>
keďže máš ten dátum v nenormalizovanom formáte, aký sa bežne nepoužíva, treba ho najprv upraviť. V prvom kroku funkciou explode rozdelím reťazec na dve časti podľa pomlčky do poľa. Funkciou reset zoberiem prvý prvok (teda dátum), a funkciou str_replace nahradím lomítka za bodky. Takýto dátum potom môžem spracovať funkciou strtotime kde rovno pridám 14 dní, a vypíšem cez date zase v tvojom formáte s lomítkami
Najprv som si začal hladat postupne tie funkcie no neskor som zistil ze hore si mi to už spravil ja že je to len qoute...

Dakujem ti levmi pekne nečakal som ze len nakopírujem a hneď pôjde. Diky rovno som si pomenil všetky nech mi nezobrazuje čas ale iba dátum.
Dakujem
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: php datum

Príspevok od používateľa BX »

Alebo použiješ inteligentnejšiu vec - http://www.php.net/manual/en/class.datetime.php
a využiješ statickú metódu createfromformat

(Uvádzam Example #1 z manuálu)

Kód: Vybrať všetko

<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>
S triedou Datetime máš aj jednoduché pričítanie dní. Len ti treba dostatočnú verziu PHP (5.2 a viac)

A mimochodom, toto

Kód: Vybrať všetko

<td><?php echo $order['date_added']; ?></td>
sa dá prepísať na

Kód: Vybrať všetko

<td><?= $order['date_added'] ?></td>
...pri jednoduchých výpisoch sa to hodí :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

na ten výpis ale musí mať php >=5.4.0 alebo upraviť konfigurák a zapnúť short open tags
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:na ten výpis ale musí mať php >=5.4.0 alebo upraviť konfigurák a zapnúť short open tags
Zdravím až teraz som si to prečítal. /keď potrebujem pomoc/
no php verziu mám 5.3.3-7 + squeeze17. Ked tak.
Prešiel som na novu verziu eshopu a teraz som pozeral výpis chýb.
A našiel som chyby práve v tej faktúre pri dátume tri riadky tri chyby. (v riadku 29, 32, 35)

PHP Unknown: Only variables should be passed by reference in faktura.tpl on line n


Na fakture mi ich nevypisuje no iba v error liste.
riadok 29

Kód: Vybrať všetko

<td><?php $datum = str_replace("/",".",reset(explode(" - ",$order['date_added']))); echo date("d/m/Y", strtotime($datum)); ?></td></tr>
Riadok 32

Kód: Vybrať všetko

<td><?php $datum = str_replace("/",".",reset(explode(" - ",$order['date_added']))); echo date("d/m/Y", strtotime($datum)); ?></td>
Riadok 35

Kód: Vybrať všetko

<td><?php $datum = str_replace("/",".",reset(explode(" - ",$order['date_added']))); echo date("d/m/Y", strtotime($datum . " +14 days")); ?>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

to máš tpl a nie php
Bolo by dobré napísať aký templatovací systém (a akú verziu) tvoj systém používa, a podľa toho ti povieme ako sa tam php vkladá. Optimálne riešenie je ten dátum vypočítať v php a do toho tpl poslať iba výstup aby si mal zachované MVC. V niektorých templatovacích systémoch (napríklad smarty) sa dá php vykonať priamo v tpl, ale neodporúča sa to
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:to máš tpl a nie php
Bolo by dobré napísať aký templatovací systém (a akú verziu) tvoj systém používa, a podľa toho ti povieme ako sa tam php vkladá. Optimálne riešenie je ten dátum vypočítať v php a do toho tpl poslať iba výstup aby si mal zachované MVC. V niektorých templatovacích systémoch (napríklad smarty) sa dá php vykonať priamo v tpl, ale neodporúča sa to
ja mám opencart verzia je 1.5.6.1.
viac v súbore..
Prílohy
inovice.rar
príklad vkladania
(2.97 KiB) 39 stiahnutí
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

tie tri riadky php ktoré som ti dal musíš dať do php súboru. Do ktorého neviem, ale zistíš to tak že si dáš vyhľadať faktura.tpl z ktorého súboru sa volá. A potom to tam hodiť iba ako premennú. Tieto dva súbory nestačia na to aby som ti to mohol celé napísať. A celý opencart nemám teraz čas sťahovať. Niekde tu ale už bola téma kde chalan potreboval do opencartu cenu bez dph alebo také niečo, tak to skús vyhľadať a bude to presne rovnako
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:tie tri riadky php ktoré som ti dal musíš dať do php súboru. Do ktorého neviem, ale zistíš to tak že si dáš vyhľadať faktura.tpl z ktorého súboru sa volá. A potom to tam hodiť iba ako premennú. Tieto dva súbory nestačia na to aby som ti to mohol celé napísať. A celý opencart nemám teraz čas sťahovať. Niekde tu ale už bola téma kde chalan potreboval do opencartu cenu bez dph alebo také niečo, tak to skús vyhľadať a bude to presne rovnako
oukej chápem musím aj viem ako to myslíš. Vyskúšam ked bude čas a dám vediet.

//autoeditácia príspevku (22 Apr 2014, 20:38)
no už som to skúšal do

Kód: Vybrať všetko

/www/admin/controller/sale/oreder.php
$datum = str_replace("/",".",reset(explode(" - ",$order['date_added'])));

Kód: Vybrať všetko

/www/admin/view/template/sale/order_inovece.tpl
Som len nechal <?php echo date("d/m/Y", strtotime($datum)); ?>

Myslel som že to pôjde no dátum mi ukazovalo v dobre formáte, len bolo 1/1/1970
A v error liste boli tie iste chyby + chyba z order.php kde bolo PHP Notice: Undefined index
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

ten dátum ti ukazuje zlý, lebo v premennej $datum v tom tpl nemáš nič. Takto sa premenné do tpl súboru neposielajú. To notice znamená, že premenná $order nemá index date_added. Znova narábaš s premennou tam, kde neexistuje
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:tie tri riadky php ktoré som ti dal musíš dať do php súboru. Do ktorého neviem, ale zistíš to tak že si dáš vyhľadať faktura.tpl z ktorého súboru sa volá.
Našiel som je to oreder.php
audiotrack napísal: A potom to tam hodiť iba ako premennú.
Dal som <?php echo date("d/m/Y", strtotime($datum)); ?>

a v order bolo niečo typu
$this->data['orders'][] = array('date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
$this->data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added']));
$this->data['orders'][] = array(
'date_added' => date($this->language->get('date_format_short'), strtotime($order_info['date_added'])),
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php datum

Príspevok od používateľa audiotrack »

viem ako to máš, písal si to v predošlom príspevku. Pošli sem ten order.php
Inak ten dátum čo sa snažíš robiť tam teda nakoniec možno aj bude. Zrejme v $order_info['date_added']
len stačí pozreť či sa tá premenná posiela do tpl a ako je tam nazvaná
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: php datum

Príspevok od používateľa funny102 »

audiotrack napísal:viem ako to máš, písal si to v predošlom príspevku. Pošli sem ten order.php
Inak ten dátum čo sa snažíš robiť tam teda nakoniec možno aj bude. Zrejme v $order_info['date_added']
len stačí pozreť či sa tá premenná posiela do tpl a ako je tam nazvaná
Prílohy
order.rar
(10.45 KiB) 43 stiahnutí
Napísať odpoveď