Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Operacje matematyczne
Forum PHP.pl > Forum > Przedszkole
tomasz.cierpial
Witam,

Jestem tu nowy poniewaz dopiero zaczalem sie uczyc php, i pojawil mi sie maly problem. Napisalem sobie skrypt php, ktory powinien mi wykonywac pewne dzialanie (dzielenie), nastepnie utworzylem dla niego formularz jak zwykle html. Problem polega na tym ze po wpisaniu wartosci w pola formularza i wykonaniu operacji obliacz wyswietla sie pusta strona tak jakby nic sie nie wykonywalo. Mam nadzieje ze ktos bedzie wiedzial co i jak i dlaczego:) Ponizej kody skryptu i formatki

  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  2. <form action="kalkulator.php" method="post">
  3. <div><label for="Value1">Dzielna:
  4. <input name="Value1" type="float" id="V1"/></label>
  5. </div>
  6. <div><label for="Value2">Dzielnik:
  7. <input name="Value2" type="float" id="V2"/></label>
  8. </div>
  9. <div><input value="Oblicz" type="submit"/></div>
  10. </form>


oraz kod skryptu

  1. <?php
  2. $Value1=$_POST['Value1'];
  3. $Value2=$_POST['Value2'];
  4.  
  5. if($Value2!=0)
  6. {
  7. $Value3=$Value1/$Value2;
  8. echo 'Wynik działania jest następujący: '. $Value3
  9. }
  10. else
  11. {
  12. echo 'Nie można wykonać dzielenia z powodu błędnego dzielnika: '.htmlspecialchar($Value2,ENT_QUOTES,'UTF-8').' !';
  13. }
  14.  
  15. ?>
thek
Zacznij od sprawdzenia jak wygląda struktura PRAWIDŁOWEGO dokumentu html. Potem włącz wyświetlanie błedów i podaj je tutaj.
Sky_walker
  1. $Value1=(int)$_POST['Value1'];
  2. $Value2=(int)$_POST['Value2'];

ustawi ci wartości na liczby (integer)

Poza tym - nie ma czegoś takiego jak "htmlspecialchar" - jest htmlspecialchars a białą stronę dostajesz pewnie dlatego, że masz wyłączone raportowanie błędów smile.gif
daniofantasy
w razie czego zawsze mozesz przerwac skrypt i wyswietlic co masz w zmiennej $_POST;

  1. die(var_dump($_POST));


lub wyswietlic wynik dzialania:

  1. $Value3=$Value1/$Value2;
  2.  
  3. die(print_r($Value3));


tak samo mozesz wyswietlic te zmienne bez przerywania dzialania skryptu (tzn bez uzycia die())
frantic09
No i na końcu bodajże 8 linii brak Ci średnika wink.gif
Matthewcode
  1. <?
  2. $y=$_POST['y'];
  3. $x=$_POST['x'];
  4. if ($x) {
  5. echo 'mnożymy '.$x.' * '.$y.' = '.($x*$y).'<br />';
  6. }
  7.  
  8. ?>
  9. <?
  10. $y1=$_POST['y1'];
  11. $x1=$_POST['x1'];
  12. if ($x) {
  13. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  14. }
  15.  
  16. ?>
  17. <?
  18. $y2=$_POST['y2'];
  19. $x2=$_POST['x2'];
  20. if ($x) {
  21. echo 'dodajemy '.$x.' + '.$y.' = '.($x+$y).'<br />';
  22. }
  23. ?>
  24. <?
  25. $y3=$_POST['y3'];
  26. $x3=$_POST['x3'];
  27. if ($x) {
  28. echo 'odejmujemy '.$x.' - '.$y.' = '.($x-$y).' <br />';
  29. }
  30. ?>
  31.  
  32. <form action="kalkulator.php" method="post">
  33. Podaj X: <input type="text" name="x" value="" /><br />
  34. Podaj Y: <input type="text" name="y" value="" /><br />
  35. <input type="submit" value="Policz!" />
  36. <br>
  37. </form>

Kod napisany przeze mnie smile.gif
Niktoś
Ładu ,składu się nie trzyma, poza tym nie wykluczyłeś możliwości dzielenia liczby 0.
Matthewcode
Cytat(Niktoś @ 24.03.2012, 15:39:17 ) *
Ładu ,składu się nie trzyma, poza tym nie wykluczyłeś możliwości dzielenia liczby 0.


Z dzieleniem przez 0 już poprawiłem.
Co do składu i ładu to może i prawda. Jestem na poziomie raczkowania smile.gif
Niktoś
Po co Tobie dodatkowe odwołania do tablicy Post i zmienne jak ich wogóle nie używasz.
$y1=$_POST['y1'];

$x1=$_POST['x1'];

Zrób sobie selecta -tam ustaw możliwe operacje.Następnie zrób sobie switcha.Będzie to lepiej wyglądało.
Matthewcode
Cytat(Niktoś @ 24.03.2012, 15:56:18 ) *
Po co Tobie dodatkowe odwołania do tablicy Post i zmienne jak ich wogóle nie używasz.
$y1=$_POST['y1'];

$x1=$_POST['x1'];

Zrób sobie selecta -tam ustaw możliwe operacje.Następnie zrób sobie switcha.Będzie to lepiej wyglądało.

Poszperam na internecie i po patrze co i jak bo nic z tego nie zrozumiałem biggrin.gif
#edit
Jak wykluczyć dzielenie przez 0 bo jednak nie poprawiłem haha.gif

#edit2

Trochę kod skróciłem, mam nadzieję, że teraz wygląda bardziej estetycznie:
  1. <body style="background-color: #000000; color: #ffffff;">
  2. <?
  3. $y=$_POST['y'];
  4. $x=$_POST['x'];
  5. if ($x) {
  6. echo 'mnożymy '.$x.' * '.$y.' = '.($x*$y).'<br />';
  7. }
  8. if ($x) {
  9. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  10. }
  11. if ($x) {
  12. echo 'dodajemy '.$x.' + '.$y.' = '.($x+$y).'<br />';
  13. }
  14. if ($x) {
  15. echo 'odejmujemy '.$x.' - '.$y.' = '.($x-$y).'<br />';
  16. }
  17. ?>
  18. <form action="kalkulator1.php" method="post">
  19. Podaj X: <input type="text" name="x" value="" /> <br />
  20. Poday Y: <input type="text" name="y" value="" /> <br />
  21. <input type="submit" name="Ok" value="Policz!">
  22. <br>
  23. </form>

Zostaje jeszcze kwestia zablokowania dzielenia przez zero.
Niktoś
Cytat
Jak wykluczyć dzielenie przez 0 bo jednak nie poprawiłem

  1. if( ($x) &&($y!=0)){
  2. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  3. }
  4. else {echo "Nie można dzielić przez 0";}


PS.We dwóch to piszecie ,czy to Twoje drugie konto?
Matthewcode
Cytat(Niktoś @ 24.03.2012, 16:04:23 ) *
  1. if( ($x) &&($y!=0)){
  2. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  3. }
  4. else {echo "Nie można dzielić przez 0";}


PS.We dwóch to piszecie ,czy to Twoje drugie konto?


  1. }
  2. if( ($x) &&($y!=0)){
  3. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  4.  
  5. else {echo "Nie można dzielić przez 0"};
  6. }


Cytat
Parse error: syntax error, unexpected T_ELSE in C:\xampp\htdocs\matthew-code\kalkulator1.php on line 11

Sami to piszemy.
Ten co założył temat to go nawet nie znam, a ja, aby nie spamować tematami to piszę w tym tongue.gif
Niktoś
Bo robisz kopiuj /wklej i nic nie myślisz- ja błąd wyżej poprawiłem.
Matthewcode
  1. <body style="background-color: #000000; color: #ffffff;">
  2. <?
  3. $y=$_POST['y'];
  4. $x=$_POST['x'];
  5. if ($x) {
  6. echo 'mnożymy '.$x.' * '.$y.' = '.($x*$y).'<br />';
  7. }
  8. if( ($x) &&($y!=0)){
  9. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  10. }
  11. else {echo "Nie można dzielić przez 0";}
  12.  
  13. if ($x) {
  14. echo 'dodajemy '.$x.' + '.$y.' = '.($x+$y).'<br />';
  15. }
  16. if ($x) {
  17. echo 'odejmujemy '.$x.' - '.$y.' = '.($x-$y).'<br />';
  18. }
  19. ?>
  20. <form action="kalkulator1.php" method="post">
  21. Podaj X: <input type="text" name="x" value="" /> <br />
  22. Poday Y: <input type="text" name="y" value="" /> <br />
  23. <input type="submit" name="Ok" value="Policz!">
  24. </form>

Tak to działa - pisze, że nie można dzielić przez zero.
Nie pokazuje dodawania.
Jak zrobię tak:

  1. if( ($x) &&($y!=0)){
  2. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  3. }
  4. else {echo "Nie można dzielić przez 0";}
  5. }

To wyskakuje błąd.
Niktoś
W linii piątej wykasuj } ,bo sobie za dużo dałeś, ten przykład musi działać,tylko Ty za bardzo nie wiesz co w ogóle robisz.Zachęcam do jakichś tutoriali-pełno ich na google ,aby poznać instrukcje warunkowe,pętle itp.
Poza tym kod jest poprawny tylko wynik dodawania pokazuje w jednej linice z komunikatem dzieleni:

  1. <body style="background-color: #000000; color: #ffffff;">
  2. <?
  3. $y=$_POST['y'];
  4. $x=$_POST['x'];
  5. if ($x) {
  6. echo 'mnożymy '.$x.' * '.$y.' = '.($x*$y).'<br />';
  7. }
  8. if( ($x) &&($y!=0)){
  9. echo 'dzielimy '.$x.' / '.$y.' = '.($x/$y).'<br />';
  10. }
  11. else {echo "Nie można dzielić przez 0".'<br />';}
  12.  
  13. if ($x) {
  14. echo 'dodajemy '.$x.' + '.$y.' = '.($x+$y).'<br />';
  15. }
  16. if ($x) {
  17. echo 'odejmujemy '.$x.' - '.$y.' = '.($x-$y).'<br />';
  18. }
  19. ?>
  20. <form action="kalkulator1.php" method="post">
  21. Podaj X: <input type="text" name="x" value="" /> <br />
  22. Poday Y: <input type="text" name="y" value="" /> <br />
  23. <input type="submit" name="Ok" value="Policz!">
  24. </form>

Teraz będzie Tobie wyświetlać w osobnej lini.
Matthewcode
To teraz co zrobić, aby było tak:
Cytat
mnożymy 15 * 0 = 0
Nie można dzielić przez 0
dodajemy 15 + 0 = 15
odejmujemy 15 - 0 = 15

Bo jest tak:
Cytat
mnożymy 15 * 0 = 0
Nie można dzielić przez 0dodajemy 15 + 0 = 15
odejmujemy 15 - 0 = 15

Jak wstawiam <br /> w różnych formach to za każdym razem wyskakuje błąd.
tomasz.cierpial
Witam ponownie. Dziekuje wszystkim za pomoc. Okazalo sie ze bledem byl brak srednika. Teraz wszystko dziala, tylko nie wiem dlaczego jak dziele 14,5 przez 2 to daje mi to 7 a nie 7,25. Liczby sa konwertowane do float. Robie to w taki sposob:

  1. $Value1 = (float)$_POST['Liczba1'];
  2. $Value2=(float)$_POST['Liczba2'];
  3. $Value3=(float)$Value1/$Value2;


Zapewne to jakis drobnyblad ale nie wiem gdzie on moze byc:)
mortus
W większości języków programowania liczby zmiennoprzecinkowe zapisujemy z kropką, a nie z przecinkiem. Rzutowanie łańcucha znaków 14,5 na typ float da 14. Natomiast rzutowanie łańcucha znaków 14.5 na float da 14.5.
daniofantasy
mozesz tez tak:

  1. $liczba = (int)str_replace(',','.',$liczba);


i pozmienia Ci przecinki na kropki
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.