Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Data w bazie a formatowanie jej po stronie PHP ?
Forum PHP.pl > Forum > Przedszkole
PiXel2.0
Do przechowywania daty w bazie zaleca sie uzycie pol DATETIME lub TIMESTAMP, ale gdy pobiera sie z nich date to jest ona w postaci lancucha z separatorami wiec jak mozna ja formatowac po stronie PHP questionmark.gif

Jedyne co mi przychodzi do glowy to przechowywanie daty w polu INT wygenerowanej przez funkcje time() podczas zapisu a po pobraniu wartosci komorki z data rzutowanie jej do liczby calkowitej aby uzyskac czas unix'owy i formatowac go w skrypcie przy pomocy date().

Czy jest jakis bardziej zalecany sposob questionmark.gif
pawel81
Możesz modyfikować datę w zapytaniu za pomocą DATE_FORMAT
  1. <?php
  2. function data() {
  3.  if(!isset($_SESSION['data'])) {
  4.  $pobrane = mysql_query("SELECT ilosc_dni FROM ustawienia");
  5.  $tablica = mysql_fetch_array($pobrane);
  6.  
  7.  
  8. mysql_query("UPDATE ustawienia SET data_na_stronie=DATE_ADD(data_na_stronie,
  9.  INTERVAL $tablica[ilosc_dni] DAY) WHERE id='1'");
  10.  
  11.  
  12. #---------------
  13.  $pobrane = mysql_query("SELECT DATE_FORMAT(data_na_stronie, '%a'),
  14.  DATE_FORMAT(data_na_stronie, '%d'),
  15.  DATE_FORMAT(data_na_stronie, '%b'),
  16.  DATE_FORMAT(data_na_stronie, '%Y'),
  17.  DATE_FORMAT(data_na_stronie, '%c')
  18. FROM ustawienia");
  19.  $tablica = mysql_fetch_row($pobrane);
  20.  
  21. switch ($tablica['0']):
  22. case 'Mon':
  23. $tablica['0']='Poniedziałek';
  24. break;
  25. case 'Tue':
  26. $tablica['0']='Wtorek';
  27.  break;
  28. case 'Wed':
  29. $tablica['0']='Środa';
  30. break;
  31. case 'Thu':
  32. $tablica['0']='Czartek';
  33. break;
  34. case 'Fri':
  35. $tablica['0']='Piątek';
  36. break;
  37. case 'Sat':
  38. $tablica['0']='Sobota';
  39. break;
  40. case 'San':
  41. $tablica['0']='Niedziela';
  42. break;
  43.  endswitch;
  44.  
  45.  switch ($tablica['2']):
  46. case 'Jan':
  47. $tablica['2']='Styczeń';
  48. break;
  49. case 'Feb':
  50. $tablica['2']='Luty';
  51.  break;
  52. case 'Mar':
  53. $tablica['2']='Marzec';
  54. break;
  55. case 'Apr':
  56. $tablica['2']='Kwiecień';
  57. break;
  58. case 'May':
  59. $tablica['2']='Maj';
  60. break;
  61. case 'Jun':
  62. $tablica['2']='Czerwiec';
  63. break;
  64. case 'Jul':
  65. $tablica['2']='Lipiec';
  66. break;
  67. case 'Aug':
  68. $tablica['2']='Sierpień';
  69. break;
  70. case 'Sep':
  71. $tablica['2']='Wrzesień';
  72. break;
  73. case 'Oct':
  74. $tablica['2']='PaĽdziernik';
  75. break;
  76. case 'Nov':
  77. $tablica['2']='Listopad';
  78. break;
  79. case 'Dec':
  80. $tablica['2']='Grudzień';
  81. break;
  82.  endswitch;
  83.  
  84.  
  85.  
  86.  $_SESSION['data'] = "$tablica[0] $tablica[1] $tablica[2] $tablica[3]";
  87.  $_SESSION['data_baza'] = "$tablica[3]-$tablica[4]-$tablica[1]";
  88.  $_SESSION['miesiac'] = $tablica['4'];
  89.  $_SESSION['rok'] = $tablica['3'];
  90.  unset($tablica);
  91. }
  92.  
  93. }
  94. ?>
PiXel2.0
Nie chodzi mi o modyfikowanie daty w zapytaniu tylko po stronie PHP bo bardzo mozliwe, ze bedzie ona formatowana wielokrotnie w zaleznosci od tego w jakiej postaci bedzie potrzebna w danym miejscu.
Najlepiej do tego celu nadaje sie chyba czas w formacie unix'owym, ale MySQL chyba nie ma pola ktore automatycznie zapisuje czas w formacie unix'owym wiec pozostaje tylko pole INT a zasady organizacji baz danych zalecaja aby nie przechowywac daty w takich polach...
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.