Lo script di calcolo ... non calcola ^^'

IscariotKiss

Nuovo Utente
27 Mag 2010
16
0
0
Ciao a tutti, girando per internet ho scoperto il vostro forum, spero possiate darmi una mano.
Da pochi giorni ho iniziato a "studiacchiare" il php, facendo delle prove sono però incappato in uno strano errore la cui soluzione mi sfugge.
Per esercitarmi ho creato i seguenti due file (riporto nome e codice):
1 -
Nome:
calcolo_modulo.html

HTML:
<html>
<head>
    <title>Modulo di Calcolo</title>
</head>
<body>
    <FORM method="post" action="calcolo.php">
        <P>Valore n. 1: <INPUT type="text" name="val1" size=10></P>
        <P>Valore n. 2: <INPUT type="text" name="val2" size=10></P>
        <P>Calcolo:<BR>
        <input type="radio" name="calc" value="addizione"> Addizione<br>
        <input type="radio" name="calc" value="sottrazione"> Sottrazione<br>
        <input type="radio" name="calc" value="moltiplicazione"> Moltiplicazione<br>
        <input type="radio" name="calc" value="divisione"> Divisione<br></P>
        <P><INPUT type="submit" name="invio" value="Calcola"></P>
    </FORM>
</body>
</html>

2 -
Nome:
calcolo.php

PHP:
<?
if (($val1 == "") || ($val2 == "") || ($calc == "")) 
{
	header("Location: http://localhost/prove/calcolo_modulo.html");
	exit;
}
if ($calc == "addizione") 
{
	$risultato = $val1 + $val2;
}
else if ($calc == "sottrazione") 
{
	$risultato = $val1 - $val2;
}
else if ($calc == "moltiplicazione") 
{
	$risultato = $val1 * $val2;
}
else if ($calc == "divisione") 
{
	$risultato = $val1 / $val2;
}
?>

<html>
<head>
	<title>Risultato del calcolo</title>
</head>

<body>
	<p>Il risultato del calcolo è <? echo "$risultato"; ?></p>
</body>
</html>

Il mini-script è molto semplice, crea due caselle di testo in cui inserire valori numerici e fa scegliere una tra le 4 possibili operazioni; se una delle caselle di testo è vuota o non viene scelta un'operazione aritmetica, calcolo.php ritorna il modulo (calcolo.modulo.html), se tutti i dati sono inseriti ritorna il risultato ($risultato).

Ora se non inserisco i dati il codice
PHP:
if (($val1 == "") || ($val2 == "") || ($calc == "")) 
{
	header("Location: http://localhost/prove/calcolo_modulo.html");
	exit;
}
funziona perfettamente, se però inserisco tutti i dati il primo if con l'header si attiva ugualmente e continua a refresharmi la pagina. Ovviamente ho provato ad eliminare il primo if con l'header per vedere se il resto del codice fosse funzionante ma in questo caso, inserendo tutti i dati, calcolo.php restituisce la seguente stringa:
Il risultato del calcolo è
senza risultato ($risultato).

Cosa sbaglio? Mi sapete consigliare qualcosa?
Nel ringrazirvi per ogni possibile informazione e nello scusarmi per la banalità della domanda dovuta alla mia totale ignoranza nel php, vi saluto tutti.

P.s.: Dimenticavo di postare informazioni sulle versioni dei programmi usati:
Windows XP Home Ed. SP3
PHP Version 5.2.12
Apache/2.2.3 (Win32)
 
Ultima modifica:
Per recuperare i parametri passati dalla prima pagina devi utilizzare $_POST:

PHP:
<?php
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
$calc = $_POST['calc'];
?>
 
Ti ringrazio, il mio dubbio infatti era che le variabili non fossero inizializzate ma onestamente non sapevo come fare e se andasse realmente fatto; il punto è che ho un manuale php 4.0 (dove ovviamente non parla di array $_POST[]) ma io sto usando il php 5.2.
Il codice ha subito molte modifiche? Un manuale php 4.0 va bene per le basi o posso gettarlo e comprarne uno nuovo? Nel tristo caso di lapidazione del mio borsellino quali manuali mi consigliate?
 
Ti ringrazio, il mio dubbio infatti era che le variabili non fossero inizializzate ma onestamente non sapevo come fare e se andasse realmente fatto; il punto è che ho un manuale php 4.0 (dove ovviamente non parla di array $_POST[]) ma io sto usando il php 5.2.
Il codice ha subito molte modifiche? Un manuale php 4.0 va bene per le basi o posso gettarlo e comprarne uno nuovo? Nel tristo caso di lapidazione del mio borsellino quali manuali mi consigliate?

molti dei costrutti presenti in PHP 4 li puoi utilizzare anche nel 5, se hai qualche base ti basta aggiornarti con gli articoli presenti nel nostro sito o nel nostro blog.
 

Discussioni simili