Considérez le formulaire STRT> UPT STRAND> suivant:
General error: 1366 Incorrect integer value: 'on' for column 'data_retention' at row 1
5 Réponses :
Définissez les valeurs des cases à cocher
<input type="checkbox" name="data_retention" value='1'> <input type="checkbox" name="perform_ocr" value='1'>
Le problème est que si je décoche ensuite les cases à cocher et soumettre le formulaire, il ne mettra pas à jour dans ma base de données.
Vous pouvez modifier les valeurs de la case à cocher dans une ligne en ligne si. Si la case à cocher est sélectionnée ou non $ data_retvention code> et $ ECRES_ROCR code> sera true code> ou false code> et transmettez-le à la base de données : public function update(Request $request, Stream $stream)
{
//Update the database.
$data_retention = $request->has('data_retention') ? true : false;
$perform_ocr = $request->has('perform_ocr') ? true : false;
$stream->update(request()->validate([
'name' => 'required|max:255',
'notes' => 'required|max:255',
'data_retention' => $data_retention,
'perform_ocr' => $perform_ocr
]));
return redirect()->route('streams.show', ['stream' => $stream->token]);
}
Cela dans une solution correcte, il garantit une valeur booléenne mais suppose que la valeur d'une valeur impliquera toujours. Parfois, vous voudrez peut-être passer la valeur 0 pour impliquer FALSE, mais cette validation le définirait à True.
J'ai fini avec ci-dessous:
//Update the database.
$stream['data_retention'] = request()->get('data_retention') ?? 0;
$stream['perform_ocr'] = request()->get('perform_ocr') ?? 0;
$stream->update(request()->validate([
'name' => 'required|max:255',
'notes' => 'required|max:255',
]));
return redirect()->route('streams.show', ['stream' => $stream->token]);
Sooo sont les autres réponses toujours correctes. PARTULLY MINE?
Ceci n'est pas aussi sûr de la mise en œuvre que la réponse de Vipul Prajapati, qui oblige la valeur à ne être vraie / fausse. Cette solution permet à n'importe quelle chaîne pouvant permettre aux injections SQL si elle n'utilise pas les déclarations préparées plus tard.
Il vaut mieux si vous faites quelque chose de séparé de la case à cocher elle-même.
Je recommande d'utiliser JavaScript. P>
Ce que je pense, c'est que vous devez renommer la case à cocher pour autre chose. Nommez ensuite un champ d'entrée caché au nom d'origine de la case à cocher. Ensuite, si la case à cocher est cochée, la valeur du champ de saisie doit être "désactivée", mais si elle est sur sa valeur doit être "ON". P>
Ce code devrait faire le tour: P>
JavaScript ne doit jamais être invoqué pour la validation des données.
dans votre HTML dans votre contrôleur p>