Requête INSERT INTO problème

Résolu
omlaly - 9 févr. 2013 à 17:24
 omlaly - 15 févr. 2013 à 13:52
Bonjour

Ce n'est pas ma première requête INSERT INTO que je fais (les autres fonctionnent) mais celle là ne veut pas marcher :
$villages=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['villages'])));
$categorie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['categorie'])));
$titre_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_article'])));
$texte_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['texte_article'])));
$auteur_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_article'])));

// Insertion de l'article dans la base de données
// Enregistrement des valeurs dans la base de données
$query_insertion_articles = mysql_query("INSERT INTO articles VALUES('',".$_POST['villages']."".$_POST['categorie'].", '$titre_article','$texte_article',".$_POST['auteur_article'].")'") or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.$query_insertion_articles.'
'.mysql_error());



A noter que "villages" et "categories" sont des listes déroulantes où je dois choisir un item.

L'erreur est (j'ai mis pour tester comme titre 'Mon premier article' et comme contenu 'nbv' (c'est un éditeur tinymce)) :
Erreur sur la requête SQL concernant l'insertion des articles
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 ' 'Mon premier article','nbv

',)'' at line 1


En attendant vos réponses, je continue mes recherches...
Cordialement

38 réponses

Bonjour JejeScript,

Merci de ta réponse mais jusqu'à présent, toutes mes requêtes SQL fonctionnent sauf celle là qui a la particularité de devoir enregistrer les items sélectionnés à partir de deux listes déroulantes.

Ca m'étonnerait quand même fortement de ne pas pouvoir utiliser des listes déroulantes pour faire des traitements dessus par la suite.

Cordialement
0
Avec PHPMyAdmin, j'ai modifié pour tester en mettant le village et la catégorie et le reste de mon code marche donc j'ai bien détecté le problème mais je n'arrive pas à le résoudre : comment faire comprendre à la requête SQL qu'il faut qu'elle enregistre les deux choix effectués à partir des deux listes déroulantes ?

Cordialement
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
14 févr. 2013 à 11:55
tu peux nous donnée la requette APRES création?
sa simplifierais notre compréhension, de là on pourrais voir instantanément les soucie de quote ou autre et revenir en arriere pour corrigé :

$req = "INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES (\'$villages\',\'$categorie\',\'$titre_article\', \'$texte_article\', \'$auteur_article\')";
echo ($req);
$query_insertion_articles = mysql_query($req) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error()); // Envoie une requête à un serveur MySQL
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
14 févr. 2013 à 14:35
Re vite fait,

j'ai l'impression que tu ne lis pas mes réponses : il te faut un seul form. Pour le reste je te laisse avec les spécialistes du PHP.

Bon code.
0

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

Posez votre question
Bonjour Malkuth,

Donc j'ai fait ça :
$req = "INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES (\'$villages\',\'$categorie\',\'$titre_article\', \'$texte_article\', \'$auteur_article\')";
echo ($req);
$query_insertion_articles = mysql_query($req) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error());


Quand j'essaie, ça me donne l'erreur suivante :
INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES (\'\',\'\',\'titre article\', \'contenu article

\', \'\')Erreur sur la requête SQL concernant l'insertion des articlesYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'\',\'\',\'titre article\', \'contenu article

\', \'\')' at line 1


Qu'en penses-tu ?

Cordialement
0
Bonjour jopop,

Je n'ai qu'un seul <form> mais les listes déroulantes sont au dessus du formulaire.
Si je les mets dans le formulaire, quand j'appuie sur le bouton il ne se passe rien !

Cordialement
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
14 févr. 2013 à 18:19
Re,

je connais peu le PHP (j'en ai jamais fait en pro et ça fait des années qui j'y ai pas touché), par contre je connais assez bien le HTML pour faire de l'ASP.NET. Le fait que tu n'ais pas de valeur dans ton tableau $_POST pour tes ddl ne peut venir que de ça (à mon avis, à voir avec un spécialiste du PHP).
M'est avis que quand t'es passé avec un seul form tu as du faire une erreur de retranscription.

Là j'ai pas de serveur PHP sous la main pour confirmer mes dires, et je pourrai pas tester avant samedi, désolé.
Chose à peu près sûre, c'est que ton problème ne concerne plus le SQL, c'est déjà un bon point
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
14 févr. 2013 à 18:31
donc la requette que tu envoi au server est

INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) 
VALUES (\'\',\'\',\'titre article\', \'contenu article

\', \'\')


et l'erreur est :

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 '\'\',\'\',\'titre article\', \'contenu article

\', \'\')' at line 1


Une erreur de syntax veux dire "Je comprend pas c'que tu veux parle moi correc'" donc avant de savoir si tu envoi des donnée incohérente ou fausse vérifions déjà si on peu se faire comprendre ;-)

Il me semble que tu as des échappements problématiques, remplace les \' par des simple ' :

$req = "INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES ('$villages','$categorie','$titre_article', '$texte_article', '$auteur_article')";
echo ($req);
$query_insertion_articles = mysql_query($req) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error()); // Envoie une requête à un serveur MySQL


si je ne me trompe pas tu devrais soit ne plus avoir d'erreur soit une nouvelle erreur.
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
14 févr. 2013 à 18:36
Ensuite, peux tu posté le HTML tel que vu par le navigateur en entier?
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
14 févr. 2013 à 18:37
Malkuth, a priori on a réglé son problème d'utilisation des caractères d'échappement inutiles (cf. ma correction plus tôt). L'insertion fonctionne mais certaines valeurs sont vides. Là on cherche donc à savoir pourquoi son tableau $_POST ne contient pas de valeur pour ses dropdownlists ;)
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
14 févr. 2013 à 18:58
Erf oui j'ai lu un peut vite effectivement, Ben reste a chopé le HTML complet de la page.
0
Salut Malkuth,

Donc, j'ai mis cette requête :
$req = "INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES ('$villages','$categorie','$titre_article', '$texte_article', '$auteur_article')";
echo ($req);


Quand j'essaye, ça me met l'erreur suivante :
INSERT INTO articles (nom_village,nom_categorie,titre_article, texte_article, auteur_article) VALUES ('','','titre article', 'contenu article

', '')


Elle voit pas les listes déroulantes.

Cordialement
0
Cordialement le code HTML, vous voulez voir quoi ? à partir du navigateur ou le code que j'ai fais ? Je vous mets les deux (je vous mets que les parties concernées) :

A partir du navigateur :





Poster un article
Catégories :
Monuments_a_visiterMuseesHebergementsCinemasSpectacles_et_fetes_localesCircuits_praticablesBoutiquesRestaurantsParkingsBonnes_adresses_de_visiteursEvenements_sportifsSports_praticablesMedecine


Villages :
Aramon





Titre,
,

Article,
,

Auteur(s)
,
,
----

,








Mon code :













Titre,
,

Article,
,

Auteur(s)
,
,
----

,








Cordialement
0
Merci les amis, ça marche !!!!!!!!!!!!!!!!!!!!!!!!!!!

Pour info, voici la requête SQL (j'ai rajouté la date et l'heure courante !) :
$req_insertion_articles = "INSERT INTO articles (nom_village,nom_categorie, date_depot, titre_article, texte_article, auteur_article) VALUES ('$villages','$categorie', now(), '$titre_article', '$texte_article', '$auteur_article')";
$query_insertion_articles = mysql_query($req_insertion_articles) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error()); // Envoie une requête à un serveur MySQL


Cordialement
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
15 févr. 2013 à 09:59
Marque la réponse de Malkuth comme "Réponse acceptée"
0
Voilà, c'est fait jopop
0
Petite rectification : tout marche sauf que comme j'ai fait une checkbox avec la fonction JAVASCRIPT suivante :
function Switch(me) {
  var mytxt = document.getElementById("auteur_article");
  mytxt.disabled = me.checked;
}


qui permet de griser/dégriser le champs texte "auteur_article".

La requête SQL n'enregistre pas le champs texte "auteur_article" s'il est grisé (
disabled=true
. S'il est normal (pas grisé), elle enregistre son contenu.

Comment faire pour que la requête SQL enregistre son contenu quelque soit son état (grisé ou pas grisé) ?

Cordialement
0
C'est bon, j'ai réussi en changeant la fonction JAVASCRIPT, je vous la mets :

function Switch(me) {
if (me.checked)
   document.getElementById("auteur_article").setAttribute("readonly", "readonly");
else
   document.getElementById("auteur_article").removeAttribute("readonly");
}


Cordialement
0
Rejoignez-nous