Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Problem z kalkulatorem pola trójkąta
XTreleMoreleX
post 14.03.2013, 18:33:56
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.11.2012

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


Witam mam problem niedawno zacząłem moją przygodę z programowaniem i już zaczynaja się schody.

Przedstawie moje 2 pliki :


calculator1.php
  1. <h2>Dowolny trójkąt</h2>
  2. <form method="post" action="calculator2.php">
  3. Dane: <br><br>
  4.  
  5. Wysokość:<input type="number" name="wysokosc"><br>
  6. Podstawa (bok a): <input type="number" name="bok1"><br>
  7. Bok b: <input type="number" name="bok2"><br>
  8. Bok c: <input type="number" name="bok3"><br>
  9. Promień wpisany <input type="number" name="wpisany"><br>
  10. Promień opisany <input type="number" name="opisany"><br><br>
  11.  
  12. Trójkąt równoboczny <input type="checkbox" name="rownoboczny" value="0">
  13.  
  14. <input type="submit" value="Oblicz pole">
  15. </form>


calculator2.php
  1. <?php
  2. $h = $_POST['wysokosc'];
  3. $bok1 = $_POST['bok1'];
  4. $bok2 = $_POST['bok2'];
  5. $bok3 = $_POST['bok3'];
  6. $wpisany = $_POST['wpisany'];
  7. $opisany = $_POST['opisany'];
  8. $rownoboczny = $_POST['rownoboczny'];
  9.  
  10. if ($rownoboczny = 1) {
  11. $pole1 = $bok1*$bok1*sqrt(3)/4;
  12. echo "Pole trójkąta wynosi: " . round($pole1, 3);
  13. } else
  14. if(isset($bok1) && isset($bok2) && ($bok3) || isset($h) && isset($bok1)) {
  15. echo "Test";
  16. }
  17.  
  18.  
  19.  
  20.  
  21.  


Problem polega na tym, że gdy nie zaznaczę boxa "trójkąt równoboczny php wywala niezdafiniowaną wartość (właśnie tego boxa mimo tego że jego wartość domyślna to 0). Co z tym zrobić ?

W tej linijce jest chyba prblem ze składnią: if(isset($bok1) && isset($bok2) && ($bok3) || isset($h) && isset($bok1)) ?

Go to the top of the page
+Quote Post
Szymciosek
post 14.03.2013, 18:38:40
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


http://php.net/manual/en/control-structures.elseif.php

linia 13 u Ciebie calculator2.php
Go to the top of the page
+Quote Post
XTreleMoreleX
post 14.03.2013, 18:51:17
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.11.2012

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


Myślę, że nie chodzi o to cały czas mam problem z :

Undefined index: rownoboczny in C:\Program Files\xampp\htdocs\project\calculator2.php on line 15
Go to the top of the page
+Quote Post
markonix
post 14.03.2013, 19:04:35
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Bo jeżeli checkbox nie jest zaznaczony to nie wysyła wartości (a nie np. ustawia ją jako zero, false czy null).
Korzystaj z isset, a na przyszłość treść błędu/notice wpisuj w Google.

edit:
A najlepiej zamiast isset zrobić warunek !empty - sprawdzisz czy istnieje ale od razu czy też wynosi 1.

Ten post edytował markonix 14.03.2013, 19:05:29


--------------------
Go to the top of the page
+Quote Post
Wazniak96
post 14.03.2013, 19:23:30
Post #5





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Spójrz linijkę nr. 10, calsulato2.php. Dałeś operator przypisania zamiast porównania. smile.gif
Go to the top of the page
+Quote Post
XTreleMoreleX
post 14.03.2013, 19:30:22
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.11.2012

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


  1. if (isset($rownoboczny)) {
  2. $pole1 = $bok1*$bok1*sqrt(3)/4;
  3. echo "Pole trójkąta wynosi: " . round($pole1, 3);
  4. } else {
  5. if (isset($bok1) && isset($bok2) && ($bok3) || isset($h) && isset($bok1)) {
  6. echo "OK";
  7. }
  8.  
  9. }


Zrobiłem to w taki sposób lecz cały czas problem jest identyczny ;/
Teoretycznie z definicji isseta to wsztsko powinno już działać, może jakieś inne propozycję ?
Go to the top of the page
+Quote Post
markonix
post 14.03.2013, 19:38:49
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Ale ten błąd Ci wyświetla w linii z:
  1. $rownoboczny = $_POST['rownoboczny'];


  1. if (isset($rownoboczny)) {

Ten warunek będzie zawsze spełniony bo mówi "jeśli $rownoboczny jest utworzony". No a jest.. patrz linie wyżej.


--------------------
Go to the top of the page
+Quote Post
XTreleMoreleX
post 14.03.2013, 20:10:12
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.11.2012

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


A ma ktoś propozycje jak rozwiązać ten problem chodzi mi o to że jeżeli trójkąt nie jest równoboczny liczę pole z wzorów na trójkąt mając jego 3 boki lub podstawe i wysokość.

?
Go to the top of the page
+Quote Post
markonix
post 14.03.2013, 20:42:39
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Na milion sposobów.

Np:
Pola input na 3 boki (A - podstawę, B i C) oraz wysokość.

Jeśli A == B == C wzór na równoboczny else wzór 1/2 * A * H.

Btw. czy to jest Twoje zadanie domowe?

Ten post edytował markonix 14.03.2013, 20:43:15


--------------------
Go to the top of the page
+Quote Post
XTreleMoreleX
post 14.03.2013, 20:47:05
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 4.11.2012

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


Nie sam sobie wymyśliłem taki programik na początek, dzięki za fajny pomysł smile.gif
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 Wersja Lo-Fi Aktualny czas: 15.05.2025 - 07:50