Bonsoir,

J’ai besoin de votre aide concernant la formation (Apprendre le PHP) plus précisément le chapitre 58, Gestion des formulaires lien vers la vidéo.
J’aimerai ajouter une checkbox a mon formulaire qui a pour valeur 1 si elle est cochée sinon 0 et par la suite récupérer la valeur depuis la bdd pour ajouter à mon input "checked" si 1

Ce que je fais

Dans la classe src/Model/Post.php

public function getCheckbox(): ?int
    {
        if (empty($_POST[checkbox])) :
            return $this-> checkbox = 0;
        else :
            return $this-> checkbox = 1;
        endif;
    }

Dans la classe src/HTML/Form.php

public function checkbox(string $key, string $label): string
    {
        return <<<HTML
        <div class="form-check">
            <input type="checkbox" id="field{$key}" class="form-check-input" name="{$key}">
            <label class="form-check-label" for="publish">{$label}</label>
        </div>
HTML;
    }

la function getCheckbox() fonctionne bien j'arrive a envoyer 1 si je coche et 0 si décoché, même si ça fonctionne je me demande si c'est bien dans le Model Post.php que je dois faire ce contrôle ?
Par contre je ne sais toujours pas comment récupérer la valeur depuis ma bdd afin d’ajouter ou non "checked" a l’input

5 réponses


gwadas
Réponse acceptée

Bonsoir,
Je me permet de te proposer la solution que l'on m'a apporter lorsque j'essayer moi aussi de récupérer l'état des checkbox dans la base de donnée :

public function checkbox(string $key, string $label, string $value , string $options = null): string
    {
        $etat = $this->getValue($key);
        $options = ($value == $etat) ? 'checked' : '' ;

        return <<<HTML
        <div class="form-check form-check-inline">
        <input type="checkbox" id="field{$key}" class="form-check-input" name="{$key}" value="{$value}" {$options}>
        <label class="form-check-label" for="field{$key}">{$label} </label>

        {$this->getErrorFeedback($key)}
        </div>
HTML;
    }

Cordialement ;)

Pour ta méthode getCheckbox(), essai plutôt de faire un contrôle en utilisant un "isset" que d'un "empty"

Kiv Effectivement c’est mieux de vérifier si elle existe et non pas si elle est vide, merci pour la remarque.

Bonsoir gwadas, et bien je suis très content et fière en même temps lol parceque j'ai réussi à le faire moi-même avant de voir ton message et ça correspond exactement à ta logique, en tout cas merci à toi

Bonjour Abdellah63, je suis content que tu es trouver la réponse avant ;)