Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nazwy miesięcy po polsku
Forum PHP.pl > Forum > Przedszkole
PiiiT
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. ?>
JoShiMa
Może spróbuj innych ustawiń:

"pl_PL", "Polish_Poland.28592", "pl", "pol", "polish"
ferrero2
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
skowron-line
@ferrero2 no nie jest
Lepiej zrobic tablice
Kod
function miesiace( $m ){
$m = date("M" , strtotime($m));
$miesiac = array( 'Jan' => 'Styczeń', .... );
return $miesiace[ $m ];
}
pyro
  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. ?>
PiiiT
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:
barthpl
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.
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.