![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Właściwie przygodę z php zacząłem niedawno i chciałem sprawdzić wkońcu swoje umiejętności. Chciałem zbudować pierwszy złożony(az z dwóch plików ![]() O to i mój przeznakomity skrypt któy generuje ale...błędy ![]() index.php [php:1:21c2069939]<? include("funkcje.php"); print("$data"); ?>[/php:1:21c2069939] funkcje.php [php:1:21c2069939]<? function data ($dzien $miesiac $rok) { $dzien = date("d"); $miesiac = date("m"); $rok ("Y"); $niezidentyfikowana = niezidentyfikowana; switch($miesiac) { case '1' : $miesiac = 'stycznia'; break; case '2' : $miesiac = 'lutego'; break; case '3' : $miesiac = 'marca'; break; case '4' : $miesiac = 'kwietnia'; break; case '5' : $miesiac = 'maja'; break; case '6' : $miesiac = 'czerwca'; break; case '7' : $miesiac = 'lipca'; break; case '8' : $miesiac = 'sierpnia'; break; case '9' : $miesiac = 'września'; break; case '10' : $miesiac = 'października'; break; case '11' : $miesiac = 'listopada'; break; case '12' : $miesiac = 'grudnia'; break; default: $miesiac = 'niezidentyfikowana'; break; } } if ($miesiac == niezidentyfikowana) { print ("skrypt wygenerował niepoprawną datę"); } else { print data("$dzien $miesiac $rok"); } ?> [/php:1:21c2069939] Mógłby mi ktoś przedstawić gdzie tkwi mój błąd ![]() ![]() Dziękuję za pomoc ![]() Pozdrawiam ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
najlepiej to napisz jakie błędy generuje
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
No pierwszy jaki generuje to:
Kod Parse error: parse error, unexpected T_VARIABLE, expecting ')' in c:usrkrasnalwwwphpskrypty_mojedatafunkcje.php on line 3
Do następnych się dostać nie mogłem ![]() ![]() Pozdrawiam |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 15.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
[php:1:5d75308bbe]<?php
function data ($dzien $miesiac $rok) ?>[/php:1:5d75308bbe] Argumenty oddziel przecinkiem: [php:1:5d75308bbe]<?php function data ($dzien, $miesiac, $rok) ?>[/php:1:5d75308bbe] przy wywolaniu funkcji także podaj argumenty po przecinku: [php:1:5d75308bbe]<?php data($dzien, $miesiac, $rok) ?>[/php:1:5d75308bbe] -------------------- Ez Partner :]
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 405 Pomógł: 1 Dołączył: 19.09.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Nie:
[php:1:d427ceddc6]<?php function data ($dzien $miesiac $rok) ?>[/php:1:d427ceddc6] lecz: [php:1:d427ceddc6]<?php function data ($dzien, $miesiac, $rok) ?>[/php:1:d427ceddc6] parametry funkcji mają być oddzielone przecinkami. Zauważylem bląd w 9 linii. Jest tam: [php:1:d427ceddc6]<?php $rok ("Y"); ?>[/php:1:d427ceddc6] Ta linia też prawdopodobnie wygeneruje Parse Error, ale nie wiem jak ją poprawić, bo nie wiem co zamierzałeś w ten sposób osiągnąć. Ponadto zupelnie nie rozumiem idei dzialania tej funkcji... ale to juz inna bajka ![]() -------------------- Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów. Blog: Małolepszy.info |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Oki zrobiłem wszystko według Waszych zaleceń. Teraz nie wyświetla błędów, ale co najgorsze, nie wyświetla też daty
![]() index.php [php:1:c48f5f782f]<?php include("funkcje.php"); data($dzien, $miesiac, $rok) ?>[/php:1:c48f5f782f] funkcje.php [php:1:c48f5f782f]<?php function data ($dzien, $miesiac, $rok) { $dzien = date("d"); $miesiac = date("m"); $rok = date("Y"); $niezidentyfikowana = niezidentyfikowana; switch($miesiac) { case '1' : $miesiac = 'stycznia'; break; case '2' : $miesiac = 'lutego'; break; case '3' : $miesiac = 'marca'; break; case '4' : $miesiac = 'kwietnia'; break; case '5' : $miesiac = 'maja'; break; case '6' : $miesiac = 'czerwca'; break; case '7' : $miesiac = 'lipca'; break; case '8' : $miesiac = 'sierpnia'; break; case '9' : $miesiac = 'września'; break; case '10' : $miesiac = 'października'; break; case '11' : $miesiac = 'listopada'; break; case '12' : $miesiac = 'grudnia'; break; default: $miesiac = 'niezidentyfikowana'; break; } } if ($miesiac == niezidentyfikowana) { print ("skrypt wygenerował niepoprawną datę"); } else { data($dzien, $miesiac, $rok); } ?>[/php:1:c48f5f782f] Co do idei tejże funkcji to jest ona taka, że ten skrypcik się czasami przydaje. Będę mógł pisać wszystkie moje funkcje w jednym pliku. To chyba nie jest źle? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 574 Pomógł: 2 Dołączył: 13.04.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
NIE
[php:1:ba582c8a33]<?php data($dzien, $miesiac, $rok) ?>[/php:1:ba582c8a33] W pliku niezauwazylem abys deklarował zmiennych $dzien, $miesiac, $rok. Mozesz zrobic tak: [php:1:ba582c8a33]<?php data(29, 2, 1995); //wprowadzic zwykle liczby ![]() /*lub gdzies na poczatku ZADEKLAROWAC ZMIENNE $dzien, $miesiac, $rok chociazby w formularzu i wtedy wywalac funkcje od tych zmiennych */ ?>[/php:1:ba582c8a33] Wtedy z fukcji wywalasz to: [php:1:ba582c8a33]<?php $dzien = date("d"); $miesiac = date("m"); $rok ("Y"); ?>[/php:1:ba582c8a33] BTW... po funkcji date() nie powinno byc srednika? ; <--- -------------------- jQuery, JavaScript i CSS - porady, tutoriale
highlab.pl - blog o technologiach, nauce i programowaniu |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 405 Pomógł: 1 Dołączył: 19.09.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
shpyo: To, że funkcję wywołasz tak jak podałeś niczego nie zmieni. Zauważ, że w samej funkcji nie ma żadnego return, print, echo ani nic co mogłoby cokolwiek zwrócić (ew. wyświetlić).
MagnuM: Zmodyfikowałem lekko Twoją funkcję i wyszło mi coś takiego: [php:1:e82611f064]<?php function data( $time ) { $miesiac = date( 'n', $time ); switch($miesiac) { case '1' : return date( 'j', $time ).' stycznia '.date( 'Y', $time ); break; case '2' : return date( 'j', $time ).' lutego '.date( 'Y', $time ); break; case '3' : return date( 'j', $time ).' marca '.date( 'Y', $time ); break; case '4' : return date( 'j', $time ).' kwietnia '.date( 'Y', $time ); break; case '5' : return date( 'j', $time ).' maja '.date( 'Y', $time ); break; case '6' : return date( 'j', $time ).' czerwca '.date( 'Y', $time ); break; case '7' : return date( 'j', $time ).' lipca '.date( 'Y', $time ); break; case '8' : return date( 'j', $time ).' sierpnia '.date( 'Y', $time ); break; case '9' : return date( 'j', $time ).' września '.date( 'Y', $time ); break; case '10' : return date( 'j', $time ).' października '.date( 'Y', $time ); break; case '11' : return date( 'j', $time ).' listopada '.date( 'Y', $time ); break; case '12' : return date( 'j', $time ).' grudnia '.date( 'Y', $time ); break; } } ?>[/php:1:e82611f064] Do powyższej fuinkcji podajesz znacznik czasu, a ona zwraca ciąg znaków postaci '10 czerwca 2004'. Używa się tego mniej-więcej tak: [php:1:e82611f064]<?php echo data( time() ); echo '<br>'; echo data( mktime( 0, 0, 0, 2, 8, 1983 ) ); ?>[/php:1:e82611f064] O funkcji [manual:e82611f064]time[/manual:e82611f064] i [manual:e82611f064]mktime[/manual:e82611f064] możesz poczytać w manualu. Jeśli używasz funkcji, a narazie widzę, że jeszcze nie do końca sobie radzisz, powinieneś poczytać o zasięgu zmiennych pod adresem: http://pl2.php.net/manual/pl/language.vari...ables.scope.php. -------------------- Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów. Blog: Małolepszy.info |
|
|
![]()
Post
#9
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
O raaany... od początku...
1. Każdy parametr funkcji musi być oddzielony przecinkiem 2. Nie wolno deklarować funkcji samej w sobie... czyli powinno być np. tak: index.php [php:1:56b2be58b9]<?php include("functions.php"); // Wyświetlamy datę date(); ?>[/php:1:56b2be58b9] functions.php [php:1:56b2be58b9]<?php function date() { // Deklarujemy zmienne $Dzien, $Miech i $Rok $Dzien = gmdate("d"); $Miech = gmdate("m"); $Rok = gmdate("Y"); // Tworzymy tablicę z nazwami poszczególnych miesięcy (poczytaj o array) $Miechy = array(1 => "stycznia", 2 => "lutego", 3 => "marca", 4 => "kwietnia", 5 => "maja", 6 => "czerwca", 7 => "lipca", 8 => "sierpnia", 9 => "wrzesnia", 10 => "pazdziernika", 11 => "listopada", 12 => "grudnia"); // Wyświetlamy datę z miesiącami pobranymi z $Miechy (poczytaj o tablicach) echo 'Dzisiaj jest <b>'.$Dzien.' '.$Miechy[$Miech].' '.$Rok.'r.<br/>'; } ?>[/php:1:56b2be58b9] i wtedy wyświetli np: Dzisiaj jest 10 czerwca 2004r. pozdrawiam... Poczytaj manual php [ http://php.net ] |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Oki, wielkie dzięki Jojo:)
Tylko jest jeszcze jedna zadziwiająca kwestia. index.php [php:1:fdbeea2605]<?php include("funkcje.php"); echo data( time() ); echo '<br>'; data( mktime( 0, 0, 0, 2, 8, 1983 ) ); ?>[/php:1:fdbeea2605] Teraz gdy uruchamiam ten plik, data pokazuje się dwa razy, jedna pod drugą. Powoduje to include, a drugą date wyświetla echo. Zaś gdy plik wygląda tak: index.php [php:1:fdbeea2605]<?php include("funkcje.php"); ?>[/php:1:fdbeea2605] To data wyświetla sie tylko raz, czyli tak jak ma być. Ale ja tu przewiduje taką rzecz, że gdy napisze w pliku funkcje więcej funkcji i w pliku index.php dam "include("funkcje.php");" to wyświetli mi tam wszystkie funkcje z pliku funkcje.php. HELP Pozdrawiam! |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale ja tu przewiduje taką rzecz, że gdy napisze w pliku funkcje więcej funkcji i w pliku index.php dam "include("funkcje.php");" to wyświetli mi tam wszystkie funkcje z pliku funkcje.php.
Samo zaincludowanie pliku z funkcjami nie spowoduje ich wyświetlenia. Zresztą nie można wyświetlić funkcji. Można wyświetlić wynik działania funkcji. Np. to nic nie pokaże: [php:1:ea4d764090] <?php include( "funkcje.php" ); ?> [/php:1:ea4d764090] Ale to już tak: [php:1:ea4d764090] <?php include( "funkcje.php" ); echo data( mktime( 0, 0, 0, 2, 8, 1983 ) ); //użycie wersji autorstwa Jojo ?> [/php:1:ea4d764090] |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Oki ;-) Rozwikłałem mój problem dzięki Wam
![]() Jeszcze jedno wyjaśnienie. @mike_mech Sprawa wygląda tak, że jeżeli w pliku funkcje.php na końcu dasz to: funkcje.php [php:1:ee867c2fb5]<?php echo data(time() ); echo '<br>'; echo data( mktime( 0, 0, 0, 2, 8, 1983 ) ); ?>[/php:1:ee867c2fb5] i w pliku index.php dasz tak: [php:1:ee867c2fb5]<?php include( "funkcje.php" ); ?>[/php:1:ee867c2fb5] To wyświetli Ci dwa razy datę, jedna po drugiej. Wygląda na to że bierze ją z pliku funkcje i wyświetla na ekranie. Ja mój problem rozwiązałem tak, że w pliku funkcje nie wyświetliłem daty. Zrobiłem tak: funkcje.php [php:1:ee867c2fb5]<?php data(time() ); data( mktime( 0, 0, 0, 2, 8, 1983 ) ); /* oczywiście jest to tylko końcówka pliku */ ?>[/php:1:ee867c2fb5] A sam plik index.php wyświetla datę dzięki funkcji data utworzonej w pliku funkcje.php... index.php [php:1:ee867c2fb5]<?php include( "funkcje.php" ); print data( time() ); ?>[/php:1:ee867c2fb5] I teraz data jest elegancko wyświetlana tylko raz, czyli otrzymałem pożądny efekt. Wielkie dzięki ![]() P.S. teraz ide poczytać to co mi oferował Jojo ![]() Pozdrawiam ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Oki, nastał czas na rozbudowę mojego wspaniałego skryptu.
Tym razem mialem zamiar dodać do niego funkcję która przedstawiałaby dzień słownie. Wszystko razem miało dawać efekt daty: Piątek, 11. czerwca 2004 Oczywiście znowu mam jakieś problemy ze zrobieniem skryptu ![]() [php:1:6f18cb182e]index.php <?php include( "funkcje.php" ); print data(time() ); print "<br>"; print data2(time() ); ?>[/php:1:6f18cb182e] [php:1:6f18cb182e]funkcje.php <?php # funkcja wyświetlająca miesiąc - słownie function data($time) { $miesiac = date('n', $time ); switch($miesiac) { case '1' : return date( 'j.', $time ).' stycznia '.date( 'Y', $time ); break; case '2' : return date( 'j.', $time ).' lutego '.date( 'Y', $time ); break; case '3' : return date( 'j.', $time ).' marca '.date( 'Y', $time ); break; case '4' : return date( 'j.', $time ).' kwietnia '.date( 'Y', $time ); break; case '5' : return date( 'j.', $time ).' maja '.date( 'Y', $time ); break; case '6' : return date( 'j.', $time ).' czerwca '.date( 'Y', $time ); break; case '7' : return date( 'j.', $time ).' lipca '.date( 'Y', $time ); break; case '8' : return date( 'j.', $time ).' sierpnia '.date( 'Y', $time ); break; case '9' : return date( 'j.', $time ).' września '.date( 'Y', $time ); break; case '10' : return date( 'j.', $time ).' października '.date( 'Y', $time ); break; case '11' : return date( 'j.', $time ).' listopada '.date( 'Y', $time ); break; case '12' : return date( 'j.', $time ).' grudnia '.date( 'Y', $time ); break; } } data(time() ); data( mktime( 0, 0, 0, 2, 8, 1983 ) ); /******************************************** ********************************************/ # funkcja wyświetlajaca dzień - słownie function data2($time) { $dzien = date('w', $time ); switch($dzien) { case'1' : return 'Poniedziałek, '.date( 'j. ', $time).date( 'Y', $time); break; case'2' : return 'Wtorek, '.date( 'j. ', $time).date( 'Y', $time); break; case'3' : return 'Środa, '.date( 'j. ', $time).date( 'Y', $time); break; case'4' : return 'Czwartek, '.date( 'j. ', $time).date( 'Y', $time); break; case'5' : return 'Piątek, '.date( 'j. ', $time).date( 'Y', $time); break; case'6' : return 'Sobota, '.date( 'j. ', $time).date( 'Y', $time); break; case'7' : return 'Niedziela, '.date( 'j. ', $time).date( 'Y', $time); break; } } data2(time() ); ?>[/php:1:6f18cb182e] I teraz gdy włączam index.php to data prezentuje się tak: 11. czerwca 2004 Piątek, 11. 2004 Mógłby mi ktoś zmodyfikować skrypt aby był pożądany przezemnie efekt? Przypominamm że chciałbym aby data wyglądała następująco: Piątek, 11 czerwca 2004 Ta dolna oczywiście, to żeby nie było tej górnej to umiem zrobić ![]() Pozdrawiam! |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 405 Pomógł: 1 Dołączył: 19.09.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Teraz to kapkę namieszałeś
![]() [php:1:f1bc3ce311]<?php function data( $time ) { $miesiac = date( 'n', $time ); $dzien = date( 'w', $time ); switch( $miesiac ) // ustawiamy odpowiednią nazwę miesiąca { case '1' : $nazwa_miesiaca = 'stycznia'; break; case '2' : $nazwa_miesiaca = 'lutego'; break; case '3' : $nazwa_miesiaca = 'marca'; break; case '4' : $nazwa_miesiaca = 'kwietnia'; break; case '5' : $nazwa_miesiaca = 'maja'; break; case '6' : $nazwa_miesiaca = 'czerwca'; break; case '7' : $nazwa_miesiaca = 'lipca'; break; case '8' : $nazwa_miesiaca = 'sierpnia'; break; case '9' : $nazwa_miesiaca = 'września'; break; case '10' : $nazwa_miesiaca = 'października'; break; case '11' : $nazwa_miesiaca = 'listopada'; break; case '12' : $nazwa_miesiaca = 'grudnia'; break; } switch( $dzien ) // ustawiamy odpowiednią nazwę dnia { case '1' : $nazwa_dnia = 'Poniedziałek'; break; case '2' : $nazwa_dnia = 'Wtorek'; break; case '3' : $nazwa_dnia = 'Środa'; break; case '4' : $nazwa_dnia = 'Czwartek'; break; case '5' : $nazwa_dnia = 'Piątek'; break; case '6' : $nazwa_dnia = 'Sobota'; break; case '7' : $nazwa_dnia = 'Niedziela'; break; } return $nazwa_dnia.', '.date( 'j', $time ).'. '.$nazwa_miesiaca.' '.date( 'Y', $time ); } ?>[/php:1:f1bc3ce311] Teraz w pliku, w którym chcesz wyświetlić datę wystarczy dać coś takiego: [php:1:f1bc3ce311]<?php include( "funkcje.php" ); echo data( time() ); ?>[/php:1:f1bc3ce311] A na koniec niespodzianka ![]() ![]() [php:1:f1bc3ce311]<?php $arrLocale = array( "pl_PL", "polish_pol", "pl_PL.ISO8859-2" ); setlocale( LC_ALL, $arrLocale ); echo strftime("%A, %d. %B %Y"); ?>[/php:1:f1bc3ce311] Jeśli chcesz więcej szczegółów na temat powyższego sposobu, to polecam artykuł: http://php.pl/index.php/phppl/artyku_y/pom...a_sprawa_polska oraz Manual php (funkcje [manual:f1bc3ce311]setlocale[/manual:f1bc3ce311] oraz [manual:f1bc3ce311]strftime[/manual:f1bc3ce311]). -------------------- Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów. Blog: Małolepszy.info |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Oki, bardzo fajnie, wszytsko działa.
Pierwszy jak i drugi sposób jest spoko ![]() ![]() Dzieki Jojo ![]() Pozdrawiam ![]() -------------------- ![]() |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 19.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 00:37 |