Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php] Przekształcenie daty z pola INT
kreo
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował kreo 6.07.2007, 20:08:12
Go to the top of the page
+Quote Post
mrjozo
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 3
Dołączył: 27.06.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował mrjozo 6.07.2007, 20:13:09
Go to the top of the page
+Quote Post
Hostis
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 6.07.2007
Skąd: /home/skawina

Ostrzeżenie: (0%)
-----


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

Ten post edytował Hostis 6.07.2007, 20:37:20
Go to the top of the page
+Quote Post
kreo
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


dziękuję...działa doskonale przy wyciąganiu daty (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ewentualnie zostawię sobie taką opcję. Dzięki (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Ten post edytował kreo 6.07.2007, 21:34:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:45