Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Mój pierwszy skrypt :-)
Forum PHP.pl > Forum > Przedszkole
sebus79
Witam.

Kiedyś, kiedyś, bawiłem się w HTML. Minęło nieco czasu no i wziąłem się z naukę PHP.
Dużo czytam i ćwiczę z książką oraz kursami.

Jednak postanowiłem ostatnio sam stworzyć skrypt prostego kalkulatora (aby sprawdzić czy dam radę zastosować poprawnie funkcje i zmienne).
Chyba się nawet udało :-)

Napiszcie proszę co sądzicie o tym moim tworze. Wszelkie pochwały jak i krytyki mile widziane.

Mam natomiast dwa pytanka, z którymi nie mogę sobie dać rady zamieszczone poniżej kodu. Proszę więc o pomoc i radę.

PLIK kalkulator.html
  1. <!DOCTYPE html>
  2. <html lang="pl">
  3. <meta charset="utf-8" />
  4. </head>
  5. <form action="kalkulator.php" method="POST">
  6. <input type="text" name="pierwsza" size="5" /><br />
  7. <input type="text" name="druga" size="5" /><br />
  8.  
  9. <select name="operacje">
  10. <option name="dodawanie">dodawanie</option>
  11. <option name="odejmowanie">odejmowanie</option>
  12. <option name="mnozenie">mnozenie</option>
  13. <option name="dzielenie">dzielenie</option>
  14.  
  15. <input type="submit" value="Wyślij dane" /><br />
  16. </form>
  17.  
  18. </BODY>
  19. </HTML>


PLIK kalkulator.php

  1. <!DOCTYPE html>
  2. <html lang="pl">
  3. <head>
  4. <meta charset="utf-8" />
  5. </head>
  6. <body>
  7.  
  8. <?php
  9.  
  10. // pierwszy kalkulator;
  11.  
  12. $a=$_POST['pierwsza'];
  13. $b=$_POST['druga'];
  14. $c=$_POST['operacje'];
  15.  
  16. if (preg_match('@^[0-9.,]{1,}$@',$_POST['pierwsza'])){
  17. echo ("Pierwsza wprowadzona cyfra to: ".$a."<BR><BR>");
  18. } else {
  19. echo("W pierwszej cyfrze wpisałeś znaki niedozwolone."."<BR>"."Wróć i popraw formularz"."<BR>");
  20. }
  21.  
  22. if (preg_match('@^[0-9.,]{1,}$@',$_POST['druga'])){
  23. echo ("Druga wprowadzona cyfra to: ".$b."<BR><BR>");
  24. } else {
  25. echo("W drugiej cyfrze wpisałeś znaki niedozwolone."."<BR>"."Wróć i popraw formularz");
  26. }
  27.  
  28. if ($c == dodawanie)
  29. echo ("WYNIK DODAWANIA: ".($a+$b)."<BR>");
  30.  
  31. elseif ($c == odejmowanie)
  32. echo ("WYNIK ODEJMOWANIA: ".($a-$b)."<BR>");
  33.  
  34. elseif ($c == mnozenie)
  35. echo ("WYNIK MNOŻENIA: ".($a*$b)."<BR>");
  36.  
  37. elseif ($c == dzielenie)
  38. echo "WYNIK DZIELENIA: ".round ($a/$b, 2);
  39.  
  40. ?>
  41.  
  42. </body>
  43. </html>


MOJE PYTANIA:

1. Jak ograniczyć aby wpisywać tylko liczby całkowite lub dziesiętne? Chodzi o to aby nie pozwolić na wpisanie dwóch przecinków lub dwóch kropek.

2. Jeśli są podane przecinki, jak zrobić aby poprawnie liczył razem z tym co jest po przecinkach?
Ładnie mi liczy jeśli liczby są z kropkami np 3.42 + 2.14 = 5.56
Jednak gdy ktoś wpisze przecinki to: 3.42 + 2.14 = 5 - to zaokrągla.
Settype nie działa zbytnio, chyba że źle go używam.


Pozdrawiam.
widmo_91
1. Nie da się tego ograniczyć za pomocą PHP natomiast da się sprawdzić czy dane są poprawne
  1. preg_match('@^[0-9]+[,.]?[0-9]*$@',$liczba)

2.
  1. $zmienna = "3,43";
  2. $zmienna = str_replace(',', '.', $zmienna);
sebus79
Faktycznie działa str_replace.

Tego jeszcze nie znałem - ale zaraz poczyta dokładniej :-)


A jak ogólnie oceniacie moje dzieło?
Zastanawiam się czy można by było to stworzyć za pomocą switch smile.gif


Pozdrawiam.
mlawnik
Oczywiście że można stworzyć z pomocą switch.
sebus79
Cytat(widmo_91 @ 22.06.2013, 16:35:04 ) *
1. Nie da się tego ograniczyć za pomocą PHP natomiast da się sprawdzić czy dane są poprawne
  1. preg_match('@^[0-9]+[,.]?[0-9]*$@',$liczba)


To mój preg_match jest błędny:
(preg_match('@^[0-9.,]{1,}$@',$liczba'] questionmark.gif?

Jeśli tak to dlaczego?
widmo_91
Nie jest ,,błędny" mój też nie jest jakiś doskonały ale filtruję przypadki wpisania kilku znaków , lub .

Jest też wbudowana funkcja is_numeric ale musiałbyś przed sprawdzeniem poprawności liczby zamienić wszystkie przecinki na kropki za pomocą funkcji str_replace.
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.