Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL][PHP]Konwertowanie miesięcy na polskie nazwy miesięcy
rolfik
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.02.2011

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


  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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
in5ane
post
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
rolfik
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.02.2011

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


  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
Go to the top of the page
+Quote Post
in5ane
post
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Kod
Ogłoszenie: Niezdefiniowany indeks
niestety nie mam czasu więcej tłumaczyć. Wybacz, brak czasu...


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 05:52