Formation GrafiKart (Apprendre le PHP)

Ce sujet est résolu
Default
,

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éponse

34988
,

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 ;)

72583
,

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

Default
,

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

Default
,

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

34988
,

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