Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Poprawki dla skryptów
Forum PHP.pl > Forum > Przedszkole
Konami
Siemanko. Mam skrypty z którymi się męczę od x czasu. Nie mogę za Chiny zrobić ich tak jak bym chciał.
Chodzi o to aby każdy skrypt wyświetlał powiadomienie: "Wystąpił błąd" za każdym razem gdy ktoś wpisze liczbę mniejszą od 0.

  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  5. <meta name="generator" content="PSPad editor, www.pspad.com">
  6. <title>Kalkulator</title>
  7. </head>
  8. <body>
  9. <form action="" method="POST">
  10. Podaj R<input type="number" value="<?php echo $_POST[r]; ?>" name="r"><br>
  11.  
  12.  
  13. <input type="submit" name="submit" value="Wylicz!">
  14. <input type="reset" value="Wyczysc pola">
  15. </form>
  16. <?php
  17.  
  18. if(isset($_POST)){
  19.  
  20. if($_POST["r"] == 0 )
  21. echo'Wystąpił błąd';
  22. else {
  23.  
  24. $wynik=4/3*3.14*$_POST[r]*$_POST[r]*$_POST[r];
  25. $wynik2=4*3.14*$_POST[r]*$_POST[r];
  26.  
  27. echo "Objętoć wynosi: $wynik";
  28. echo "<br>";
  29. echo "Pole wynosi: $wynik2";
  30.  
  31. }}
  32.  
  33.  
  34. ?>
  35.  
  36.  
  37. </body>
  38. </html>



To co zrobiłem tutaj nie chce działać. Chciałbym również aby tego napisu "Wystąpił błąd" nie było widać przed wpisaniem liczb.

A co do reszty to chciałbym tutaj kosmetyczne poprawki ponieważ wyskakują mi błędy, a ja poprawiam i nie mogę znaleźć tego właściwego rozwiazania :/

  1. <!doctype html>
  2. <body>
  3. <?php
  4. echo "<form name=\"\" method=\"post\">
  5. podaj a <input type=\"number\" value=" $_POST[a]\" name=\"a\"><br>
  6. <input type=\"submit\" name=\"submit\" value=\"wylicz!\">
  7. <input type=\"reset\" value=\"wyczysc pola\">
  8. </form>":
  9.  
  10. if(isset($_POST)){
  11.  
  12. if($_POST["$_POST[a]"] == 0 || )
  13. echo 'Wystąpil bląd';
  14. else {
  15.  
  16.  
  17.  
  18. $wynik=(3*pow($_POST[a],2)*sqrt(3)) / 2;
  19. echo "pole wynosi: $wynik";
  20.  
  21.  
  22. }}
  23.  
  24.  
  25.  
  26. ?>
  27.  
  28.  
  29.  
  30. </body>
  31. </html>


  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  5. <meta name="generator" content="PSPad editor, www.pspad.com">
  6. <title>Kalkulator</title>
  7. </head>
  8. <body>
  9. <?php
  10. <form action=" " method="POST">
  11. Podaj R<input type="number" value="$_POST[r]" name="r"><br>
  12. Podaj H<input type="number" value="$_POST[h]" name="h"><br>
  13.  
  14. echo "<input type=\"submit\" name=\"submit\" value=\"Wylicz!\">
  15. <input type=\"reset\" value=\"Wyczysc pola\">
  16. </form>
  17.  
  18.  
  19.  
  20. $wynik=3.14*$_POST[r]*$_POST[r]*$_POST[h];
  21. $wynik2=2*3.14*$_POST[r]*($_POST[r]+$_POST[h]);
  22.  
  23. echo "Objętoć wynosi: $wynik";
  24. echo "<br>";
  25. echo "Pole wynosi: $wynik2";
  26.  
  27.  
  28. ?>
  29.  
  30.  
  31. </body>
  32. </html>
Raito
Do pozbycia się wyskakujących błędów musisz zmienić if(isset($_POST)){} na if(!empty($_POST)){}.
Następnym błędem jest nieobjęcie w cudzysłów litery r (powinno być $_POST["r"]).
Twój obecny skrypt wywala błąd tylko wtedy gdy zostanie podana wartość 0. Napisz to w ten sposób: if($_POST["r"] <= 0 ), co znaczy jeśli $_POST["r"] jest mniejsza lub równa 0 wywal błąd.
Po co jest ci wartość domyślna w polu r?
Konami
Jesteś wielki biggrin.gif
Oczywiście daje pomógł.

A co do fragmentu: if($_POST["r"] <= 0 ) to jak wpisać do tego kilka elementów np. jakbym chciał przyrównać a, b i c ?
-gość-
Po co ci ten formularz w echu?
  1. <!doctype html>
  2. <body>
  3.  
  4. <form name="" method="post">
  5. podaj a <input type="number" value="<?php $_POST[a] ?>" name="a"><br>
  6. <input type="submit" name="submit" value="wylicz!">
  7. <input type="reset" value="wyczysc pola">
  8. </form>
  9.  
  10. <?php
  11.  
  12. if(!empty($_POST)){
  13. if($_POST['a'] == 0) echo 'Wystąpil bląd';
  14. else {
  15. $wynik=(3*pow($_POST['a'],2)*sqrt(3)) / 2;
  16. echo 'pole wynosi: </br>' . $wynik;
  17. }
  18. }
  19. ?>
  20. </body>
  21. </html>


A co do ostatniego pytania użyj operatorów logicznych.
-gość-
I zamień to
  1. podaj a <input type="number" value="<?php $_POST[a] ?>" name="a"><br>

na to
  1. podaj a <input type="number" value="<?php echo $_POST["a"] ?>" name="a"><br>
Konami
Dziękuje wszystki smile.gif. Mam jeszcze jedno pytanie:

  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  5. <meta name="generator" content="PSPad editor, www.pspad.com">
  6. <title>Kalkulator</title>
  7. </head>
  8. <body>
  9. <form action='' method="post">
  10. Podaj stopień silni<input type="number" name="stopien"><br>
  11. <input type="submit" name="submit" value="Wylicz!">
  12. <input type="reset" value="Wyczysc pola">
  13. </form>
  14. <?php
  15.  
  16.  
  17. if(!empty($_POST)){
  18. if($_POST['stopien'] == 0) echo 'Wystąpił błąd';
  19. else {
  20.  
  21.  
  22. if (!empty($_POST['submit'])) {
  23. echo silnia($_POST["stopien"]);
  24. }
  25. function silnia($stopien)
  26. {
  27. $wynik = 1; for($i = 1;$i < $stopien+1;$i++)
  28. {
  29. $wynik = $wynik * $i ."<br>";
  30. }
  31. return $wynik;
  32. }
  33.  
  34. }}
  35. ?>
  36.  
  37.  
  38. </body>
  39. </html>


Po wpisaniu czegokolwiek wywala mi:

CODE

Fatal error: Call to undefined function silnia() in /virtual/projektwl.cba.pl/modules/php/php.module(80) : eval()'d code on line 23
Raito
Pamiętaj o tym, że funkcje muszą być zdefiniowane przed tym, zanim je wywołasz. Wytnij funkcję silnia i wklej na samym początku po <?php.
Turson
@up
Wcale nie muszą:
  1. <?php
  2. echo silnia(3);
  3. function silnia($stopien)
  4. {
  5. $wynik = 1;
  6. for($i = 1;$i < $stopien+1;$i++)
  7. {
  8. $wynik = $wynik * $i ."<br>";
  9. }
  10. return $wynik;
  11. }
Konami
Dziękuje Wam Panowie biggrin.gif. Pomogło. Wszystko działa smile.gif.
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.