Incorrect integer value

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 22 mars 2023 à 23:35
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 23 mars 2023 à 14:30

Bonjour j'ai une table sql dans laquelle j'ai une case à cocher de type checkbox. (tinyint(1). La valeur est 1 ou 0. Mais lorsque la checkbox n'est pas coché voici l'erreur qui est retournée. Bien entendu l'INSERT ne se fait pas. Si la case est coché l'INSERT se fait sans problème. Pouvez-vous me dire ce que je peux modifié dans PhpMyAdmin.

Erreur ! SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'facture' at row 1

Voici la structure de la table concernée.

DROP TABLE IF EXISTS `cdc_adherer`;
CREATE TABLE IF NOT EXISTS `cdc_adherer` (
  `idpers` int NOT NULL COMMENT 'ID de la personne',
  `idpaie` int NOT NULL COMMENT 'ID du paiement',
  `idclas` int NOT NULL COMMENT 'ID de la classe',
  `idpup` int NOT NULL COMMENT 'ID du pupitre',
  `annee` int NOT NULL COMMENT 'Année de cotisation',
  `ddebut` date NOT NULL COMMENT 'Date de début d''adhésion de l''adhérent',
  `dfin` date NOT NULL COMMENT 'Date de démission de l''adhérent',
  `montant` decimal(6,2) NOT NULL COMMENT 'Montant annuel payé',
  `facture` tinyint(1) NOT NULL COMMENT 'Mets à 1 facture à dispo pour les membres',
  PRIMARY KEY (`idpers`,`idpaie`,`idclas`,`idpup`,`annee`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Table de relation : adhérents - adhérer';

Je vous remercie.

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
22 mars 2023 à 23:43

Bonjour,

Soit tu autorises le NULL sur champ facture 

Soit tu définis une valeur par défaut

Soit, via ton code php, tu lui dis que si la case n'est pas cochée, alors la valeur est 0


0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
23 mars 2023 à 11:46

Bonjour, merci du coup j'ai fait ça.

$facture 	= !empty($_POST['facture']) ? 1 : 0;

Tu peux me dire si ça peut aller ou il y a mieux. Sinon ça marche.

Merci

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
23 mars 2023 à 12:09

Bonjour,

Dans ton cas, le plus propre serait :

$facture = isset($_POST['facture']) ? $_POST['facture'] : 0;

// ou aussi possible
$facture = $_POST['facture'] ?? 0;
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
23 mars 2023 à 14:30

Merci, bonne continuation.

0