Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] mktime, date - dodanie nazw miesięcy po polsku, [PHP] mktime, date - dodanie nazw miesięcy po polsku
monsarrat
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 29.02.2012
Skąd: Polska

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


Witam, proszę o dopisanie funkcji pozwalającej na wyświetlanie polskie nazwy miesięcy. Z góry dziękuję za pomoc.

  1.  
  2. <?php
  3. $month = (isset($_GET["m"]) && is_numeric($_GET["m"])) ? (int)$_GET["m"] : "";
  4. $year = (isset($_GET["y"]) && is_numeric($_GET["y"])) ? (int)$_GET["y"] : "";
  5.  
  6. if (strcmp($month, "") == 0 || strcmp($year, "") == 0)
  7. {
  8. $from = time();
  9. $info = getdate($from);
  10. $month = $info["mon"];
  11. $year = $info["year"];
  12. }
  13.  
  14. $from = mktime(0, 0, 0, $month, 1, $year);
  15. $to = mktime(0, 0, 0, ($month + 1 == 13) ? 1 : $month + 1, 1, ($month + 1 == 13) ? $year + 1 : $year);
  16.  
  17. ?>
  18.  
  19.  
  20. <h2><?php echo date('F Y', $from);?></h2>
  21.  


Ten post edytował monsarrat 22.11.2012, 10:26:43
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




jesli miesiac == 1 echo styczen
jesli miesiac == 2 echo luty
....
jesli miesiac == 12 echo grudzien
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Na podstawie ustawień lokalnych
http://pl1.php.net/manual/en/function.setlocale.php
możesz wyświetlić nazwy miesięcy w danym języku
http://pl1.php.net/manual/en/function.strftime.php
Cytat
string strftime ( string $format [, int $timestamp = time() ] )
(patrz przykłady)

Go to the top of the page
+Quote Post
Zielonkawy18
post
Post #4





Grupa: Zarejestrowani
Postów: 152
Pomógł: 4
Dołączył: 4.10.2012

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


Zdecydowanie o wiele lepsze rozwiązanie to:

http://php.net/manual/en/language.types.array.php
Go to the top of the page
+Quote Post
monsarrat
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 29.02.2012
Skąd: Polska

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


hem bawienie sie w if`y to zaśmiecanie kodu w pewnym sensie


próbowąłem dodac na początek kodu php

  1. $arrLocale = array( "pl_PL", "polish_pol" );
  2. setlocale( LC_ALL, $arrLocale );


jednak nie pomogło :/
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
hem bawienie sie w if`y to zaśmiecanie kodu w pewnym sensie
Ale przynajmniej działa...

Martwisz się o pare ifów, ze niby ci zaśmiecą kod, podczas gdy Twój kod, jest daleki od ideału więć te parę dodatkwych ifów naprawdę by ci nie zaszkodziło.
Tym bardziej że możesz je zamienić na SWICH CASE a całość dodatkowo wstawić w funkcję getMonthName()
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. setlocale(LC_ALL, 'pl_PL.');
samo pl_PL wystarczy
Go to the top of the page
+Quote Post
monsarrat
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 29.02.2012
Skąd: Polska

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


hem jednak
  1. setlocale(LC_ALL, 'pl_PL.');
nie zadziałało ...

to jak to bezie z tymi IF - nospor co kolega ma dokłądnie na myśli.... ?
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to jak to bezie z tymi IF - nospor co kolega ma dokłądnie na myśli.... ?
Nie bardzo rozumiem... przecież ci napisałem co mam na mysli (IMG:style_emoticons/default/smile.gif) Czego nie zrozumiałeś?

  1. function getMonthName($m){
  2. //tutaj moje IF, które zwracają przez return nazwe miesiac
  3. }
  4.  
  5. // a poźniej w kodzie robisz
  6.  
  7. echo getMonthName(11);

i juz
Go to the top of the page
+Quote Post
skowron-line
post
Post #10





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(monsarrat @ 22.11.2012, 10:58:01 ) *
hem jednak
  1. setlocale(LC_ALL, 'pl_PL.');
nie zadziałało ...

Bezmyślnie skopiowałeś zamiast pokombinować albo zerknąć pod link który podałem
Cytat
setlocale(LC_ALL, 'nl_NL');

ja się machnąłem i kropkę dałem
Cytat
setlocale(LC_ALL, 'pl_PL);
Go to the top of the page
+Quote Post
monsarrat
post
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 29.02.2012
Skąd: Polska

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


pokombinowałem i roziwzniem jest
  1. setlocale(LC_ALL, 'pl_PL.UTF-8');

konieczne jest danie UTF-8 ze względu na poskie litery ń i ź

w całości działający kod wygląda tak, może komuś sie przyda... :

(IMG:http://i50.tinypic.com/2vl0jeh.jpg)

  1. <?php
  2.  
  3. setlocale(LC_ALL, 'pl_PL.UTF-8');
  4.  
  5. $month = (isset($_GET["m"]) && is_numeric($_GET["m"])) ? (int)$_GET["m"] : "";
  6. $year = (isset($_GET["y"]) && is_numeric($_GET["y"])) ? (int)$_GET["y"] : "";
  7.  
  8. if (strcmp($month, "") == 0 || strcmp($year, "") == 0)
  9. {
  10. $from = time();
  11. $info = getdate($from);
  12. $month = $info["mon"];
  13. $year = $info["year"];
  14. }
  15.  
  16. $from = mktime(0, 0, 0, $month, 1, $year);
  17. $to = mktime(0, 0, 0, ($month + 1 == 13) ? 1 : $month + 1, 1, ($month + 1 == 13) ? $year + 1 : $year);
  18.  
  19. ?>
  20.  
  21. <div align="center">
  22. <hr/>
  23.  
  24.  
  25. <h2><?php echo strftime("%B, %G",$from);?></h2>
  26.  
  27. <div>
  28. <a class="" href="index.php?y=<?php echo $year - 1; ?>&m=<?php echo $month; ?>">Poprzedni Rok</a>
  29. <a class="" href="index.php?y=<?php echo ($month - 1 == 0) ? $year - 1 : $year; ?>&m=<?php echo ($month - 1 == 0) ? 12 : $month - 1; ?>">Poprzedni Miesiąc</a>
  30. <a class="" href="index.php?y=<?php echo ($month + 1 == 13) ? $year + 1 : $year; ?>&m=<?php echo ($month + 1 == 13) ? 1 : $month + 1; ?>">Następny Miesiąc</a>
  31. <a class="" href="index.php?y=<?php echo $year + 1; ?>&m=<?php echo $month; ?>">Następny Rok</a>
  32. <?php
  33. $currentMonthInfo = getdate(time());
  34. ?>
  35.  
  36. <a class="" href="index.php?y=<?php echo $currentMonthInfo["year"]; ?>&m=<?php echo $currentMonthInfo["mon"]; ?>">Aktualny miesiąc</a>
  37. </div>
  38.  
  39.  


Pozdrawiam i dziękuje za pomoc.

Ten post edytował monsarrat 22.11.2012, 11:57:33
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: 3.10.2025 - 21:27