Les Allergies
Alimentaires
Posez votre question Signaler

Insertion d'une valeur dans mysql

Harfana - Dernière réponse le 31 mars 2008 à 08:59
Bonjour,
Je ne mets pas le code car il est long, mais je vais expliquer mon problème :
Voila, je travaille sur une base de donnée avec plusieurs tables liées entre elle.
voila ma requête :
$sql = "INSERT INTO rotheorique (CodePoste, LibellePoste, GradePrincipal, GradeSecondaire,
IdSpecialitePrincipale, IdSpecialiteSecondaire, IdBrevet, PosteOccupe, IdDivision,
IdSection, IdCellule)
VALUES ('$codeposte', '$libelleposte', '$gradeprincipal', '$gradesecondaire', '$specialiteprincipale',
'$specialitesecondaire', '$brevet', 'Non', '$division', '$section', '$cellule')";
J'ai testé ma requête en directe dans phpmyadmin avec des valeurs, elle fonctionne. Si je remplace $gradesecondaire, '$specialitesecondaire', '$brevet', '$cellule' par NULL, cela fonctionne également.
Mon problème est le suivant :
Comment puis-je faire pour renvoyer, depuis ma page web, la valeur NULL ou non NULL (car elle peut contenir des données) svp?
J'ai fais plusieurs test, mais rien n'y fait et malheureusement, mes recherches sur internet sont infructueuses pour le moment. Je recherche une solution générale, car je pourrais très bien faire plusieurs requêtes en testant au préalable les valeurs et en inscrivant NULL dans la requête lorsque la variable est vide, mais cela alourdirait le code.
Lire la suite 

Insertion d'une valeur dans mysql »

9 réponses
Réponse
+0
moins plus
Bonsoir,

on peut supposer que tu reçois la valeur depuis un formulaire non ?
alors tu récupères la valeur dans $cellule
le contenu NULL ou pas ira dans la table.
Ajouter un commentaire
Réponse
+0
moins plus
effectivement, je récupéré les données via un formulaire. La valeur est bien récupéré dans la variable $cellule (pour la cellule) $cellule = $_POST['fListcellulemodifiee'];

toutefois, quand j'execute la requete, y a une erreur :
ligne 125 :
$sql = "INSERT INTO rotheorique (IdPoste, CodePoste, LibellePoste, GradePrincipal, GradeSecondaire,
IdSpecialitePrincipale, IdSpecialiteSecondaire, IdBrevet, PosteOccupe, IdDivision, IdSection, IdCellule)
VALUES (NULL, '$codeposte', '$libelleposte', '$gradeprincipal', '$gradesecondaire', '$specialiteprincipale',
'$specialitesecondaire', '$brevet', 'Non', '$division', '$section', '$cellule')";
ligne 126 :
$result = mysqli_query($cxn,$sql)
or die ("erreur $requete<br />" . mysqli_error($cxn) . "<br />\n");
ligne 127 :
return TRUE;

il me retourne ca :
Warning: mysqli_query() [function.mysqli-query]: Couldn't fetch mysqli in C:\wamp\www\Ressource Humaine CNASRI\Pages\Script\ScriptValidationRO.php on line 125

Warning: mysqli_error() [function.mysqli-error]: Couldn't fetch mysqli in C:\wamp\www\Ressource Humaine CNASRI\Pages\Script\ScriptValidationRO.php on line 126
erreur
Harfana- 28 mars 2008 à 20:15
petite rectification, j'avais oublié de me connecter à la base de donnée, d'ou les erreurs précédentes.

voila l'erreur qu'il me donne maintenant (apres avoir retirer DEFAUT dans la requete)

erreur
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2'', '1', '', '', 'Non', '1', '1', '')' at line 4

(la ligne 4 de la requete est : VALUES (NULL, '$codeposte', '$libelleposte', '$gradeprincipal', '$gradesecondaire', '$specialiteprincipale',)
Harfana- 28 mars 2008 à 20:31
J'ai encore procédé à quelque modification et voila la reponse qu'il me donne maintenant :

erreur
Cannot add or update a child row: a foreign key constraint fails (`rhcnasri/rotheorique`, CONSTRAINT `rotheorique_ibfk_20` FOREIGN KEY (`IdSpecialiteSecondaire`) REFERENCES `specialite` (`IdSpecialite`))

Je dois préciser que pour les valeurs que je veux eventuellement mettre à NULL, elles sont liées à d'autre par des cles etrangère et dans ces meme tables, ces valeurs ne peuvent etre NULL.
Ajouter un commentaire
Réponse
+0
moins plus
$sql = "INSERT INTO rotheorique (IdPoste, CodePoste, LibellePoste, GradePrincipal, GradeSecondaire,
IdSpecialitePrincipale, IdSpecialiteSecondaire, IdBrevet, PosteOccupe, IdDivision, IdSection, IdCellule)
VALUES (NULL, '$codeposte', '$libelleposte', '$gradeprincipal', '$gradesecondaire', '$specialiteprincipale',
'$specialitesecondaire', '$brevet', 'Non', '$division', '$section', '$cellule')";


values('',' ".$codeposte."','".$libelleposte etc

les valeurs doivent être encadrées de '
regarde ci dessus
values( simple quote simple quote virugule double quoute point $variable point double quoute simple quote virgule simple quote etc...
Harfana- 28 mars 2008 à 22:28
J'ai testé mais il me donne la même réponse :

erreur
Cannot add or update a child row: a foreign key constraint fails (`rhcnasri/rotheorique`, CONSTRAINT `rotheorique_ibfk_20` FOREIGN KEY (`IdSpecialiteSecondaire`) REFERENCES `specialite` (`IdSpecialite`))

Je me demande si le pb ne provient pas du fait que les valeurs concernées sont liées à des tables dans lesquelles elles ne peuvent pas être nulle

d'autant plus que je viens de tester mon code en ne mettant aucunes valeur vide et cela fonctionne, l'entrée est bien enregistrée dans la bdd.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
le message te parle de clés étrangères, et ton message est tout à fait vrai. le lien vers d'autres tables via ces champs
-- en ce qui concerne les liens vers les autres tables.
Harfana- 30 mars 2008 à 13:16
Comment faire alors ??

Dois-je prévoir dans ma table de référence, une valeur vide ou y a t il des commandes à insérer dans la requête INSERT ?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

autorises les valeurs nulle, regrades si dans une table liées il n'y a aps un champs déclaré comme obligatoirement NOT NULL
Ajouter un commentaire
Ce document intitulé « Insertion d'une valeur dans mysql » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?