Esercizio PHP: Calcolatrice utilizzando l'array superglobale $_GET


Spiegazione del Codice: Calcolatrice Web

Questo codice crea una semplice calcolatrice web composta da due file che lavorano insieme: una pagina HTML per l'interfaccia utente e uno script PHP per elaborare i calcoli.

File index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form method="GET" action="calcoli.php">
        <label for="n1">Numero 1</label>
        <input type="number" name="n1">

        <label for="n2">Numero 2</label>
        <input type="number" name="n2">

        <label for="operatore">Operatore</label>
        <input type="text" name="operatore">

        <input type="submit" value="Calcola">

    </form>
</body>
</html>

Cosa fa questo file:

  • Struttura HTML base: Definisce una pagina web standard con DOCTYPE, head e body
  • Form di input: Crea un modulo con tre campi:
    • Due campi numerici per inserire i numeri da calcolare
    • Un campo di testo per inserire l'operatore matematico
    • Un pulsante "Calcola" per inviare i dati

Caratteristiche importanti:

  • method="GET": I dati vengono inviati tramite URL (visibili nella barra degli indirizzi)
  • action="calcoli.php": Quando si clicca "Calcola", i dati vengono inviati al file calcoli.php
  • type="number": Garantisce che nei primi due campi si possano inserire solo numeri

File calcoli.php

<?php
    $n1 = (int) $_GET["n1"];
    $n2 = (int) $_GET["n2"];
    $operatore = isset($_GET["operatore"]) ? strtoupper($_GET["operatore"]) : null;
    $totale = 0;

    switch($operatore){
        case "S": 
           $totale = $n1 + $n2;
           break;
        case "SO":
           $totale = $n1 - $n2;
           break;
        case "M":
           $totale = $n1 * $n2;
           break;   
        default:
            echo "Errore! operazione non consentita";    
    }

    echo "Operazione richiesta: ".$operatore."<br>";
    echo "Numero 1: ".$n1."<br>";
    echo "Numero 2: ".$n2."<br>";
    echo "Totale: ".$totale;
?>

Cosa fa questo script:

1. Raccolta dei dati

  • Recupera i valori inviati dal form HTML tramite $_GET
  • Converte i numeri in interi con (int)
  • Controlla se l'operatore esiste e lo converte in maiuscolo

2. Elaborazione con switch

Il costrutto switch verifica quale operazione eseguire:

  • "S": Somma (n1 + n2)
  • "SO": Sottrazione (n1 - n2)
  • "M": Moltiplicazione (n1 × n2)
  • default: Mostra errore per operatori non riconosciuti

3. Output dei risultati

Stampa a video:

  • L'operazione richiesta
  • I due numeri inseriti
  • Il risultato del calcolo

Come funziona il sistema completo:

  1. L'utente apre index.html nel browser
  2. Compila il form inserendo due numeri e un operatore (S, SO, o M)
  3. Clicca "Calcola"
  4. Il browser invia i dati a calcoli.php
  5. Lo script PHP elabora i dati e mostra il risultato

Esempio di utilizzo:

  • Numero 1: 10
  • Numero 2: 5
  • Operatore: S

Risultato visualizzato:

Operazione richiesta: S
Numero 1: 10
Numero 2: 5
Totale: 15

Questo è un esempio pratico di come HTML e PHP possano collaborare per creare applicazioni web interattive!


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form method="GET" action="calcoli.php">
        <label for="n1">Numero 1</label>
        <input type="number" name="n1">

        <label for="n2">Numero 2</label>
        <input type="number" name="n2">

        <label for="operatore">Operatore</label>
        <input type="text" name="operatore">

        <input type="submit" value="Calcola">

    </form>
</body>
</html>

calcoli.php

<?php

    $n1 = (int) $_GET["n1"];
    $n2 = (int) $_GET["n2"];
    $operatore = isset($_GET["operatore"]) ? strtoupper($_GET["operatore"]) : null;
    $totale = 0;

    switch($operatore){
        case "S": 
           $totale = $n1 + $n2;
           break;
        case "SO":
           $totale = $n1 - $n2;
           break;
        case "M":
           $totale = $n1 * $n2;
           break;   
        default:
            echo "Errore! operazione non consentita";    
    }

    echo "Operazione richiesta: ".$operatore."<br>";
    echo "Numero 1: ".$n1."<br>";
    echo "Numero 2: ".$n2."<br>";
    echo "Totale: ".$totale;
?>