Erreur SQL a l'insersion table relationnelles

glodybiss Messages postés 509 Statut Membre -  
NDOUKI Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tous !

Voici l'erreur sql que je reçoit lors de l'insertion des données dans ma table.

Cannot add or update a child row: a foreign key constraint fails ('cybernet'.'site', CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION)


2 réponses

  1. Melooo Messages postés 1476 Statut Membre 84
     
    Salut,
    Une erreur dans tes clés étrangères de tes tables, mais sans requête et plus d'explication, j'peux pas t'en dire plus...
    0
    1. glodybiss Messages postés 509 Statut Membre 9
       
      Voici ma requête, j'insère dans la table site

      $sql = 'INSERT INTO 'site'  ('id' ,'idsiteinterne' ,'idsiteprovider','site_name' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'installerpar' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'service' ,'idetatsite' ,'idpays' ,'province' ,'telephone' ,'observation' ,'datecreation') VALUES (NULL, "'.mysql_escape_string($_POST['idsiteinterne']).'", 
      "'.mysql_escape_string($_POST['idsiteprovider']).'","'.mysql_escape_string($_POST['site_name']).'",
      			 "'.mysql_escape_string($_POST['dateinstallation']('d-m-Y')).'" , "'.mysql_escape_string($_POST['dateactivation']('d-m-Y')).'", 
      			 "'.mysql_escape_string($_POST['adressesite']).'",  "'.mysql_escape_string($_POST['installerpar']).'",  "'.mysql_escape_string($_POST['idclient']).'",  
      			 "'.mysql_escape_string($_POST['adresseIP']).'", "'.mysql_escape_string($_POST['adresseIPmanage']).'", 
      			 "'.mysql_escape_string($_POST['emailsite']).'", "'.mysql_escape_string($_POST['idprovider']).'","'.mysql_escape_string($_POST['service']).'",
      			 "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['idetatsite']).'",
      			 "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['telephone']).'",
      			 "'.mysql_escape_string($_POST['observation']).'", "'.date('Y-m-d h:i:s').'")'; 
                      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
      0
    2. Melooo Messages postés 1476 Statut Membre 84
       
      Les clés étrangères sont idsiteinterne et idsiteprovider ?
      0
    3. glodybiss Messages postés 509 Statut Membre 9
       
      Je viens de mettre de préciser les clés primaires. Merci !
      0
  2. NDOUKI Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   12
     
    slt,
    si ton id est auto-incrément, tu n'as pas besoin de l'insérer.
    donc commence par enlever ton id et le null

    et ensuite précise nous tes clés primaires et étrangères
    0
    1. glodybiss Messages postés 509 Statut Membre 9
       
      Voici mes clés étrangères:

      KEY 'fk_site_provider' ('idprovider'),
        KEY 'fk_site_clients' ('idclient'),
        KEY 'fk_site_etat_site' ('idetatsite'),
        KEY 'fk_site_pays' ('idpays')


      -- Contraintes pour la table 'site'
      --
      ALTER TABLE 'site'
        ADD CONSTRAINT 'fk_site_clients' FOREIGN KEY ('idclient') REFERENCES 'client' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
        ADD CONSTRAINT 'fk_site_etat_site' FOREIGN KEY ('idetatsite') REFERENCES 'etat_site' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
        ADD CONSTRAINT 'fk_site_pays' FOREIGN KEY ('idpays') REFERENCES 'pays' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
        ADD CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION;
      0
    2. NDOUKI Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   12
       
      ce que je vais te dire, c'est de bien vérifier l'ordre d'insertion des enregistrement et ensuite de faire les recherches sur la fonction last_insert_id() qui te permet de recupérer plus facilement tes clés primaires auto-increment
      0