Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL][PHP]Konwertowanie miesięcy na polskie nazwy miesięcy
Forum PHP.pl > Forum > Przedszkole
rolfik
  1.  
  2. <?php
  3. class ControllerModuleNews extends Controller {
  4. protected function index() {
  5. $this->language->load('module/news');
  6. $this->load->model('extension/news');
  7.  
  8. $data = array(
  9. 'page' => 1,
  10. 'limit' => 6,
  11. 'start' => 0,
  12. );
  13.  
  14. $this->data['heading_title'] = $this->language->get('heading_title');
  15.  
  16. $all_news = $this->model_extension_news->getAllNews($data);
  17.  
  18. $this->data['all_news'] = array();
  19.  
  20. foreach ($all_news as $news) {
  21. $this->data['all_news'][] = array (
  22. 'title' => (strlen(strip_tags(html_entity_decode($news['title']))) > 100 ? substr(strip_tags(html_entity_decode($news['title'])), 0, 100) . '...' : strip_tags(html_entity_decode($news['title']))),
  23. 'description' => (strlen(strip_tags(html_entity_decode($news['description']))) > 250 ? substr(strip_tags(html_entity_decode($news['description'])), 0, 250) . '...' : strip_tags(html_entity_decode($news['description']))),
  24. 'view' => $this->url->link('information/news/news', 'news_id=' . $news['news_id']),
  25. 'date_added' => date('d M Y', strtotime($news['date_added']))
  26. );
  27. }
  28. if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/news.tpl')) {
  29. $this->template = $this->config->get('config_template') . '/template/module/news.tpl';
  30. } else {
  31. $this->template = 'default/template/module/news.tpl';
  32. }
  33.  
  34. $this->render();
  35.  
  36.  
  37. }
  38.  
  39.  
  40. }
  41.  
  42. function dateV($format,$timestamp=null){
  43. $to_convert = array(
  44. 'l'=>array('dat'=>'N','str'=>array('Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota','Niedziela')),
  45. 'M'=>array('dat'=>'n','str'=>array('styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzień')),
  46. 'M'=>array('dat'=>'n','str'=>array('stycznia','lutego','marca','kwietnia','maja','czerwca','lipca','sierpnia','września','października','listopada','grudnia'))
  47. );
  48. if ($pieces = preg_split('#[:/.\-, ]#', $format)){
  49. if ($timestamp === null) { $timestamp = time(); }
  50. foreach ($pieces as $datepart){
  51. if (array_key_exists($datepart,$to_convert)){
  52. $replace[] = $to_convert[$datepart]['str'][(date($to_convert[$datepart]['dat'],$timestamp)-1)];
  53. }else{
  54. $replace[] = date($datepart,$timestamp);
  55. }
  56. }
  57. $result = strtr($format,array_combine($pieces,$replace));
  58. return $result;
  59. }
  60. }
  61.  
  62. echo dateV('l j f Y',strtotime('2009-09-02'));
  63. // Środa 2 września 2009
  64.  
  65. ?>
  66.  



Jak powiązać powyższy kod aby powyświetleniu:

<?php echo $news['date_added']; ?>

otrzymać wynik zwrócony z bazy danych w postaci: "10 kwietnia 2013 " zamiast "10 Apr 2013"




Z góry wielkie dzięki za jakąkolwiek pomoc. Będe bardzo wdzięczny za nakierowanie mnie albo wskazanie jakiegoś manuala do mojego problemu

in5ane
Ja na Twoim miejscu w kontrolerze tutaj rozbiłbym sobie te datę. Następnie miesiąc przetworzył przez zwykłą tablicę i zamieniać np. Apr na kwietnia itd. analogicznie. A później wysłał do widoku 3 zmienne: dzień, miesiąc i rok i dopiero skleił datę. No ale jeszcze przed wysłaniem skleić sobie całą datę w kontrolerze i wysłać dopiero do widoku. Tak czy siak, ja bym najpierw rozbił datę na dzień, miesiąc i rok zamienił nazwę miesiąca i dopiero przesłał to do widoku.
rolfik
  1. <?php
  2. class ControllerModuleNews extends Controller {
  3. protected function index() {
  4. $this->language->load('module/news');
  5. $this->load->model('extension/news');
  6.  
  7. $data = array(
  8. 'page' => 1,
  9. 'limit' => 6,
  10. 'start' => 0,
  11. );
  12.  
  13. $this->data['heading_title'] = $this->language->get('heading_title');
  14.  
  15. $all_news = $this->model_extension_news->getAllNews($data);
  16.  
  17. $this->data['all_news'] = array();
  18.  
  19. foreach ($all_news as $news) {
  20. $this->data['all_news'][] = array (
  21. 'title' => (strlen(strip_tags(html_entity_decode($news['title']))) > 100 ? substr(strip_tags(html_entity_decode($news['title'])), 0, 100) . '...' : strip_tags(html_entity_decode($news['title']))),
  22. 'description' => (strlen(strip_tags(html_entity_decode($news['description']))) > 250 ? substr(strip_tags(html_entity_decode($news['description'])), 0, 250) . '...' : strip_tags(html_entity_decode($news['description']))),
  23. 'view' => $this->url->link('information/news/news', 'news_id=' . $news['news_id']),
  24. 'dzien' => date('d ', strtotime($news['date_added'])),
  25.  
  26. 'miesiac' => date(' M', strtotime($news['date_added'])),
  27.  
  28. 'rok' => date('Y', strtotime($news['date_added']))
  29. );
  30.  
  31. $msce = date(' M', strtotime($news['date_added']));
  32.  
  33. $miesiac_pl = array(1 => 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  34.  
  35. echo $miesiac_pl[$msce].", "; // tu wykonując echo zwraca mi wyniki z bazy które przedstawie poniżej jednak dalej z błedem
  36.  
  37. }
  38.  
  39. if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/news.tpl')) {
  40. $this->template = $this->config->get('config_template') . '/template/module/news.tpl';
  41. } else {
  42. $this->template = 'default/template/module/news.tpl';
  43. }
  44.  
  45. $this->render();
  46.  
  47.  
  48. }
  49.  
  50.  
  51. }
  52.  
  53.  
  54. ?>




W powyzszej zmianie w kodzie w tablicy zmieniłem

  1. 'miesiac' => date(' n', strtotime($news['date_added'])),


Domyślnie jest teraz na miesiące w postaci cyfr bez "0" czyli np. 4 dla kwietnia

W kolejnej tablicy przypisałem dla wartości cyfrowych polskie nazwy.

Dalej jednak nie wiem jak dla wartości cyfrowych miesięcy uzyskać wynik w postaci polskiej nazwy.

A oto błedy:

Notice: Undefined index: 4 in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: 4 in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: 4 in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: 5 in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35,

Po zamianie na " F"
  1. 'miesiac' => date(' F', strtotime($news['date_added'])),


Notice: Undefined index: April in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: April in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: April in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35, Notice: Undefined index: May in C:\xampp\htdocs\open\catalog\controller\module\news.php on line 35
in5ane
Kod
Ogłoszenie: Niezdefiniowany indeks
niestety nie mam czasu więcej tłumaczyć. Wybacz, brak czasu...
Crozin
1. Jeżeli to ma być MVC to takie coś jak tłumaczenie nazw miesięcy powinno się znaleźć w logice widoku, czyli nie w kontrolerze.
2. Już od lat w PHP są dostępne bindingi dla ICU, więc korzystajcie z tego i ułatwcie sobie życie: http://www.php.net/manual/en/class.intldateformatter.php
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.