Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Problem z kalkulatorem pola trójkąta
Forum PHP.pl > Forum > Przedszkole
XTreleMoreleX
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)) ?

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

linia 13 u Ciebie calculator2.php
XTreleMoreleX
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
markonix
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.
Wazniak96
Spójrz linijkę nr. 10, calsulato2.php. Dałeś operator przypisania zamiast porównania. smile.gif
XTreleMoreleX
  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ę ?
markonix
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.
XTreleMoreleX
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ść.

?
markonix
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?
XTreleMoreleX
Nie sam sobie wymyśliłem taki programik na początek, dzięki za fajny pomysł 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.