-2
votes

PHP / LARAVEL - Valeurs de la boîte à cocher persistantes à la base de données

Considérez le formulaire STRT> UPT STRAND> suivant:

General error: 1366 Incorrect integer value: 'on' for column 'data_retention' at row 1


0 commentaires

5 Réponses :


0
votes

Définissez les valeurs des cases à cocher

<input type="checkbox" name="data_retention" value='1'>
<input type="checkbox" name="perform_ocr" value='1'>   


1 commentaires

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.



0
votes

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


1 commentaires

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.



-1
votes

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


2 commentaires

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.



0
votes

Il vaut mieux si vous faites quelque chose de séparé de la case à cocher elle-même.

Je recommande d'utiliser JavaScript.

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".

Ce code devrait faire le tour: xxx


1 commentaires

JavaScript ne doit jamais être invoqué pour la validation des données.



1
votes

dans votre HTML xxx

dans votre contrôleur xxx


0 commentaires