Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tylko cyfry + skrócenie kodu
Forum PHP.pl > Forum > Przedszkole
Matthewcode
Napisałem kod na potęgowanie:

  1. <body style="background-color: #000000; color: #ffffff;">
  2. <?
  3.  
  4. $a=$_POST['a'];
  5. if ($a) {
  6. echo 'Potęgowanie do dwóch '.$a. ' = '.($a*$a).'<br />';
  7. }
  8. if ($a) {
  9. echo 'Potęgowanie do trzech '.$a. ' = '.($a*$a*$a).'<br />';
  10. }
  11. if ($a) {
  12. echo 'Potęgowanie do czterech '.$a. ' = '.($a*$a*$a*$a).'<br />';
  13. }
  14. if ($a) {
  15. echo 'Potęgowanie do pięciu '.$a. ' = '.($a*$a*$a*$a*$a).'<br />';
  16. }
  17. if ($a) {
  18. echo 'Potęgowanie do sześciu '.$a. ' = '.($a*$a*$a*$a*$a*$a).'<br />';
  19. }
  20. if ($a) {
  21. echo 'Potęgowanie do siedmiu '.$a. ' = '.($a*$a*$a*$a*$a*$a*$a).'<br />';
  22. }
  23. if ($a) {
  24. echo 'Potęgowanie do ośmiu '.$a. ' = '.($a*$a*$a*$a*$a*$a*$a*$a).'<br />';
  25. }
  26. if ($a) {
  27. echo 'Potęgowanie do dziewięciu '.$a. ' = '.($a*$a*$a*$a*$a*$a*$a*$a*$a).'<br />';
  28. }
  29. if ($a) {
  30. echo 'Potęgowanie do dziesięciu '.$a. ' = '.($a*$a*$a*$a*$a*$a*$a*$a*$a*$a).'<br />';
  31. }
  32. ?>
  33. <form action="potegi.php" method="post">
  34. Potęgowanie: <input type="text" name="a" value="" /> <br />
  35. <input type="submit" name="ok" value="Policz!">
  36. </form>

Tutaj tkwi moje pytanie. Jak można go skrócić? Czy się w ogóle da? Chciałbym, aby efekt był taki sam, a skróciła się ilość linii kodu.
Drugie pytanie: jak zmodyfikować ten kod, aby było można wpisać tylko CYFRY z przedziału 1-100. Jeżeli ktoś by wpisał cyfrę spoza przedziału 1-100 to by otrzymał komunikat "Można potęgować jedynie liczby 1-100".
mortus
  1. $errors = array();
  2. if(!empty($_POST['a'])) {
  3. if(!is_numeric($_POST['a'])) {
  4. $errors[] = 'Podana wartość nie jest liczbą!';
  5. } else {
  6. if($_POST['a'] < 0 || $_POST['a'] > 100) {
  7. $errors[] = 'Możesz potęgować tylko liczby z zakresu 1-100';
  8. }
  9. }
  10. if(empty($errors)) {
  11. for($i = 2; $i <= 10; $i++) {
  12. echo $_POST['a'] . '<sup>' . $i . '</sup> = ' . (pow($_POST['a'], $i)) . '<br />';
  13. }
  14. } else {
  15. echo 'Wystąpiły błędy:<br />';
  16. foreach($errors as $error) {
  17. echo $error . '<br />';
  18. }
  19. }
  20. }

Sprawdzenie, czy liczba jest z określonego przedziału to nic innego jak walidacja formularza, o czym radzę poczytać. Jeśli chcesz tworzyć takie śmieszne zdania "Potęgowanie do dwóch", "Potęgowanie do trzech", itd., to dodatkowo musisz sobie liczebniki w tablicy umieścić i z tych liczebników w pętli for korzystać. Jak widzisz skrócenie kodu polega na zastosowaniu pętli for. Natomiast do potęgowania możesz użyć funkcji pow().
kkpre
mała poprawka powyższego kodu

linię 6
  1. if($_POST['a'] < 0 || $_POST['a'] > 100) {


zamień na

  1. if($_POST['a'] < 1 || $_POST['a'] > 100) {


"Można potęgować jedynie liczby 1-100" wink.gif
Matthewcode
worriedsmiley.gif
Poczytam ja jeszcze trochę więcej o PHP bo nic z tego nie zrozumiałem co tam napisałeś.
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.