Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularz + SubStr
GANJAq
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


masz tutaj stary temat:
http://forum.php.pl/index.php?showtopic=102436


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
GANJAq
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


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. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No wlasnie.... zrobiles PODOBNIE.... tam była funkcja i tam RETURN miało sens. Tu nie masz funkcji i tu RETURN jest bez sensu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GANJAq
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


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. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GANJAq
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


  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ć ?

Ten post edytował GANJAq 7.11.2014, 11:09:21
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




echo odmiana($ilepunktow);
i wywal te print z funkcji.... czemu bierzesz sie za programowanie nie opanowawszy wpierw podstaw tego jezyka?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tzm
post
Post #9





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


nie możesz napisać po prostu echo odmiana($parametr) ?
Go to the top of the page
+Quote Post
GANJAq
post
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


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. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GANJAq
post
Post #12





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


Podstawy znam strukturalnego ale obiektowego dopiero się uczę dlatego nie dziw się, że zadaję takie pytania. Program działa elegancko. Możesz zamknąć. Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GANJAq
post
Post #14





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.10.2008

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


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.
Go to the top of the page
+Quote Post
Daimos
post
Post #15





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


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;


Ten post edytował Daimos 13.11.2014, 19:57:55


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
tzm
post
Post #16





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


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.
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 Aktualny czas: 21.08.2025 - 06:29