Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]data polska(dzień tyg)
Forum PHP.pl > Forum > Przedszkole
pablo_83
witam jak mam wstawić funkcje dotyczącą polskich dni tyg w echo żeby je wyświetlić, mam coś takiego ale to nie działa mi sad.gif miesiące wyświetlane są w porządku. Proszę o pomoc.
$dzien --- zmienna pobierana z formularza
$miesiac --- j.w.
  1. <?php
  2. function dzien_tyg($nr) {
  3.  
  4. $dzien_pl = array(0 => "Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota");
  5.  
  6. return $dzien_pl[$nr];
  7. }
  8.  
  9. function miesiac_pl($mies) {
  10.  
  11. $mies_pl = array(1=>"Stycznia", "Lutego", "Marca", "Kwietnia", "Maja", "Czerwieca", "Lipieca", "Sierpnia", "Września", "Października", "Listopada", "Grudnia");
  12.  
  13. return $mies_pl[$mies];
  14. }
  15. echo ("<br /><br />");
  16.  
  17.  
  18. echo  '<font color="red">'.dzien_tyg($dzien).' '.$dzien.' '.miesiac_pl($miesiac).' '.$rok. ' roku</font><br />';
  19. ?>
marioxp
tu masz link do opisu jak to zrobic

http://forum.php.pl/lofiversion/index.php/t32432.html
pablo_83
spoko w ten sposób to ja też potrafie chodzi o to że muszę zrobić to za pomocą tych funkcji, funkcje są napisane dobrze tylko w echo coś z dniami pomotałem i nie wyświetla, nie wiem co mam zmienić. Miesiące działają
melkorm
  1. <?php
  2. var_dump($dzien);
  3. ?>


Wszystko Tobie powie... winksmiley.jpg
vokiel
A co masz w zmiennych $dzien i $miesiac?

  1. <?php
  2. $dzien = date('j');
  3. $miesiac = date('n');
  4. $rok = date('Y');
  5. echo  '<font color="red">'.dzien_tyg($dzien).' '.$dzien.' '.miesiac_pl($miesiac).' '.$rok. ' roku</font><br />';
  6. ?>
pablo_83
hmmm no to w takim razie mam większy problem....

dzień i miesiąc nie deklarowałem w jakich postaciach mają się wyświetlać.
próbowałem zastąpić to switch/case jednak tutaj też pojawia się problem nie wyswietla prawidłowej daty np. wybrałem 5.05.2009 i wyświetla mi że to piątek .... a to był wtorek ;/
jak zrobić żeby działało to poprawnie (sposób już nieistotny byle chodziło) pliss help

edit 1

ja chyba nie powinienem tutaj deklarować postaci np. $dzien = date("w"); bo wtedy wczytuje mi to aktualny dzień a to użytkownik wypełniając formularz decyduje jaki dzień ma być wyświetlony
vokiel
Pokaż więcej kodu, bo ja tu coś widze, że błąd jest gdzie indziej.
Jeśli przekażesz do funkcji dzien_tyg np 3, to zwróci Ci środę. Jeśli nie zwraca, to znaczy, że nie przekazujesz odpowiedniego parametru. Jeśli pobierasz te dane z formularza, to trzeba sprawdzić, co otrzymujesz. Zrób zrzut zmiennych tak jak proponował melkorm.
pablo_83
to cały skrypt, wykomentowałem te funkcje dotyczące dni bo nie wiem jak mam zrobić by działały poprawnie.
Jak deklarowałem dla $dzień =("w") - to zwraca mi aktualny dzień
gdy zdeklarowałem $dzien = ("j") wysypuje się po podaniu dnia wiekszego niż 6, (nie zapetla się) i dodatkowo zawsze 0 = niedz, 1 = pon, a przecież tak nie jest 1 dzień miesiąca moze być np środa.


  1. <body bgcolor="#000000" text="#FFFFFF" ><b>
  2. <form action="data.php" method="post">
  3.  
  4. <input type="text" name="dzien" size="5" />Dzień<br /><br />
  5. <input type="text" name="miesiac" size="5" />Miesiąc<br /><br />
  6. <input type="text" name="rok" size="5" />Rok<br /><br /><br />
  7. <input type="submit" name="wyslij" value= "sprawdź" /><br />
  8.  
  9. </form>

  1. <?php
  2. $dzien = $_POST['dzien'];
  3. $miesiac = $_POST['miesiac'];
  4. $rok = $_POST['rok'];
  5.  
  6.  
  7.  
  8. if (@checkdate( $miesiac,$dzien,$rok))
  9.    {
  10.       echo("<br /> $dzien $miesiac $rok Data którą podałeś jest poprawna");
  11.    }
  12.       else
  13.       {
  14.         echo 'Data którą podałeś jest niepoprawna  !!!';
  15.      }
  16.        
  17.        
  18. /*$dzientyg = date("w");
  19.      switch($dzientyg){    
  20. case 0 : $dzientyg="Niedziela"; break;
  21. case 1 : $dzientyg="Poniedziałek"; break;
  22. case 2 : $dzientyg="Wtorek"; break;
  23. case 3 : $dzientyg="Środa"; break;
  24. case 4 : $dzientyg="Czwartek"; break;
  25. case 5 : $dzientyg="Piątek"; break;
  26. case 6 : $dzientyg="Sobota"; break;
  27. }
  28. function dzien_tyg($nr) {
  29.  
  30.  $dzien_pl = array(0 => "Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota");
  31.  
  32. return $dzien_pl[$nr];
  33. }*/
  34.  
  35.  
  36.  
  37. function miesiac_pl($mies) {
  38.  
  39. $mies_pl = array(1=>"Stycznia", "Lutego", "Marca", "Kwietnia", "Maja", "Czerwca", "Lipca", "Sierpnia", "Września", "Października", "Listopada", "Grudnia");
  40.  
  41. return $mies_pl[$mies];
  42. }
  43. echo ("<br /><br />");
  44.  
  45.  
  46. echo  '<font color="red"> '.$dzien.' '.miesiac_pl($miesiac).' '.$rok. ' roku</font><br /><br /><br />';        
  47. ?>
  48.  
  49. <?php
  50. setlocale(LC_ALL, 'pl_PL');
  51. echo 'Dziś jest<font color="blue">';
  52. echo strftime(" %A %d %B %Y r.<br />");
  53. echo '</font>';
  54. ?>
  55. </b>
golaod
Jak ty się spodziewasz, że Ci wyświetli poprawny dzień tygodnia skoro np. 23.05.2009 to dzień tygodnia liczysz jako 23. Osobiście nie słyszałem o takim dniu tygodnia.


Edit @up:

No widzisz zatem musisz zrobić date("w", mktime(0, 0, 0, $dzien, $miesiac, $rok)) i to dopiero będzie dzień tygodnia
vokiel
Zamiast inputów zrób select'y. Wtedy będziesz miał większą kontrolę nad tym co dostaniesz od użytkownika, tak to ciągle będą błędy bo ktoś wpisze poniedziałek zamiast 1.
Dzień i miesiąc bez problemu możesz zastąpić selektami, rok w zależności od sytuacji.
erix
Ale Wy kombinujecie... tongue.gif
  1. <?php
  2. setlocale(LC_ALL, 'polish');
  3. echo strftime('%A');
  4. ?>


Sobie tylko dopisz locale do tablicy, bo testowałem pod WXP. [;
Pilsener
Zgadza się, powinno wystarczyć coś takiego:
  1. <?php
  2. $arrLocale = array( "pl_PL", "polish_pol" );
  3. setlocale(LC_ALL, $arrLocale );
  4. ?>
- działa na 99% cywilizowanych serwerów (przynajmniej u mnie). Skrypty typu array(paniedzielnik, wtornik, srieda, czetwier, piatnica) są archaiczne i nie powinniśmy przykładać ręki do takich rozwiązań winksmiley.jpg
szumigt
Cytat(Pilsener @ 2.06.2009, 14:47:51 ) *
Zgadza się, powinno wystarczyć coś takiego:
[PHP] pobierz, plaintext
    <LI class=li1><?php<LI class=li2>$arrLocale = array( "pl_PL", "polish_pol" );<LI class=li1>setlocale(LC_ALL, $arrLocale );
  1. ?>
[PHP] pobierz, plaintext - działa na 99% cywilizowanych serwerów (przynajmniej u mnie). Skrypty typu array(paniedzielnik, wtornik, srieda, czetwier, piatnica) są archaiczne i nie powinniśmy przykładać ręki do takich rozwiązań winksmiley.jpg


No dobrze ... ja mam serwerek na Debianie (lenny) i takie ustawienie nie działa ... doradźcie cosik questionmark.gif
vokiel
Wybaczcie za link do swojego bloga, ale może to naświetli sprawę: PHP Date – Polskie nazwy dni i miesięcy. Funkcje date strftime
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.