Erreur SQL/php
Résolu
lyn1109
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Yorundr Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
Yorundr Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Erreur SQL/php
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
8 réponses
Salut,
ce qui pourrait aider c que tu montre ta fonctionEnregistrerProduit()
La jointure est inutile, parcontre il faut que ta clé etrangere existe bien
ce qui pourrait aider c que tu montre ta fonctionEnregistrerProduit()
La jointure est inutile, parcontre il faut que ta clé etrangere existe bien
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?
Sinon faudrait revoir ton modèle de données non?
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!!!
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!!!
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!!
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!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
<?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
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."', '"....)
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."', '"....)
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!!!
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!!!
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
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