Erreur SQL a l'insersion

glodybiss Messages postés 440 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici l'erreur qui apparait lorsque j'essaie d'inserer les infos dans une table de ma base des données.

Erreur SQL !INSERT INTO 'site' ('id' ,'idsiteinterne' ,'idsiteprovider' ,'idsurvey' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'idetatsite' ,'idpays' ,'matriculeSite' ,'telephone' ,'observation' ,'datecreation') VALUES(NULL, "CYB001", "CYB001", "CYB001", "2", "2", "Kinshasa, Mont-ngafula", "CYB001", "192.168..52", "192.168.0.5", "glodybiss@gmail.com", "CYB001", "CYB001", "Activé", "CYB001", "0998226612", "message", "2011-11-21 09:41:08")
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)


Voici mon code php

 <?php
 
   $serveur = getenv("SERVER_NAME"); 
   $chez_moi=($serveur=="localhost"); 

   if($chez_moi)include_once 'cfg.php';
else include_once 'cfg2.php';   
   
    if (isset($_POST['Enregistrer']) && $_POST['Enregistrer'] == 'Enregistrer' ) { 
	
     if ((isset($_POST['dateinstallation']) && !empty($_POST['dateinstallation'])) &&  (isset($_POST['dateactivation']) && !empty($_POST['dateactivation'])) 
	 &&  (isset($_POST['adressesite']) && !empty($_POST['adressesite'])) && (isset($_POST['idclient']) && !empty($_POST['idclient'])) 
	 && (isset($_POST['adresseIP']) && !empty($_POST['adresseIP'])) && (isset($_POST['adresseIPmanage']) && !empty($_POST['adresseIPmanage'])) 
&& (isset($_POST['emailsite']) && !empty($_POST['emailsite'])) && (isset($_POST['idprovider']) && !empty($_POST['idprovider'])) 
&& (isset($_POST['matriculeSite']) && !empty($_POST['matriculeSite']))&& (isset($_POST['idetatsite']) && !empty($_POST['idetatsite']))  	
&& (isset($_POST['observation']) && !empty($_POST['observation']))  ) 
	 
	 { 
	 
        if ($_POST['idsiteinterne'] == $_POST['idsiteprovider']) { 
           $erreur = 'Les ID provider et interne sont indentique'; 
        } 
		
		if ($_POST['idsurvey'] != $_POST['idsiteinterne']) { 
           $erreur = 'Les ID survey et interne sont differents'; 
        } 
	else  { 
        $base = mysql_connect (DB_HOST, USER_NAME, PASSE_WORD); 
       mysql_select_db (DATA_BASE, $base); 
	   
        $sql = 'SELECT count(*) as nb FROM site WHERE idclient ="'.mysql_escape_string($_POST['idclient']).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
        $data = mysql_fetch_array($req); 
           
          if ($data['nb'] == 0) { 
		  
             $sql = 'INSERT INTO 'site' ('id' ,'idsiteinterne' ,'idsiteprovider' ,'idsurvey' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'idetatsite' ,'idpays' ,'matriculeSite' ,'telephone' ,'observation' ,'datecreation') VALUES(NULL, "'.mysql_escape_string($_POST['idsiteinterne']).'", "'.mysql_escape_string($_POST['idsiteprovider']).'", "'.mysql_escape_string($_POST['idsurvey']).'",
			 "'.mysql_escape_string($_POST['dateinstallation']).'", "'.mysql_escape_string($_POST['dateactivation']).'", 
			 "'.mysql_escape_string($_POST['adressesite']).'",  "'.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['matriculeSite']).'", "'.mysql_escape_string($_POST['idetatsite']).'",
			 "'.mysql_escape_string($_POST['matriculeSite']).'", "'.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()); 
   
                session_start(); 
               $_SESSION['nom'] = $_POST['nom']; 
                header('Location: '.PAGE_PRIVATE.''); 
                exit(); 
             } 
             else { 
                $erreur = 'Cet utilisateur existe deja dans le systeme'; 
             } 
          } 
       } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }  
    ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>Nouveau site| Support AppManga Cybernet </title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style/styles.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div id="news_client_site">
<form action="" method="post" name="form1" id="form1">
  <form action="includes/chek_achat.php" method='post'  onSubmit="return(VerifForm(this))">
          <table width="350" border="0" class="left">
 <?php
   if (isset($erreur)) {
   echo '<div id="info" class="error">'.$erreur.'</div><!--error-->';
     } ?> 
     <h3>Nouveau site</h3> 
        
            <tr> 
              <td class="td">ID Site interne </td>
              <td> <input type="text" name="idsiteinterne" class="input_ajout_agent"  value="<?php if (isset($_POST['idsiteinterne']))  echo htmlentities(trim($_POST['idsiteinterne'])); ?>" ></td>
            </tr>
            
            <tr>   
              <td>ID Site Provider</td>
              <td >
                  <input type="text" name="idsiteprovider"  class="input_ajout_agent" value="<?php if (isset($_POST['idsiteprovider'])) echo htmlentities(trim($_POST['idsiteprovider'])); ?>" ></td>   
            </tr>
            
         <tr>     
             <td>ID Site survey</td>
              <td >
                  <input type="text" name="idsurvey"  class="input_ajout_agent" value="<?php if (isset($_POST['idsurvey'])) echo htmlentities(trim($_POST['idsurvey'])); ?>" ></td>   
            </tr>
            
            <td>Date activation</td>
              <td >
                <select class="select" name="dateactivation"  value="<?php if (isset($_POST['dateactivation'])) echo htmlentities(trim($_POST['dateactivation'])); ?>" ><option>date</option>
                 <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
                <option>11</option>
                <option>12</option>
                <option>13</option>
                <option>14</option>
                <option>15</option>
                <option>16</option>
                <option>17</option>
                <option>18</option>
                <option>19</option>
                <option>20</option>
                <option>21</option>
                <option>22</option>
                <option>23</option>
                <option>24</option>
                <option>25</option>
                <option>26</option>
                <option>27</option>
                <option>28</option>
                <option>29</option>
                <option>30</option>
                <option>31</option>
                </select> 
                
                <select>
                <option>Mois</option>
                <option>Janvier</option>
                <option>Février</option>
                <option>Mars</option>
                <option>Avril</option>
                <option>Mai</option>
                <option>Juin</option>
                <option>Juillet</option>
                <option>Août</option>
                <option>Septembre</option>
                <option>Octobre </option>
                <option>Novembre</option>
                <option>Decembre</option>
                </select> 
                
                <select>
                
                <option>Année</option>
                <option>2009</option>
                <option>2010</option>
                <option>2011</option>
                <option>2012</option>
                </select> </td>
            </tr>
            <tr>
             <td>Date installation</td>
              <td >
                <select class="select" name="dateinstallation"  value="<?php if (isset($_POST['dateinstallation'])) echo htmlentities(trim($_POST['dateinstallation'])); ?>" ><option>date</option>
                 <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
                <option>11</option>
                <option>12</option>
                <option>13</option>
                <option>14</option>
                <option>15</option>
                <option>16</option>
                <option>17</option>
                <option>18</option>
                <option>19</option>
                <option>20</option>
                <option>21</option>
                <option>22</option>
                <option>23</option>
                <option>24</option>
                <option>25</option>
                <option>26</option>
                <option>27</option>
                <option>28</option>
                <option>29</option>
                <option>30</option>
                <option>31</option>
                </select> 
                
                <select>
                <option>Mois</option>
                <option>Janvier</option>
                <option>Février</option>
                <option>Mars</option>
                <option>Avril</option>
                <option>Mai</option>
                <option>Juin</option>
                <option>Juillet</option>
                <option>Août</option>
                <option>Septembre</option>
                <option>Octobre </option>
                <option>Novembre</option>
                <option>Decembre</option>
                </select> 
                
                <select>
                
                <option>Année</option>
                <option>2009</option>
                <option>2010</option>
                <option>2011</option>
                <option>2012</option>
                </select> </td>
            </tr>
               
               <tr>   
              <td>Adresse</td>
              <td >
                  <input type="text" name="adressesite"  class="input_ajout_agent" value="<?php if (isset($_POST['adressesite'])) echo htmlentities(trim($_POST['adressesite'])); ?>" ></td>   
            </tr>
               
                <tr>   
              <td>ID Client</td>
              <td >
                  <input type="text" name="idclient"  class="input_ajout_agent" value="<?php if (isset($_POST['idclient'])) echo htmlentities(trim($_POST['idclient'])); ?>" ></td>   
            </tr>
            
              <tr>   
              <td>IP adresse</td>
              <td >
                  <input type="text" name="adresseIP"  class="input_ajout_agent" value="<?php if (isset($_POST['adresseIP'])) echo htmlentities(trim($_POST['adresseIP'])); ?>" ></td>   
            </tr>
            
              <tr>   
              <td>IP adresse manager</td>
              <td >
                  <input type="text" name="adresseIPmanage"  class="input_ajout_agent" value="<?php if (isset($_POST['adresseIPmanage'])) echo htmlentities(trim($_POST['adresseIPmanage'])); ?>" ></td>   
            </tr>
			
			 
            <tr> 
              <td>E-mail</td>
              <td> <input type="text" name="emailsite" class="input_ajout_agent"  value="<?php if (isset($_POST['emailsite'])) echo htmlentities(trim($_POST['emailsite'])); ?>"></td>
            </tr>
			
			<tr> 
              <td>ID Provider</td>
              <td> <input type="text" name="idprovider" class="input_ajout_agent"  value="<?php if (isset($_POST['idprovider'])) echo htmlentities(trim($_POST['idprovider'])); ?>"></td>
            </tr>
       
            
            </table>
            
            
            
            <table  width="180" border="0" class="left">
			
				 <tr>
		 <td>Etat Site</td>
              <td >
                 <select class="select2" name="idetatsite"  value="<?php if (isset($_POST['idetatsite'])) echo htmlentities(trim($_POST['idetatsite'])); ?>"> 
                 
                 <option>Désactivé</option>
                 <option>Activé</option>
                 <option>Commissioné</option>
                 <option>Décommissioné</option>
                 </select>   
            </tr>
            
			
			 <tr>
             <td>Pays</td>
              <td >
                 <select class="select2" name="idpays"  value="<?php if (isset($_POST['idpays'])) echo htmlentities(trim($_POST['idpays'])); ?>" > 
                 
                 <option>République Démocratique du Congo</option>
                 <option>Congo Brazzaville</option>
                 <option>Angola</option>
                 <option>Rwanda</option>
                 </select>   
            </tr>
		
			
               <tr> 
              <td>Matricule</td>
                     <td> <input type="text" class="input_ajout_agent"  name="matriculeSite" value="<?php if (isset($_POST['matriculeSite'])) echo htmlentities(trim($_POST['matriculeSite'])); ?>"></td>
            </tr>
         
		  <tr> 
              <td>Téléphone</td>
                     <td> <input type="text" class="input_ajout_agent"  name="telephone" value="<?php if (isset($_POST['telephone'])) echo htmlentities(trim($_POST['telephone'])); ?>"></td>
            </tr>
		 
            <tr> 
                  <td>Observation</td>
             
              <td> <textarea name="observation"  rows="9" cols="25" value="<?php if (isset($_POST['observation'])) echo htmlentities(trim($_POST['observation'])); ?>" ></textarea></td>
            </tr>
            
            <tr> 
            <td></td>
              <td><input type="submit" name="Enregistrer" class="submi" value="Enregistrer" /></td>
            </tr>
			</table>
         
</form></div>
</body>
</html>



1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Le problème, c'est que tu essaies de mettre une ligne avec idprovider="CYB001"
Or ce provider n'existe pas dans ta table "provider" (ou alors, son id n'est pas celui-ci).

Je te suggère de mettre une liste déroulante plutôt qu'un champ texte dans le cas où il y a une clé étrangère... Ça évitera ce genre d'erreur.

Xavier
0
glodybiss Messages postés 440 Date d'inscription   Statut Membre Dernière intervention   9
 
Merci Xavier ! mais le problème est que j'avais modéliser la base des données avec Mysql Workbench j'ai fais des relations entre les table et j'ai exporter sur myphpadmin donc je ne me retrouve plus avec mes relations que j'ai faite.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Si tu veux supprimer la clé étrangère :
ALTER TABLE site DROP FOREIGN KEY fk_site_provider
0