Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][php] Przekształcenie daty z pola INT
Forum PHP.pl > Forum > Przedszkole
kreo
Witam

Co mam:

Wyciągam datę z tabeli "orders" i pola "invoice_date" które to pole jest typu "int(11)" i chcę mieć możliwość edycji tej daty.

  1. <tr class="dataTableRow">
  2. <td class="dataTableContent" valign="middle" align="right">Data zakupu: </td>
  3. <td colspan="3" valign="top" class="dataTableContent"><input name='update_invoice_date' size='35' value="<?php echo $order->info['invoice_date']; ?>"></td>
  4. </tr>


i tutaj kończy się moja inwencja ponieważ trudno edytować datę w stylu: 1183623190 co równa się 05.07.2007

Jak mam rozwiązać ten problem?

Pozdrawiam
mrjozo
Datę w formacie 1183623190 (UNIXTIME) może sforamatować do dowolnej postaci używająć funkcji date:
http://pl2.php.net/date

np:
  1. <?php
  2. $data = date("m.d.y",$order->info['invoice_date']);
  3. echo $data;
  4. ?>


lub od razu przy pobieraniu przez mysql za pomoca funkcji FROM_UNIXTIME
Hostis
co do konwersji daty na format UNIX możesz skorzystać z mktime

http://pl.php.net/manual/pl/function.mktime.php



z edycja też nie ma problemu tylko trochę prostej matematyki trzeba.

Czas jest liczony w sekundach, jeśli chcesz edytować date (przesunąć ją o dzień) po prostu odejmujesz lub dodajesz określoną liczbę sekund.

np: twoja data 1183623190 (05.07.07) - 86400 (1 dzień) = 1183536790 czyli 04.07.07
kreo
dziękuję...działa doskonale przy wyciąganiu daty smile.gif

natomiast w przypadku zapisywania z powrotem do bazy.. czyli do pola INT to niestety nie radzi sobie.

gdy tą samą datę zapisuję np z powrotem to do pola INT trafia pierwsza cyfra.
czyli np. z "05.05.07" w polu INT znajdzie się "5"


-----------
odejmowanie i dodawanie sekund do pola INT .. nawet to niegłupie o ile sądziłbym że to pole edytowałbym co pół roku smile.gif Ewentualnie zostawię sobie taką opcję. Dzięki winksmiley.jpg
-----------

ROZWIĄZANIE

dodałem wcześniej
  1. <?php
  2. invoice_date = '" . tep_db_input(tep_db_prepare_input(strtotime($_POST['update_invoice_date']))) . "',
  3. ?>



potem wyciągnięcie daty i możliwość jej edycji

  1. <tr class="dataTableRow">
  2. <td class="dataTableContent" valign="middle" align="right">Data: </td>
  3. <td colspan="3" valign="top" class="dataTableContent"><input name='update_invoice_date' size='35' value='<?php echo date("l, F j, Y", $order->info['invoice_date']); ?>'></td>
  4. </tr>


teraz jeszcze się pobawię formatami daty..
DZIĘKUJĘ ZA POMOC guitar.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.