Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz + SubStr
Forum PHP.pl > Forum > Przedszkole
GANJAq
Witam,

Mam pewien problem z zadaniem.

Zadanie:

  1. <?
  2. $liczba = 1278;
  3. $cyfra = substr($liczba, 3, 1);
  4. print "oto czwarta cyfra: $cyfra";
  5. print "<br>";
  6. $cyfra = substr($liczba, 1, 1);
  7. print "oto druga cyfra: $cyfra";
  8. $dlugosc = strlen($liczba);
  9. print "<br>";
  10. print "ta liczba ma $dlugosc cyfr";
  11. ?>

Przepisz go i sprawdź, jak działa. Następnie napisz taki program: użytkownik wpisuje w formularzu jakąś liczbę, a program wyświetla napis "masz (ta liczba) punktów". Słowo punktów ma być w odpowiedniej formie. Przykładowo, jeśli użytkownik wpisze liczbę 0, ma się pojawić napis "masz 0 punktów", a jeśli użytkownik wpisze liczbe 3, ma się pojawić napis "masz 3 punkty".


Pomyślałem, że podzielę daną liczbę i tak zrobiłem.

  1. $pkty = substr($ilepunktow, -1);
  2. print "Masz tyle: $pkty punktow";


I teraz daje Warunek jeżeli IF ($ilepunktow == '0') to żeby wykonało mi te obcięcie np. 1050 -> żeby zostało 0 i wtedy zapamiętało w zmiennej i potem przy wyświetlaniu będzie komunikat, że "zdobyłeś 0 punktów" przy 1 to samo ale już przy 2,3,4 to "zdobyłeś 4 punkty" np. 1054 punkty a nie punktów.

Jeżeli coś nie jasno wytłumaczyłem to proszę o pytania.
Daimos
masz tutaj stary temat:
http://forum.php.pl/index.php?showtopic=102436
GANJAq
Dalej mi nie działa jak potrzeba. Zrobiłem podobnie jak w tamtym temacie.

  1. <?php
  2.  
  3. $ilepunktow = $_POST ['pkt'];
  4.  
  5. if ($ilepunktow == '0')
  6. {
  7. print "Masz 0 punktow";
  8. }
  9. if ($ilepunktow == '1')
  10. {
  11. print "Masz 1 punkt";
  12. }
  13. if($ilepunktow > 10 && $ilepunktow < 15)
  14. {
  15. print "Masz $ilepunktow punktow";
  16. }
  17. else {
  18. switch( $ilepunktow )
  19. {
  20. case 0:
  21. case 1:
  22. case 5:
  23. case 6:
  24. case 7:
  25. case 8:
  26. case 9: return "Masz $ilepunktow punktow";
  27. case 2:
  28. case 3:
  29. case 4:
  30. default:
  31. return "Masz $ilepunktow punkty";
  32. }
  33. }
  34.  
  35. ?>
nospor
No wlasnie.... zrobiles PODOBNIE.... tam była funkcja i tam RETURN miało sens. Tu nie masz funkcji i tu RETURN jest bez sensu
GANJAq
Okej dzięki za poradę ale niestety po zmienianiu u Siebie nic u mnie nie wyświetla ani błędu ani napisu.

  1. <?php
  2.  
  3. $ilepunktow = $_POST ['pkt'];
  4.  
  5. function odmiana( $ilepunktow)
  6. {
  7. if( $ilepunktow == 0 ) return 'nikt jeszcze nie głosował';
  8. else if( $ilepunktow == 1 ) return 'glosowała 1 osoba';
  9. else {
  10. $zmienna = $ilepunktow % 100;
  11. if( $zmienna > 11 && $zmienna < 15 ) return "głosowało $counter osób";
  12. else {
  13. $liczba = $zmienna % 10;
  14. switch( $liczba ) {
  15. case 0:
  16. case 1:
  17. case 5:
  18. case 6:
  19. case 7:
  20. case 8:
  21. case 9: return "głosowało $ilepunktow osób";
  22. case 2:
  23. case 3:
  24. case 4:
  25. default:
  26. return "głosowały $ilepunktow osoby";
  27. }
  28. }
  29. }
  30. }
  31.  
  32. ?>
nospor
Wiesz, zeby cos sie pojawilo na ekranie, to trzeba choćby z raz uzyc ECHO....
Przenosze na przedszkole

ps: o wywołaniu funkcji, którą sie stworzyło już nawet nie wspomne.
GANJAq
  1. $ilepunktow = $_POST ['pkt'];
  2.  
  3. function odmiana( $ilepunktow)
  4. {
  5. if( $ilepunktow == 0 ) return print ('nikt jeszcze nie głosował');
  6. else if( $ilepunktow == 1 ) return print ('glosowała 1 osoba');
  7. else {
  8. $zmienna = $ilepunktow % 100;
  9. if( $zmienna > 11 && $zmienna < 15 ) return print ("głosowało $counter osób");
  10. else {
  11. $liczba = $zmienna % 10;
  12. switch( $liczba ) {
  13. case 0:
  14. case 1:
  15. case 5:
  16. case 6:
  17. case 7:
  18. case 8:
  19. case 9: return print ("głosowało $ilepunktow osób");
  20. case 2:
  21. case 3:
  22. case 4:
  23. default:
  24. return print ("głosowały $ilepunktow osoby");
  25. }
  26. }
  27. }
  28. odmiana($ilepunktow);
  29. }


Jak widać dalej nic wywołalem funkcję oraz dodałem żeby wyświetliło chyba że gdzie indziej to trzeba napisać ?
nospor
echo odmiana($ilepunktow);
i wywal te print z funkcji.... czemu bierzesz sie za programowanie nie opanowawszy wpierw podstaw tego jezyka?
tzm
nie możesz napisać po prostu echo odmiana($parametr) ?
GANJAq
Nie każdy od razu rodzi się programistą nie musisz mnie 'hejtować'. Pozmieniałem tamto co radziłeś i dalej nie idzie...

  1. <?php
  2.  
  3. $ilepunktow = $_POST ['pkt'];
  4.  
  5. function odmiana($ilepunktow)
  6. {
  7. if( $ilepunktow == 0 ) return 'nikt jeszcze nie głosował';
  8. else if( $ilepunktow == 1 ) return 'glosowała 1 osoba';
  9. else {
  10. $zmienna = $ilepunktow % 100;
  11. if( $zmienna > 11 && $zmienna < 15 ) return "głosowało $ilepunktow osób";
  12. else {
  13. $liczba = $zmienna % 10;
  14. switch( $liczba ) {
  15. case 0:
  16. case 1:
  17. case 5:
  18. case 6:
  19. case 7:
  20. case 8:
  21. case 9: return "głosowało $ilepunktow osób";
  22. case 2:
  23. case 3:
  24. case 4:
  25. default:
  26. return "głosowały $ilepunktow osoby";
  27. }
  28. }
  29. }
  30. echo odmiana($ilepunktow);
  31. }
  32.  
  33. ?>
nospor
Nikt nie rodzi sie od razu programistą.
Nikt cie tu nie hejtuje. Zadalem jedynie proste pytanie, czemu bierzesz sie za programowanie nie opanowawszy wpierw podstaw. Czy to trudne pytanie by na nie odpowiedziec?

I co, sugerujesz, że nadal nic się nie wyswietla? Nic a nicc?

edit:
facepalmxd.gif
echo odmiana($ilepunktow);
to mialo byc poza funkcją a nie w niej :/
GANJAq
Podstawy znam strukturalnego ale obiektowego dopiero się uczę dlatego nie dziw się, że zadaję takie pytania. Program działa elegancko. Możesz zamknąć. Pozdrawiam.
nospor
Sek w tym, że tu nie ma nic z obiektowki... nic a nic... To co tu masz to jedno wielkie STRUKTURALNE.

Poza tym ECHO to podstawa podstaw struktury, wiec dziwne ze musialem o tym przypominac.
GANJAq
Myślałem, że można funkcje wywołać jak jest zagnieżdżona w niej ale trzeba po za nią to wtedy echo jest potrzebne.
Daimos
smile.gif)))))))))
No tak... ciekawie się temat rozwinął.
Można funkcję wywołać w funkcji, ale nie w tym rzecz. To że deklarujesz funkcję, to jest tylko jej stworzenie. Ona się nie uruchamia. Więc poza funkcją, musisz ją wywołać, inaczej nic z tego nie będzie. Jak nospor Ci mówi, są to podstawy podstaw, programowania strukturalnego. Nie wiesz do czego służy echo, return i co to są funkcję, to nie dziw się na takie reakcje. To nie hejt, tylko zwrócenie Ci uwagi, żebyś poznał podstawy.

Krótkie podsumowanie
function - tylko deklaruje funkcję, nie uruchamia jej
echo - wyświetla string
return - przekazuje string np. z funkcji na zewnątrz, czyli:
  1. // deklaracja:
  2. function wyswietl()
  3. {
  4. echo 'wyswietlilo sie';
  5. }
  6. // wywolanie:
  7. wyswietl();

Tak o to, wyświetlił się tekst z funkcji. Teraz przykład z return, które widzę namieszało Ci w głowie:
  1. // deklaracja:
  2. function wyswietl()
  3. {
  4. return 'wyswietlilo sie';
  5. }
  6. // wywolanie:
  7. wyswietl();
  8. // nic nie daje, bo nie wyświetliliśmy, funkcja tylko zwraca daną wartość, więc poprawka:
  9. $tresc = wyswietl();
  10. echo $tresc;
tzm
Można używać tej samej funkcji w funkcji.. to się nazywa rekurencja ogonowa i raczej używa się przy algorytmice aż do uzyskania oczekiwanego efektu, patrz silnia.
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.