Erreur SQL/php [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
26 mai 2009
-
Yorundr
Messages postés
289
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2012
-
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

Messages postés
289
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2012
42
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86603 internautes nous ont dit merci ce mois-ci

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?
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
26 mai 2009

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!!!
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
26 mai 2009

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!!
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
26 mai 2009

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
Messages postés
289
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2012
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."', '"....)
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
26 mai 2009

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!!!
Messages postés
289
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2012
42
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