Bonjour,

Lorsque je saisi dans un formulaire une mesure avec un chiffre autre que 0.5, 1, 1.5 etc etc , j'ai cette erreur :
Exception PDO: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'stock_reel' cannot be null

mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    //Rien de reçu => on bosse pas
    if (!empty($_POST)) {
        //Je mets tout dans un T/C
        try {
            //TOUJOURS ACTIVER LES EXCEPTIONS
            $bdd = new PDO('mysql:host=localhost;dbname=crealis;charset=utf8', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
            $toutes_donnees = $bdd->query('SELECT * FROM stock_antigel')->fetchAll();
            $requeteUpdate = "UPDATE stock_antigel SET mesure_observee = :mesure_observee,stock_reel = :stock_reel WHERE id = :id";
            $stmt = $bdd->prepare($requeteUpdate);
            $stmt->bindParam(':mesure_observee', $mesure, PDO::PARAM_STR);
            $stmt->bindParam(':stock_reel', $stock_reel, PDO::PARAM_INT);
            $stmt->bindParam(':id', $id, PDO::PARAM_INT);
            foreach($toutes_donnees as $donnees){
                $id = $donnees['id'];
                $mesure = $_POST["mesure_observee$id"];
                $hauteur =$_POST["mesure_observee"];
               if($donnees['facteur_conversion_mesureareel'] != 0){
                $stock_reel = $mesure * $donnees['facteur_conversion_mesureareel'];}
                else{
                $toutes_tables = $bdd->prepare('SELECT volume FROM table_stockage WHERE hauteur = :hauteur');
                $toutes_tables->bindParam(':hauteur',$donnees['mesure_observee'], PDO::PARAM_STR);
                $toutes_tables->execute();
               foreach($toutes_tables as $table){
                $stock_reel = $table['volume'];
               }}
 
                if (!$stmt->execute()) {
                    throw new Exception('ERREUR UPDATE (ID '.$_POST['id'].')');
                }
            } //fin foreach
            header('Location: index.php');
         }catch (PDOException $pdoE) {
            echo 'Exception PDO: '.$pdoE->getMessage();
        } catch (Exception $e) {
            echo 'Exception Autre: '.$e->getMessage();
        }
    }
Par contre pour les valeurs entière ou en 1/2 genre 0.5, 1, 1.5 ...
$stock_reel me retourne bien le bon résultat