En HTML, pour les checkbox, si la checkbox n’est pas checkée, elle n’envoit rien !

Comment faire pour envoyer quand même zéro lorsque la checkbox n’est pas cochée?

En effet

<?php

echo "vous êtes en train de soumettre un formulaire";
echo '<pre>';
print_r($_POST);
echo '</pre>';


echo $_POST['test'];

?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
        <label for="">Checkez SVP</label><br>
        <input type="hidden" name="toto" value="0">
        <input type="checkbox" name="toto" value="1"><br>
        <input type="submit" value="Soumettre">
    </form>
</body>

</html>

La solution relativement simple consiste à créer un input de type hidden donc invisible qui contient la valeur à envoyer dans tous les cas. Elle sera écrasée par la valeur de la checkbox quand cette dernière est cochée.