Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/07/2007, 16h43   #1
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
Par défaut [SQL] Insérer des données dans une table

Je reviens à la charge avec un problème similaire mais avec un message d'erreur différent.
voici le message d'erreur
Citation:
Cannot add or update a child row : a foreign key constraint fails ('gestionconferences/conference', CONSTRAINT 'conference_ibfk_1' FOREIGN KEY ('IdUniv') REFERENCES 'universite' (IdUniv'))
voici les codes
Code :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
<!--Inserer  une conférence-->
 
<html>
<body>
 
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr> 
    <td rowspan="2" bgcolor="#666666"> <img src="" name="image" width="100" height="50"> 
    </td>
    <td width="100%" bgcolor="#666666"><font color="#CCCCCC"><h1> Gestion de conférences </h1></font> 
    </td>
 
  </tr>
 
 
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr> 
 
    <td width="100%" bgcolor="red"font color="#CCCCCC">&nbsp </font> 
    </td>
 
  </tr>
</table>
 
 
<?php
require("connect1.php");
 
 
$selectIdUniv=mysql_query("select * from universite");
echo"<table  border=0 >";
echo"<form action='inserer_Conf.php'   method=POST>";
echo"<tr> <td >IdConf<td><input type='text' name='IdConf' ></tr>";
echo"<tr> <td width=15%>Intitule<td><textarea cols=80 rows=4 name='intitule'></textarea></tr><br>";
echo"<tr> <td >dateSoumission<td><input type='text' name='dateSoumission' ></tr>";
echo"<tr> <td >dateAcceptation<br><td><input type='text'  name='dateAcceptation'></tr>";
echo"<tr> <td >dateFin<td><input type='text' name='dateFin'><td></tr>";
echo"<tr> <td >droitInsc<td><input type='text' name='droitInsc'></tr>";
echo"<tr> <td >NbArtMax<td><input type='text'  name='nbArtMax'></tr>";
echo"<tr> <td >IdUniv<td><select name='IdUniv'>";
while($idUniv=mysql_fetch_object($selectIdUniv)){
				echo"<option value='IdUniv' name='idUniv'>$idUniv->IdUniv</option>";
}
			echo" </select></tr>";
 
echo"</table>";
echo"<input type='submit' value='Envoyer' name='envoyer'><input type='reset' value='Réinitialiser' name='reinitialiser'>";
echo"</form>";
 
?>
 
</body>
</html>
et
Code :
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
 
 
 
 
 
<?php
require("connect1.php");
 
$IdConf=$_POST["IdConf"];
$intitule=$_POST["intitule"];
$dateSoumission=$_POST["dateSoumission"];
$dateAcceptation=$_POST["dateAcceptation"];
$dateFin=$_POST["dateFin"];
$droitInc=$_POST["droitInsc"];
$nombreArtMax=$_POST["nombreArtMax"];
$envoyer=$_POST["envoyer"];
$iduniv=$_POST["idUniv"];
 
 
if($envoyer){
$selectIdUniv=mysql_query("select * from universite WHERE IdConf=$IdConf");
 
$insertConf=mysql_query("INSERT INTO  conference (IdConf,Intitule,DateSoumission,DateAcceptation,DateFin,DroitInsc,NbArtMax,IdUniv) VALUES('$IdConf','$intitule','$dateSoumission','$dateAcceptation','$dateFin','$droitInc','$nombreArtMax','$iduniv')")or die("problème de requete insertion dans conference:".mysql_error());
#mysql_query("INSERT INTO universite (idUniv) VALUES($iduniv)")or die("problème de requete table université:".mysql_error()); 
}
?>
<script language="javascript" type="text/javascript">
	<!--
	window.location.replace("espaceModifConf.php");
	-->
</script>
en effet IdUniv est clé étrangère dans la table "conference" et clé primaire dans "université".
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 00h55   #2
Membre émérite
 
Avatar de Shugo78
 
Inscription : mars 2007
Messages : 1 114
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 1 114
Points : 974
Points : 974
Envoyer un message via MSN à Shugo78
Pense à mettre
Code :
1
2
 
or die(mysql_error());
A chaque requête SQL, même les plus simples, parce que des fois, c'est l'origine des problèmes
Et puis, il faut des apostrophes :
Code :
1
2
#mysql_query("INSERT INTO universite (idUniv) VALUES('$iduniv')")or die("problème de requete table université:".mysql_error()); 
Et puis, si j'étais toi, j'utiliserais isset pour savoir si les variables éxistent, et donc si l'utilisateur a bien remplis les champs
__________________
Le savoir est un droit universel, libérez le code source
Mon site
Aidez nous à militer pour l'adoption d'un nouveau smiley
"C'est en s'attardant en bas que l'on monte plus haut "
"Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !"
attention je mords
Bye
Shugo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 09h44   #3
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
Merci pour ta reponse Shugo78.
C'est pa la requête que tu as cité en exemple qui est en cause, c'est plutôt celle-ci
Code :
1
2
 
$insertConf=mysql_query("INSERT INTO  conference (IdConf,Intitule,DateSoumission,DateAcceptation,DateFin,DroitInsc,NbArtMax,IdUniv) VALUES('$IdConf','$intitule','$dateSoumission','$dateAcceptation','$dateFin','$droitInc','$nombreArtMax','$iduniv')")or die("problème de requete insertion dans conference:".mysql_error());
merci pour tes précieux conseils.
J'ai quand -même vérifier que ma requête marche sous phpMyAdmin. Avec un echo j'ai bien les variables envoyées. En plus sur la page formulaire de remplissage il y a une requête qui va chercher les les valeurs de la colonne qui est en cause (IdUniv). Donc elles sont bien dans la colonne parente.
Bizzar!!!!
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 09h51   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Récaptitulons :
ta requête est syntaxiquement correcte, fonctionne sur phpmyadmin, a toutes les valeurs remplies.

Est-ce que le problème ne viendrait pas de ta contrainte (foreign key) ? Comment la définis-tu ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 10h09   #5
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
voilà comment j'ai défini ma contrainte FK
Code :
1
2
 
foreign key (IdUniv) references universite (IdUniv)
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 10h27   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Envoyé par wonga
voilà comment j'ai défini ma contrainte FK
Code sql :
FOREIGN KEY (IdUniv) REFERENCES universite (IdUniv)
ça a l'air correct...

A priori, l'erreur te dit que l'idnuniv que tu essayes d'insérer n'existe pas, c'est-à-dire qu'il n'ya aucun élément de la table universite dont l'iduniv correspond. Tu es sûr qu'il ya bien quelque chose qui correspond ?
Genre si tu fais :
Code :
1
2
3
4
$verif = "SELECT * FROM universite WHERE IdUniv=$iduniv" ;
$res_verif = mysql_query($verif) or die ($verif.' : '.mysql_error());
$data_verif = mysql_fetch_array($res_verif) or die ('pas de resultat');
print_r $data_verif;
avant l'insertion, qu'est-ce que tu obtiens ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 10h50   #7
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
effectivement il y a un problème avec la requête $evrif.
voici le message d'erreur
Citation:
you have an error in your SQL syntax, check the manual that correspond to your mysql server version for right syntax to use near " at line 1
PS. la fonction print_r n'a pas fonctionné chez moi.
je viens de rajouter des quotes simples à la variable $iduniv et j'ai la réponse suivante
Citation:
pas de resultat
je vais devoir revoir la récupération des variables
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 11h16   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bon le premier bug venait de moi
Le second vient du fait que tu n'as effectivement pas d'université correspondante...
Maintenant, il faut trouver pourquoi... Yapluka
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 11h27   #9
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
je pense c'est un problème de mon champ "IdUniv" dont les valeurs sont obtenues par un
Code :
1
2
3
4
5
6
 
echo"<tr> <td >IdUniv<td><select name='IdUniv'>";
while($idUniv=mysql_fetch_object($selectIdUniv)){
				echo"<option value='IdUniv' name='idUniv'>$idUniv->IdUniv</option>";
}
			echo" </select></tr>";
je pense qu'il y a un cafouillage mais où je ne sais pas!!
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 11h52   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Je ne garantis rien, mais à ta place j'éviterais d'appeler mon objet iduniv aussi :
Code :
$idUniv=mysql_fetch_object($selectIdUniv)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 11h52   #11
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
j'ai déjà commencé par corriger les petites erreurs et voici ce que devient le code au niveau du champ "select"
Code :
1
2
3
4
5
6
7
 
 
echo"<tr> <td >IdUniv<td><select name='iduniv'>";
while($idUniv=mysql_fetch_object($selectIdUniv)){
				echo"<option value='$idUniv->IdUniv' >$idUniv->IdUniv</option>";
}
			echo" </select></tr>";
ma variable de récup est $iduniv=$_POST['iduniv']
et j'ai en resultat
Code :
 la valeur de $iduniv=IdUniv
c'est à dire le nom du champ et non sa valeur. je ne pige pas encore
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 12h00   #12
Invité régulier
 
Inscription : avril 2006
Messages : 55
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 55
Points : 8
Points : 8
Envoyer un message via MSN à wonga
tu as raison.j'ai changé de nom à ma variable et ça roule. je n'aurais même pas imaginé. merci beaucoup Celira
wonga est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h25.


 
 
 
 
Partenaires

Hébergement Web