J'aimerais créer un formulaire contenant des checkbox pour ensuite insérer les valeurs retenues dans ma base de donnée, mais je n'y arrive pas, seul les menus déroulant fonctionnent chez moi. Voici mon code :
En fait je voudrais réaliser une sorte de quadrillage avec des case à cocher (comme une sorte de bataille navale), avec une valeur par case (ici 5*6 donc 30), je ne sais pas si je m'y prend bien avec des checkbox.
Je pense alors que mon code est à revoir. J'ai corrigé l'erreur prepare() et maintenant j'ai cette erreur Fatal error: Call to a member function beginTransaction() on null in. Pour attribuer chaque valeur je devrai faire donc ceci : '0' => $_POST['chk0'], '1' => $_POST['chk1'], etc ?
$insertmbr = $bdd->prepare("INSERT INTO produit(schema, schema2) VALUES(:a1, :a2)"); $insertmbr->execute(array($a1, $a2));
}
?>
J'ai ici deux checkbox avec un bouton submit pour insérer les valeurs 0 ou 1 dans la bdd, mais j'ai une erreur
PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in ligne 37 (faute orthographe je présume ? mais je ne la trouve pas)
Ta requête a 2 marqueurs nommés mais tu les bindes sans nom/comme s'ils étaient positionnels.
Et ni $_POST['a1'] ni $_POST['a2'] n'existe, c'est $_POST['a'] tout court (tu auras un tableau - ou rien si rien n'est coché) => fais un var_dump de $_POST.
(sans compter qu'ils ne vaudraient pas 'on' mais '1' et '2')
> ça me donne array(2) { ["l2"]=> string(1) "1" ["submit"]=> string(4) "Save" }
l2 sort d'où ? Ca devrait être a2, non ?
> if($_POST["submit"]=="Save")
incorrect, tu devrais avoir une notice undefined index submit quand tu arrives sur ton formulaire. Il faut utiliser if (isset($_POST['submit'])) voire si t'y tiens : if (isset($_POST['submit']) && $_POST['submit'] == 'Save')
> if($a1=="on") $a1=1; else $a1=0;
D'où tu sors 'on' ? Si tu donnes '1' en value, ça ne peut pas valoir 'on' ...
Et puis tu peux utiliser (dois) isset si tu veux connaître l'état de ta checkbox (avec éventuellement une cast booléen => entier). Là tu devrais te taper une notice undefined index a1 quand elle n'est pas cochée.
$a1 = (int) isset($_POST['a1']);
Tu devrais reprendre un cours sur les formulaires.
ah super merci en effet cela résout le problème, en revanche il n'y a rien dans la base de donnée après exécution du submit, j'ai l'impression que cela provient de ma commande INSERT INTO, ne peut-on pas voir d'où cela provient ? merci
EDIT : mais c'est déjà fait sinon tu n'aurais pas eu la précédente HY093 ? Dans ce cas, s'il n'y a vraiment pas eu d'insertion, c'est que le test if($_POST["submit"]=="Save") est faux ? (name et/ou value changé)
Pour information, la méthode execute renvoi un boolean, soit true ou false, tu pourrais donc par exemple vérifier le retour de la méthode pour savoir si l'insertion s'est bien effectuée ou non.
Exemple :
if(!$insertmbr->execute(array('a1' => $a1, 'a2' => $a2))) {
// L'insertion ne s'est pas effectuée, afficher un message d'erreur ou autre
}
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
En fait je viens de tester une commande INSERT INTO produit (schema) VALUES ('1') pour tester et il me met une erreur #1064, peut-être que cela vient de là ?
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Mauvais titre
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Pour modifier votre titre, éditez le premier message de votre sujet.
(titre originel : Checkbox PHP Mysql problème)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Bonjour Lamecarlate je m'excuse concernant la mise en forme de ce sujet, je n'avais pas connaissance de la balise code. En revanche où dois-je aller pour editer mon titre ?
Sinon l'erreur complète est #1064 - erreur de synthaxe près de 'schema) VALUES ('1') à la ligne 1
schema est un mot-clé réservé, il serait préférable de renommer ta colonne sinon tu dois écrire `schema` à chaque fois (et le jour où tu oublies les backticks, rebelote, erreur)
@Lamecarlate : s'il est comme nous, le lien pour éditer ses posts sur ce sujet ne sont pas affichés (ils sont en display: none, il faut s'amuser à inspecter l'élément pour le désactiver)
C'est bon effectivement schema posait problème, la commande fonctionne maintenant. En revanche lorsque que j'appuie sur le bouton submit il n'y a rien qui s'affiche dans ma base de donnée.
Bonjour, je vous pris de m'excuser j'ai eu du mal à poster un message. Finalement j'ai bien réussi à rentrer chaque valeurs dans ma table sql (donc si je coche les checkbox 1, 5 et 18 dans ma table 'quadrillage' va s'afficher 1,5,18) en revoyant mon code. Mais j'aimerais savoir maintenant si il est possible de compter ces nombres : par exemple, si je coche 1, 5 et 18 est-il possible d'insérer dans une table 'Nombre_de_case_cochée' le nombre 3 ici par exemple ?
Comme on te l'a dit, le truc c'est que ce n'est pas "malin" de mettre plusieurs valeurs dans une même colonne : ça oblige jusqu'à aller faire des traitements en PHP quand on pouvait les faire directement en SQL (et plus tu as de lignes, plus un traitement en PHP va être coûteux). C'est bien pour ça qu'il t'avait été recommandé d'introduire une (à deux suivant la relation) table(s).
Il te faut faire un count(explode(',', ...))/count($_POST['a']) ?
$insertmbr = $bdd->prepare("UPDATE produit SET quadrillage='$case' WHERE Date BETWEEN (NOW() - INTERVAL 5 MINUTE) AND NOW()");
$insertmbr->execute(array($case));
echo "<div style="text-align:center;"><a href="%5C">Suivant</a></div>";
}
}
?>
Dois-je rouvrir une parenthèse php pour le count ou puis-je l'ajouter ici ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Pas d'aide concernant le code par MP, le forum est là pour ça :)
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.