Formularz + skrypt php w 1 pliku - problem z wypisywaniem oraz błędy

0

Napisałem prosty kalkulator, który ma za zadanie liczyć równanie kwadratowe. Do tego celu zrobiłem 2 strony:
pierwsza - index.php gdzie jest formularz,
druga - kalkulator.php gdzie znajduje się cały skrypt. Program działa jak powinien, jednak mam pewien problem. Otóż chciałbym, aby wyniki wyświetlały się w tabelce pod spodem formularza. Niestety nie wiem jak sobie z tym poradzić z tego względu, jeśli wrzuce cały kod PHP to wyskakują błędy:

bledy.png

Niezadeklarowane zmienne, ale jakim cudem skoro są zadeklarowane w kodzie? O to mój kod index.php:

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
	<title>Równanie kwadratowe</title>
	<style>
		h1{
			text-align: center;
		}
		table{
			font-family: Arial;
		}
		tr{
			text-align: center;
		}
	</style>
<head>
</head>
<body>
	<h1>Kalkulator liczący równanie kwadratowe</h1>

	<!-- Tabelka 1 - wprowadzanie danych -->
<form method="post">
	<table align="center" border="1" width="200" height="300"> 
		<tr>
			<td width="100">Podaj A:</td>
			<td width="100"><input type="text" name="a" size="5" maxlength="8" /></td>
		</tr>
		<tr>
			<td width="100">Podaj B:</td>
			<td width="100"><input type="text" name="b" size="5" maxlength="8" /></td>
		</tr>
		<tr>
			<td width="100">Podaj C:</td>
			<td width="100"><input type="text" name="c" size="5" maxlength="8" /></td>
		</tr>
		<tr>
			<td width="100" colspan="2"><input type="submit" value="Policz"/><input type="reset" value="Wyczyść"/></td>
		</tr>
	</table><!--/koniec Tabelka 1-->
</form>
	
	<br /><br />

	<!-- Tabelka 2 - wypisanie wyniku -->
	<table align="center" border="1" width="200" height="500"> 
		<tr>
			<td width="100">Delta:</td>
			<td width="100"><?php $delta ?></td>
		</tr>
		<tr>
			<td width="100">Liczba rozwiązań:</td>
			<td width="100"></td>
		</tr>
		<tr>
			<td width="100">X0:</td>
			<td width="100"></td>
		</tr>
		<tr>
			<td width="100">X1:</td>
			<td width="100"></td>
		</tr>
		<tr>
			<td width="100">X2:</td>
			<td width="100"></td>
		</tr>
	</table><!--/koniec Tabelka 2-->
	
<?php
	
	/* Deklaracja zmiennych: a, b, c */
	$a = $_POST['a'];
	$b = $_POST['b'];
	$c = $_POST['c'];
	
	/* Deklaracja zmiennych: delta, x0, x1, x2 */
	$delta = pow($_POST['b'], 2) - 4 * $_POST['a'] * $_POST['c'];
	$x0 = -($_POST['b']) / (2 * $_POST['a']);
	$x1 = -($_POST['b']) - sqrt($delta) / (2 * $_POST['a']);
	$x2 = -($_POST['b']) + sqrt($delta) / (2 * $_POST['a']);
	
	/* Sprawdzamy czy pola: a, b, c nie są puste i czy są to liczby */
	if(!empty($_POST['a']) AND is_numeric($_POST['a']) AND !empty($_POST['b']) AND is_numeric($_POST['b']) AND !empty($_POST['c']) AND is_numeric($_POST['c']))
	{
		echo 'Delta wynosi: ' . $delta .'<br />';
	}
	else
	{
		echo 'błąd';
	}
	
	if($delta > 0) // jeśli delta większa od 0 to wykonaj: x1, x2
	{
		echo 'Liczba rozwiązań 2!<br />';
		echo 'x1 wynosi: ' .round($x1, 2) .'<br />';
		echo 'x2 wynosi: ' .round($x2, 2) .'<br />';
	}
	elseif($delta == 0) // jeśli delta równa 0 to wykonaj: x0
	{
		echo 'Liczba rozwiązań 1!<br />';
		echo 'x0 wynosi: ' .round($x0, 2) .'<br />';
	}
	elseif($delta < 0) // jeśli delta mniejsza od 0 to brak rozwiązań
	{
		echo 'Brak rozwiązań';
	}
	
?>
	
</body>
</html>
0

Wchodzisz na swoją stronę żądając pliku index.php metodą GET. Oznacza to, że tablica $_POST jest pusta. W momencie gdy zostaje wyświetlony formularz do, którego dopiero będziesz wprowadzał dane, już wtedy wykonujesz ten kod php - sprawdzasz zmienne z tablicy $_POST - a tych zmiennych tam po prostu nie ma.

Swój kod PHP powinieneś zacząć od sprawdzenia czy jest to zapytanie POST (wysłano formularz, oblicz i wyświetl wyniki) czy też GET (tylko pobrano index.php, niczego nie licz).

Przykładowy kod do sprawdzenia rodzaju żądania (http://stackoverflow.com/questions/1372147/check-whether-a-request-is-get-or-post):

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
....
}
0

Ok, dzięki już mniej więcej wiem jak to działa, teraz wystarczy, że spróbuje to dopasować i może będzie działać. Z resztą, przedtem przerobiłem całkowicie kod i napisałem to trochę inaczej, ale z wykorzystaniem dodatkowego pliku kalkulator.php. Teraz spróbuje twoją metodę, aby to wszystko połączyć w 1 pliku. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1