Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Nazwy miesięcy po polsku, zmiana nazw miesięcy
PiiiT
post 27.08.2008, 10:39:22
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


Witam, mam taki fragment kodu który powinien wyświetlać polskie nazwy miesięcy a pokazuje angielskie. Z góry dziękuję za pomoc.

  1. <?php
  2. for ($j=1;$j<=12;$j++)
  3. {
  4. setlocale(LC_TIME, 'pl_PL', 'pl', 'Polish_Poland.28592');
  5. $content.='<option value='.$j.'>'.strftime("%B", mktime(0, 0, 0, $j, 1, 0));
  6.  
  7. }
  8. ?>
Go to the top of the page
+Quote Post
JoShiMa
post 27.08.2008, 10:54:52
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Może spróbuj innych ustawiń:

"pl_PL", "Polish_Poland.28592", "pl", "pol", "polish"


--------------------
Go to the top of the page
+Quote Post
ferrero2
post 27.08.2008, 11:51:24
Post #3





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

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


Może to nie jest optymalne rozwiązanie ale u mnie się sprawdza :

Kod
#funkcja z parametrem data pobiera od użytkownika date (może być w różnych formatach)
function polski_miesiac($data)
{
#wyciągnięcie miesiąca z podanej daty
$miesiac = date("M" , strtotime($data));

#zamiana na polski
switch ($miesiac)
{
case Jan:
$miesiac = "Styczeń";
break;
case Feb:
$miesiac = "Luty";
break;
case Mar:
$miesiac = "Marzec";
break;
case Apr:
$miesiac = "Kwiecień";
break;
case May:
$miesiac = "Maj";
break;
case Jun:
$miesiac = "Czerwiec";
break;
case Jul:
$miesiac = "Lipiec";
break;
case Aug:
$miesiac = "Sierpień";
break;
case Sep:
$miesiac = "Wrzesień";
break;
case Oct:
$miesiac = "Październik";
break;
case Nov:
$miesiac = "Listopad";
break;
case Dec:
$miesiac = "Grudzień";
break;

}
#zwrócenie wyniku
return $miesiac;

}

#przykłady działania dla różnych dat (pierwsza zwróci luty, druga zwróci lipiec)

$data_pobrana = "01-02-2008";
echo $data_pobrana . ' ';
$data_pobrana = polski_miesiac($data_pobrana);
echo $data_pobrana . '<br />';

$data_pobrana = "2008-07-02";
echo $data_pobrana . ' ';
$data_pobrana = polski_miesiac($data_pobrana);
echo $data_pobrana . '<br />';
?>


Pozdrawiam


--------------------
---------------------------
"Jeżeli trzeci dzień z rzędu nie chce Ci się pracować tzn że dziś jest ŚRODA !
Algorytmy , Programowanie , Tworzenie WWW - SPRAWDŹ
Go to the top of the page
+Quote Post
skowron-line
post 27.08.2008, 11:59:48
Post #4





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

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


@ferrero2 no nie jest
Lepiej zrobic tablice
Kod
function miesiace( $m ){
$m = date("M" , strtotime($m));
$miesiac = array( 'Jan' => 'Styczeń', .... );
return $miesiace[ $m ];
}


Ten post edytował skowron-line 27.08.2008, 12:00:25


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
pyro
post 27.08.2008, 12:10:48
Post #5





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2. function polish_month($month)
  3. {
  4. $month = substr($month, 0, 3);
  5. $months = array('Styczeń' => 'Jan', 'Luty' => 'Feb', 'Marzec' => 'Mar'); // uzupełnij analogicznie tablicę
  6. $m = array_search($month, $months);
  7. return $m;
  8. }
  9. ?>


Ten post edytował pyro 27.08.2008, 12:12:37


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
PiiiT
post 27.08.2008, 14:16:54
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


Mam taki fragment kodu kalendarza:
  1. <?php
  2. $content.= '<select name="rmonth">';
  3. $content.= '<option value=0 selected>Cały rok';
  4. for ($j=1;$j<=12;$j++)
  5. {
  6.  
  7.  $content.='<option value='.$j.'>'.date("m", mktime(0, 0, 0, $j, 1, 0));  
  8.  
  9.  
  10. }
  11. ?>


przy małej literce "m" wyświetlają się cyfry ale gdzie mam wkleić ten kod:
  1. <?php
  2. function miesiace( $m ){
  3. $m = date("M" , strtotime($m));
  4. $miesiac = array( 'Jan' => 'Styczeń', .... );
  5. return $miesiace[ $m ];
  6. }
  7. ?>

? bo jak wklejam w nawias{} po $content. to pojawia się błąd
Fatal error: Cannot redeclare miesiace() (previously declared in /home/..../caladmin.php:779) in /home/..../caladmin.php on line 779:
Go to the top of the page
+Quote Post
barthpl
post 27.08.2008, 15:03:45
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Zasadniczo to na przykład tak:
  1. <?php
  2. // zmieniłem trochę funkcję co by było mniej pisania
  3. // za indeksy mogą robić numerki miesięcy nie 
  4. // koniecznie ich angielskie odpowiedniki
  5. function miesiace( $time ){
  6. $key = date( "n" , $time );
  7. $miesiac = array( '', 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień' );
  8. return $miesiac[$key];
  9. }
  10.  
  11.  
  12.  
  13. $content .= '<select name="rmonth">';
  14. $content .= '<option value=0 selected>Cały rok';
  15. for ($j=1;$j<=12;$j++)
  16. {
  17. // tutaj też mała zmiana: 
  18. // $content.='<option value='.$j.'>'.date("m", mktime(0, 0, 0, $j, 1, 0));
  19. // po co zamieniać czas na string'a a potem (w funkcji ) 
  20. // jeszcze raz robić odwrotną konwersję questionmark.gif 
  21. $content.= '<option value='.$j.'>'. miesiace(mktime(0, 0, 0, $j, 1, 0) );  
  22. }
  23. ?>



Co do twojego błędu to nie można w pętli wstawiać definicji funkcji bo jedna funkcja może być zadeklarowana tylko raz. Polecam przejrzeć jakiś kurs PHP dla początkujących, przyda sie winksmiley.jpg

edit -->
A czy do takiego zastosowania nie wystarczyło by coś takiego questionmark.gif
  1. <?php
  2. $miesiac = array( 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień' );
  3.  
  4. $content .= '<select name="rmonth">';
  5. $content .= '<option value=0 selected>Cały rok';
  6. for( $j=0; $j<12; $j++ )
  7. $content.= '<option value='.($j+1).'>'.$miesiac[$j].'</option>';
  8. ?>


I jeszcze jedna mała uwaga: warto zamykać tagi.

Ten post edytował barthpl 27.08.2008, 15:06:48


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
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 Wersja Lo-Fi Aktualny czas: 26.04.2025 - 00:39