• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Undefined variable podczas odświeżania strony

Object Storage Arubacloud
+1 głos
203 wizyt
pytanie zadane 17 września 2017 w PHP przez Tomo231 Początkujący (320 p.)

Mam pytanie kiedy odświeżam strone wyskakują mi nie zdefiniowane zmienne nie wiem dlaczego. Kod oblicza poprawnie delte jeśli są wprowadzone już dane. Ale gdy odświeże strone albo za pierwszym razem włącze to wyskakują mi nie zdefiniowane zmienne. Jeśli ktoś wie w czym problem.. Prosze o odpowiedź !

<div class="container">
   <h1>OBLICZANIE DELTY:</h1> 
   
	<form method="post" action="index.php" id="form">  
  Liczba a: <input type="number" name="liczba_a" value="" required>
  <br><br>
   Liczba b: <input type="number" name="liczba_b" value="" required>
  <br><br>
  Liczba c <input type="number" name="liczba_c" value="" required>
  <br><br>
  <input type="submit" name="form_posted" value="Submit" id="button">  
</form>

<?php

// check variables set
if(isset($_POST['form_posted'])) {
	$a = $_POST['liczba_a'];
	$b = $_POST['liczba_b'];
	$c = $_POST['liczba_c'];
}
// count delta
$delta = ($b * $b) - 4*$a*$c;
 
echo 'Delta wynosi: '.'<span>'.$delta.'</span>'.'<br />';
 
 
if($a == 0){
	 echo "Nie ma rownania kwadratowego.";
}
 
else
{
	if($delta < 0){
		echo "<p>Jesli liczba <span>a</span> jest < 0 to <br /> Nie ma miejsc zerowych.</p>";
	}
		
	elseif($delta == 0){
			 $jedno_miejsce_zerowe = -$b/2*$a;
			 echo 'Miejsce zerowe wynosi: '.$jedno_miejsce_zerowe;
	}
		
	else{
		$pierw_delta = sqrt($delta);
		$zerowe_1 = round((-$b - $pierw_delta)/(2*$a),3);
		$zerowe_2 = round((-$b + $pierw_delta)/(2*$a),3);
		
		echo 'Miejsce zerowe x1 wynosi: '."<span>".$zerowe_1."</span>".'<br />';
		echo 'Miejsce zerowe x2 wynosi: '."<span>".$zerowe_2."</span>";
		}
	 
 }

 
?>

  </div>

 

1 odpowiedź

+2 głosów
odpowiedź 17 września 2017 przez HaKIM Szeryf (87,590 p.)
// check variables set
if(isset($_POST['form_posted'])) {
    $a = $_POST['liczba_a'];
    $b = $_POST['liczba_b'];
    $c = $_POST['liczba_c'];
}
// count delta
$delta = ($b * $b) - 4*$a*$c;

Dlatego, że korzystasz z $a, $b i $c poza if'em który ma settować te zmienne.

Nie zatrzymałeś skryptu gdy $_POST['form_posted'] nie jest ustawiony, więc wykonuje się on dalej.

Przenieś kod do if'a i powinno być OK.

Ps. Popracuj nad nazwami, zwiększy to czytelność kodu. :)

Pps. W PHP lepiej stosować do porównań znak === zamiast ==, czyli: if(5 === 5) {...} (Jest dokładniejszy).

komentarz 17 września 2017 przez Tomo231 Początkujący (320 p.)
Dziękuje bardzo !! Bardzo mi pomogłeś/aś :) również dzięki za rady, zaczynam dopiero przygodę z PHP.
komentarz 17 września 2017 przez HaKIM Szeryf (87,590 p.)

Powodzenia. wink

Oh, jakbyś kiedyś cusik usłyszał o OOP, tutaj masz dobry tutorial, po polsku:

https://webmastah.pl/jak-programowac-obiektowo-cz-1-wstep/

Dodaj do zakładek, czy cuś.

Również cholernie przydatna będzie ta strona:

http://www.phptherightway.com/

Podobne pytania

0 głosów
2 odpowiedzi 239 wizyt
0 głosów
1 odpowiedź 776 wizyt
pytanie zadane 17 kwietnia 2019 w PHP przez Whereismycode Obywatel (1,710 p.)
–1 głos
2 odpowiedzi 1,217 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...