Formation GrafiKart (Apprendre le PHP)

Par Abdellah63, il y a 6 ans


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

Kiv, il y a 6 ans

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

Abdellah63, il y a 6 ans

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

gwadas, il y a 6 ans

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

Abdellah63, il y a 6 ans

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

gwadas, il y a 6 ans

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