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

PHP & Base de données Discussion :

problème d'insertion d'une donnée nulle [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut problème d'insertion d'une donnée nulle
    Lorsque $no_equip = NULL la ligne suivante me renvoit une erreur :
    "Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche"
    Je précise que d'après le mcd on est pas obligé de renseigner le champ no_equip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "INSERT INTO t_di (no_dem, etat_dem, date_dem, heure_dem, desc_pb, mat_app, no_serv, no_prior, no_equip, date_acc, heure_acc) VALUES ('', '$etat_dem', '$date_dem', '$heure_dem', '$desc_dem', '$mat_util', '$no_serv', '$no_prior', '$no_equip', NULL, NULL)";
    no_equip est la clé primaire d'une table t_equip mais dans ce cas pourquoi si je remplace '$no_equip' par NULL ça fonctionne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "INSERT INTO t_di (no_dem, etat_dem, date_dem, heure_dem, desc_pb, mat_app, no_serv, no_prior, no_equip, date_acc, heure_acc) VALUES ('', '$etat_dem', '$date_dem', '$heure_dem', '$desc_dem', '$mat_util', '$no_serv', '$no_prior', NULL, NULL, NULL)";

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    il faudrait la description de la table t_di.
    (le create table complet)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    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
    CREATE TABLE `T_DI` (
      `no_dem` int AUTO_INCREMENT default NULL PRIMARY KEY,
      `etat_dem` varchar(16) NOT NULL,
      `date_dem` date NOT NULL,
      `heure_dem` time NOT NULL,
      `desc_pb` varchar(64) NOT NULL,
      `mat_app` int NOT NULL,
      `no_serv` int NOT NULL,
      `no_prior` tinyint NOT NULL,
      `no_equip` int,
      `date_acc` date,
      `heure_acc` time,
      FOREIGN KEY(mat_app) REFERENCES T_UTIL(mat_util),
      FOREIGN KEY(no_serv) REFERENCES T_SERV(no_serv),
      FOREIGN KEY(no_prior) REFERENCES T_PRIOR(no_prior),
      FOREIGN KEY(no_equip) REFERENCES T_EQUIP(no_equip)
      )TYPE = InnoDB;
    et la table t_equip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     CREATE TABLE `T_EQUIP` (
      `no_equip` int NOT NULL PRIMARY KEY,
      `nom_equip` varchar(32) NOT NULL
       )TYPE = InnoDB;

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    la table _equip n'accepte pas le champs no_equip de la table t_equip n'accepte pas la valeur null. Donc la cle etrangere ne serait pas respectee.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    j'ai essayé en enlevant le not null (dans la table t_equip) mais comme c'est une clé primaire mysql force le not null
    j'ai bien compris ça mais dans ce cas pourquoi ça fonctionne si je remplace l$no_equip par NULL dans la requette ?

  6. #6
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    dans la premiere requete tu as mis $no_equip entre quote.
    c donc la chaine de caracteres NULL et pas la valeur NULL.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    ok donc je suis obligé de tester $no_equip, si la valeur n'est pas nulle je place ma variable dans la requette
    si elle est nulle je fais une autre requette avec NULL à la place
    ça résoud bien mon pb à moins qu'il y ait une autre solution
    Merci à toi

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/12/2014, 10h14
  2. Problème d'insertion d'une données dans une table
    Par sab_info dans le forum Développement
    Réponses: 2
    Dernier message: 06/02/2013, 15h32
  3. Problème d'insertion dans une base de données
    Par Boom Boom dans le forum JDBC
    Réponses: 4
    Dernier message: 14/03/2012, 21h54
  4. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  5. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13

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