Erreur SQL/php

Résolu/Fermé
lyn1109 Messages postés 6 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 26 mai 2009 - 26 mai 2009 à 13:06
Yorundr Messages postés 289 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 11 juin 2012 - 26 mai 2009 à 14:33
Bonjour,
voilà, on essaye de créer un site d'enchere , et là on a une erreur SQl


INSERT INTO

Produits( NomP, DescP, ResumP, PrixP, CategorieP,Date_debut_Ench, Date_fin_Ench, Heure_debut_Ench,
Heure_fin_Ench )

VALUES('$nomP', '$descP', '$resumP', '$prix', '$cat', '$dateD', '$dateF',
'$hd', '$hf');

sachant que la table produit contient :
CodeP (clé primaire )
CodePers (une clé etrangéré de la table personne )
Nom DescP
ResumP,
PrixP
CategorieP
Date_debut_Ench,
Date_fin_Ench,
Heure_debut_Ench,
Heure_fin_Ench

et apparement c'est la clé etrangere qui pose probleme
est ce qu'il est possible de faire une jointure genre
where CodePers.Produits = CodePers.Personnes;
j'ai essayé mais ca n'a pas marché!!!

Merci

8 réponses

Yorundr Messages postés 289 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 11 juin 2012 44
26 mai 2009 à 13:35
Salut,

ce qui pourrait aider c que tu montre ta fonctionEnregistrerProduit()

La jointure est inutile, parcontre il faut que ta clé etrangere existe bien
1
Euh techniquement c'est bon, mais ça ne veut rien dire (sauf si une personne est un produit).
Sinon faudrait revoir ton modèle de données non?
0
lyn1109 Messages postés 6 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 26 mai 2009
26 mai 2009 à 13:18
Au fait la personne propose un produit , le modele de donnée est bon
on a besoin de la clé de table Personne dans la table produit pour relier les 2!!!
mais je ne sais pas ca ne marche pas!!!
0
lyn1109 Messages postés 6 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 26 mai 2009
26 mai 2009 à 13:24
je me dis que c'est peut etre une fonction Php qu'il faudrait ajouter
mon code PHP pour l'insertion :
<?php

//pour charque clic sur le bouton Enregistrer2 on vérifie les valeurs
if (isset($_POST["Enregistrer2"])==1)
{
// recuperer les valeurs saisies

$nomP = $_POST["txt_NomP"];
$descP = $_POST["txt_DescP"];
$resumP = $_POST["txt_ResumP"];
$prix = $_POST["txt_Prix"];
$cat = $_POST["txt_Cat"];
$dateD = $_POST["txt_DateD"];
$dateF = $_POST["txt_DateF"];
$hd = $_POST["txt_HD"];
$hf = $_POST["txt_HF"];

// connexion à MySQL
connexion_choix();

// appel de la fonction d'enregistrement et construction du compte-rendu

$insererproduit = enregistrerProduit($nomP, $descP, $resumP, $prix, $cat, $dateD, $dateF, $hd, $hf);


echo ("$insererproduit");

if($insererproduit == 1)
{
echo ('<b>Votre produit a bien été mis en enchère</b>');
}

else if ($insererproduit == 2)
{
echo ("Erreur SQL");
}
}


si ca peut vous aider!!!
merci!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lyn1109 Messages postés 6 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 26 mai 2009
26 mai 2009 à 13:38
la voici!!

<?php

// fonction correspondant a l'enregistrement d'un produit

function enregistrerProduit($nomP, $descP, $resumP, $prix, $cat, $dateD, $dateF, $hd, $hf)
{

// construction de la requete
$ordreInsert2 = "INSERT INTO Produits(CodePers, NomP, DescP, ResumP, PrixP, CategorieP,
Date_debut_Ench, Date_fin_Ench, Heure_debut_Ench, Heure_fin_Ench )
VALUES('$nomP', '$descP', '$resumP', '$prix', '$cat', '$dateD', '$dateF', '$hd', '$hf')";

// executer l'ordre
$idExec2 = mysql_query($ordreInsert2);

$nb_ligne2 = mysql_affected_rows();

if($nb_ligne2 == 1)
{

return 1;
}
else
{

return 2;
}
}
?>

et merci
0
Yorundr Messages postés 289 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 11 juin 2012 44
26 mai 2009 à 13:42
Ah ben la oui c plus simple je voit tout de suite ton erreur...

En fait '$nom' n'est pas interpreté comme une variable mais comme une chiane de caractere. Ce qu'il faut que tu fasse c'est :

$ordreInsert2 = "INSERT INTO Produits(CodePers, NomP, DescP, ResumP, PrixP, CategorieP,
Date_debut_Ench, Date_fin_Ench, Heure_debut_Ench, Heure_fin_Ench )
VALUES('".$nomP."', '"....)
0
lyn1109 Messages postés 6 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 26 mai 2009
26 mai 2009 à 14:16
Au fait ca n'a rien avoir avec ca!!
on a essayé ca pour inserer une personne ,mais ca marche!!
donc le probleme est avec la clé etrangére et le probleme à été reglé comme ca:
<?php

//pour charque clic sur le bouton Enregistrer2 on vérifie les valeurs
if (isset($_POST["Enregistrer2"])==1)
{
// recuperer les valeurs saisies

$nomP = $_POST["txt_NomP"];
$descP = $_POST["txt_DescP"];
$resumP = $_POST["txt_ResumP"];
$prix = $_POST["txt_Prix"];
$cat = $_POST["txt_Cat"];
$dateD = $_POST["txt_DateD"];
$dateF = $_POST["txt_DateF"];
$hd = $_POST["txt_HD"];
$hf = $_POST["txt_HF"];

// connexion à MySQL
connexion_choix();

//recupere code personne
$Rq1 = "Select * from Personnes WHERE loginPers = '$login' ";
$Exrq = mysql_query($Rq1);
$nbligne = mysql_num_rows($Exrq);

if ($nbligne != 0)
{
$nuplet = mysql_fetch_array($Exrq);
$codePers = $nuplet ['CodePers'];
}
else
{
echo "aucune ligne trouvée";
}


// construction de la requete
$ordreInsert2 = "INSERT INTO Produits(NomP, DescP, ResumP, PrixP,CodePers,
CategorieP, Date_debut_Ench, Date_fin_Ench, Heure_debut_Ench, Heure_fin_Ench )
VALUES('$nomP', '$descP', '$resumP', '$prix','$codePers', '$cat', '$dateD', '$dateF', '$hd', '$hf') ";
// executer l'ordre
$idExec2 = mysql_query($ordreInsert2);

$nb_ligne2 = mysql_affected_rows();

if($nb_ligne2 == 1)
{

return 1;
}
else
{

return 2;
}
}

?>

et voila ce qu'il fallait faire!!!
merci pour votre aide!!!
0
Yorundr Messages postés 289 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 11 juin 2012 44
26 mai 2009 à 14:33
Oui c'est vrai j'avais pas fait gaffe, vous lui dite que vous allez inserer 10 colonne alors que vous ne lui en fournissiez que 9....

Ouai je suis pas convaincu que ca
$ordreInsert2 = "INSERT INTO Produits(NomP, DescP, ResumP, PrixP,CodePers,
CategorieP, Date_debut_Ench, Date_fin_Ench, Heure_debut_Ench, Heure_fin_Ench )
VALUES('$nomP', '$descP', '$resumP', '$prix','$codePers', '$cat', '$dateD', '$dateF', '$hd', '$hf')

ca marche, mais si ca marche tant mieu, par contre faite gaffe si vous n'avez pas de $codepers, vous pouvez quand meme executé la requete, et en plus la vous ne gerer pas les injections sql
0