<?php

$op1Saisi = filter_input(INPUT_POST, 'op1', FILTER_UNSAFE_RAW);
$op2Saisi = filter_input(INPUT_POST, 'op2', FILTER_UNSAFE_RAW);
$operationSaisie = filter_input(INPUT_POST, 'operation', FILTER_UNSAFE_RAW);

$op1Saisi = is_string($op1Saisi) ? trim($op1Saisi) : '';
$op2Saisi = is_string($op2Saisi) ? trim($op2Saisi) : '';
$operationSaisie = is_string($operationSaisie) ? trim($operationSaisie) : '+';

$operationsAutorisees = ['+', '-', 'x', '/'];
$operation = in_array($operationSaisie, $operationsAutorisees, true) ? $operationSaisie : '+';

$resultat = null;
$messageErreur = '';
$aCalcule = false;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $op1 = filter_var($op1Saisi, FILTER_VALIDATE_FLOAT);
    $op2 = filter_var($op2Saisi, FILTER_VALIDATE_FLOAT);

    if ($op1 === false || $op2 === false) {
        $messageErreur = 'Veuillez saisir deux nombres valides.';
    } elseif (!in_array($operation, $operationsAutorisees, true)) {
        $messageErreur = 'Veuillez choisir une opÃ©ration valide.';
    } elseif ($operation === '/' && (float) $op2 == 0.0) {
        $messageErreur = 'La division par zÃ©ro est impossible.';
    } else {
        $aCalcule = true;

        switch ($operation) {
            case '+':
                $resultat = $op1 + $op2;
                break;

            case '-':
                $resultat = $op1 - $op2;
                break;

            case 'x':
                $resultat = $op1 * $op2;
                break;

            case '/':
                $resultat = $op1 / $op2;
                break;

            default:
                $messageErreur = 'Veuillez choisir une opÃ©ration valide.';
                $aCalcule = false;
        }
    }
}

$valeurOp1 = $aCalcule ? (string) $resultat : $op1Saisi;
$valeurOp2 = $op2Saisi;
