Probleme insert into pour site entreprise
Forum Programmation : Probleme insert into pour site entreprise
bonjour,voila je dois realiser un site pour une entreprise mais quand je veux ajouter une question il m'envoie "erreur d'écriture" sa fait plusieur heure que je suis sur cette erreur et je ne trouve pas la solution .
voila les table:
Create table Application (
Id_application Int NOT NULL AUTO_INCREMENT,
nom_application Varchar(150) NOT NULL,
Index AI_Id_application (Id_application),
Primary Key (Id_application)) ENGINE = INNODB DEFAULT CHARSET=latin1 ;
Create table Question (
num_Id_application Int NOT NULL,
Id_Question Int NOT NULL AUTO_INCREMENT,
Num_Question Int,
Question Char(255),
Reponse Char(255),
Picture Char(255),
num_Id_Source Int NOT NULL,
Primary Key (Id_Question)) ENGINE =INNODB DEFAULT CHARSET=latin1 ;
Create table Source (
Id_Source Int NOT NULL AUTO_INCREMENT,
Libelle_Source Char(50),
Primary Key (Id_Source)) ENGINE = INNODB DEFAULT CHARSET=latin1 ;
alter table Question add foreign key (num_Id_application) references Application(Id_application);
alter table Question add foreign key (num_Id_Source) references Source(Id_Source);
commit;
et voila mon code :
<?php
$serveur='localhost';
$utilisateur='root';
$mdp='';
$bdd='faq_dsic';
$num_ques= $_POST['num_question'];
$question= $_POST['question'];
$reponse = $_POST['reponse'];
$application=$_POST['application'];
$source= $_POST['source'];
$reponse1 = $_POST['reponse'];
$MonObjConnexion= new mysqli($serveur,$utilisateur,$mdp,$bdd);
if (mysqli_connect_errno())
{echo "probleme de connexion à la base de données";
exit;}
$MaReq= "insert into Question values(' ',' ' ,'.$num_ques.','.$question.','.$reponse.','.$reponse1.,' ' )";
$ObjResultReq=$MonObjConnexion->query($MaReq);
if (! $ObjResultReq)
{ die ("Erreur d'écriture" );}
$MonObjConnexion->close();
?>
merci de votre aide
Message édité par nair le 27-05-2009 à 17:36:43
salut,
tes 2 premiers champs sont des int et ne doivent pas etre null et tu mets ' ' dedans...
essayes plutot une requete de cette forme :
insert into Question (Num_Question, Question, Reponse, Picture) values('.$num_ques.','.$question.','.$reponse.','.$reponse1.' )
merci de m'aider c'est sympa j'ai effecter les changement que tu m'as dit cela n'a rien changé cela m'envoie toujour erreur d'écriture
Est-ce que tu peux montrer ton nouveau code ? parce qu'il y a une petite erreur que je n'avais pas vu au début :
$MaReq= "insert into Question values(' ',' ' ,'.$num_ques.','.$question.','.$reponse.','.$reponse1.,' ' )";
alors que ça marcherait mieux comme ça :
$MaReq= "insert into Question values(' ',' ' ,'".$num_ques."','".$question."','".$reponse."','".$reponse1."',' ' )";
et pour tester, fais un echo de ta requete avant de l'executer, et regarde si elle est bien formaté.
j'ai recommancé tout mon code et se probleme est apparu :
Cannot add or update a child row: a foreign key constraint fails (`faq_dsic`.`question`, CONSTRAINT `question_ibfk_1` FOREIGN KEY (`id_application`) REFERENCES `application` (`id`))
Voila a nouveau mes tables :
-- phpMyAdmin SQL Dump
-- version 3.1.3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 28 Mai 2009 à 11:05
-- Version du serveur: 5.1.32
-- Version de PHP: 5.2.9-1
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `faq_dsic`
--
-- --------------------------------------------------------
--
-- Structure de la table `application`
--
CREATE TABLE IF NOT EXISTS `application` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom_application` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `nom_application` (`nom_application`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `application`
--
INSERT INTO `application` (`id`, `nom_application`) VALUES
(1, 'windows vista');
-- --------------------------------------------------------
--
-- Structure de la table `question`
--
CREATE TABLE IF NOT EXISTS `question` (
`id_question` int(15) NOT NULL AUTO_INCREMENT,
`num_question` int(12) NOT NULL,
`id_application` int(16) NOT NULL,
`nom_question` varchar(255) NOT NULL,
`reponse` varchar(255) NOT NULL,
`photo` blob NOT NULL,
`num_id_source` int(11) NOT NULL,
PRIMARY KEY (`id_question`),
KEY `id_application` (`id_application`),
KEY `num_id_source` (`num_id_source`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `question`
--
-- --------------------------------------------------------
--
-- Structure de la table `source`
--
CREATE TABLE IF NOT EXISTS `source` (
`id_source` int(11) NOT NULL AUTO_INCREMENT,
`nom_source` varchar(255) NOT NULL,
PRIMARY KEY (`id_source`),
UNIQUE KEY `nom_source` (`nom_source`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `source`
--
INSERT INTO `source` (`id_source`, `nom_source`) VALUES
(1, 'dsci');
--
-- Contraintes pour les tables exportées
--
--
-- Contraintes pour la table `question`
--
ALTER TABLE `question`
ADD CONSTRAINT `question_ibfk_1` FOREIGN KEY (`id_application`) REFERENCES `application` (`id`),
ADD CONSTRAINT `question_ibfk_2` FOREIGN KEY (`num_id_source`) REFERENCES `source` (`id_source`);
et mon code :
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="cine.css" rel="stylesheet" type="text/css" />
<title>ajouter la question</title>
</head>
<?php
//$serveur='localhost';
//$utilisateur='root';
//$mdp='';
//$bdd='faq_dsic';
$application = $_POST['application'];
$numero=$_POST['num_question'];
$question=$_POST['question'];
$reponse=$_POST['reponse'];
$source=$_POST['source'];
mysql_connect("localhost", "root", "" );
mysql_select_db("faq_dsic" );
if (mysqli_connect_errno())
{echo "probleme de connexion à la base de données";
exit;}
$application= mysql_query("INSERT INTO application(id,nom_application) VALUES ('','$application')" );
$source = mysql_query("INSERT INTO source (id_source,nom_source) VALUES('','$source')" )or die(mysql_error());
$question = mysql_query("INSERT INTO question VALUES ('','$numero','','$question','reponse','','') " )or die(mysql_error());
mysql_close();
?>
Votre question vient d'etre enregistrer avec succes
<br/>
<a href = " index.php">Menue</a>
encore merci de m'aider
heu dsl, mais dans mon post precedent j'ai remis un peu de ton code, mais c'etait pour l'exemple...
tout ce qui est en auto increment ne doit pas etre rensigné... donc il ne faut pas mettre de '' pour tes id etc... donc il faudrait que tu reprennes le tout premier exemple que je t'ai donné.
je reprends cette exemple :
insert into Question (Num_Question, Question, Reponse, Picture) values('.$num_ques.','.$question.','.$reponse.','.$reponse1.' )
Merci d'utiliser le bbcode [code] c'est illisible ainsi.
Répondre à SiM07
dsl je le ferais la prochaine fois
Au passage ton code n'a aucune sécurité ... En 2 seconde ton site tombe ...
Répondre à SiM07
en faite mon probleme c'est que des que je m'est les champs id_question et num_id_source de ma table question en FOREIGN KEY (INNODB) alors ma requette sql insert into Question (Num_Question, Question, Reponse, Picture) values('.$num_ques.','.$question.','.$reponse.','.$reponse1.' ) ne marche pas c'est ça mon probleme
c'est pas pour moi se site.J'ai juste a faire le FAQ d'une partie du site et le rendre a l'entreprise la semaine prochaine mais si mon insert into ne marche pas je peux rien faire s'est cela le probleme
Message édité par nair le 28-05-2009 à 14:13:28
bonjour, voila je crois avoir trouvé le problème mais je ne s'est pas comment le résoudre en faite le problème vient de la liste déroulante car je veux rajouter l'id de l'application choisi dans la liste mais je ne s'est pas comment faire. je crois qu'il faut que je mette une requete sql sur le value mais comment?
Tu es rigolo ... Tu nous demandes de l'aide mais tu nous donnes même pas le message d'erreur exact ...
Si tu as vraiment un problème de clé étrangère, c'est à mon avis que tu références vers un élément inexistant. Mais bon, les messages d'erreur sont fait pour ça !
Et sincèrement, ca fait peur du code comme ça dans une entreprise ...
Répondre à SiM07
Il y a 299 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

SiM07