IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Column cannot be null


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    routier
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : routier
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut Column cannot be null
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    PARAM_INT ca signifie "entier", utilise PDO:ARAM_STR
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    routier
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : routier
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    Bonjour,
    je me suis arraché les cheveux quand j'ai vu ta réponse vu le temps que j'ai passé dessus , malheureusement ça n' a pas résolu mon problème
    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    D'ou vient $stock_reel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    routier
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : routier
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    stock_reel est un champ de ma table stock_antigel:
    Nom : snapshot10.png
Affichages : 252
Taille : 23,5 Ko
    qui se remplit suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stock_reel = $mesure * $donnees['facteur_conversion_mesureareel'];
    si un autre champ facteur_conversion_mesureareel n'est pas égal à 0
    si ce facteur est égal à 0 , il va chercher dans la table table_stockage la valeur de volume pour une certaine hauteur:
    Nom : snapshot9.png
Affichages : 243
Taille : 21,5 Ko

    Enfin c'est ce que j'espérais faire

  6. #6
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut,

    s'agit-il d'une màj de masse ?
    Parce que je n'ai pas trop compris l'intérêt de ces 2 foreach.
    Dans le else, $stock_reel (qui semble être une colonne calculée) peut être NULL si la requête échoue et il n'y a pas de fetch.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/06/2012, 12h18
  2. [Mapping] MySQLIntegrityConstraintViolationException: Column cannot be null
    Par Floflo_85 dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/08/2011, 11h04
  3. Update list 'Column cannot be null'
    Par kogangel dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/11/2009, 17h53
  4. [EJB][JBOSS] ejb column cannot be null
    Par alfredeu dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 14/04/2005, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo