Insert et coldfusion

cs_Scarlett06 Messages postés 4 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 4 février 2008 - 1 févr. 2008 à 17:34
didierdufresne Messages postés 1 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 décembre 2008 - 10 déc. 2008 à 10:07
Bonjour,
je débute en coldfusion est j'ai un petit soucis. Je n'arrive pas à insérer des valeurs dans une table de ma base de données.
J'arrive à la consulter mais pas à l'insérer.
Voici mon code :

<cfquery name="consulter" datasource="BD">SELECT * FROM Sondage</cfquery>
<cfdump var="#consulter#">
<cfquery name="ajouter" datasource="BD">INSERT INTO Sondage(IdQ,IdS,IdUsers,Reponse) values(1,1,2,1)</cfquery>
<cfdump var="#ajouter#">

La premiere requete "consulter" me retourne bien ma table (j'ai inséré une valeur à la main) mais la deuxieme "ajouter" me provoque une erreur et empeche l'affichage de ma page.

Pouvez vous m'aider pour détecter d'où vient l'erreur?
Merci

Scarlett

7 réponses

bonnebouffe Messages postés 38 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 24 novembre 2008
4 févr. 2008 à 07:48
Salut,

Quel message d'erreur reçois-tu exactement lorsque tu fais ton insert ?

Christophe
http://www.bonnebouffe.org
0
cs_Scarlett06 Messages postés 4 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 09:30
Bonjour,
j'ai cette page qui s'affiche

query - Top 1 of 1 Rows |----
 , IDQ, IDS, IDUSERS, REPONSE, ----
1, 1, 1, 1, 1

et quand je debug this page, aucune erreur apparait ....
Bizarre non ?

Scarlett
0
bonnebouffe Messages postés 38 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 24 novembre 2008
4 févr. 2008 à 09:38
Bête question mais dans on insert, tu as bien mis des espaces entre Sondage et la parenthèse et idem pour Values ?

Christophe
0
cs_Scarlett06 Messages postés 4 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 10:07
Oui j'ai bien mis les espaces... Ca marche maintenant, c'était juste un problème de nom de champ. Maintenant, j'essaie de procéder autrement je ne veux plus passer en dur mes valeurs mais passer par un cfc. 
Dans mon cfm je fais
<cfscript>
 // Variable globale Page
 objNewRepSondage = createObject("component","cfcs.sondage");
 objNewRepSondage.NewRepSondage(1,1,curIdUser,#Form.comparateur#);
</cfscript>

Et dans mon cfc :
<cfcomponent>
 <cffunction name="NewRepSondage">
  <cfargument name="IdS" required="yes">
  <cfargument name="IdQ" required="yes">
  <cfargument name="IdUsers" required="yes">
  <cfargument name="Reponse" required="yes">


  <cfquery name="upSondage" datasource="BourseImmo">
   INSERT INTO Sondage (IdS,IdQ,IdUsers,Reponse)
   VALUES (#Arguments.IdS#,#Arguments.IdQ#,#Arguments.IdUsers#,#Arguments.Reponse#)
  </cfquery>
  
  <cfquery name="montreSondage" datasource="BourseImmo">
   SELECT * FROM Sondage
  </cfquery>
 </cffunction>
</cfcomponent>

et la pareil ca me fait la page de debug sans erreur ...
Scarlett
0

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

Posez votre question
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
4 févr. 2008 à 13:54
Bonjour,

si ton code fonctionne au sein d'une page cfm, il doit en être de même au sein d'une page cfc, sauf si tu as une erreur de définition de ton cfc. Active le debug au niveau de l'interface admin pour connaître l'origine et la cause de l'erreur.

Question : es-tu sûre que ta page cfc est bien appelée ?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
xchevalier Messages postés 4 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 26 mars 2008
26 mars 2008 à 10:02
Hello,

Tu devrais passer tes valeurs comme ceci à ton CFC



<cfscript>
 // Variable globale Page
 objNewRepSondage = createObject("component","cfcs.sondage");
 objNewRepSondage.NewRepSondage(1,1,curIdUser,Form.comparateur);
</cfscript>

Sinon cela risque de faire un truc du style  :
...
 objNewRepSondage.NewRepSondage(1,1,curIdUser,ceci est ma réponse);
...

Autre chose, si tu peux typer les arguments de ton cfc c'est mieux et utilise plustôt cfqueryparam pour l'insert, cela évite des problème de paranthèse, SQLInject...

cfcomponent>
 <cffunction name="NewRepSondage">
  <cfargument name="IdS" required="yes">
  <cfargument name="IdQ" required="yes">
  <cfargument name="IdUsers" required="yes">
  <cfargument name="Reponse" required="yes">


  <cfquery name="upSondage" datasource="BourseImmo">
   INSERT INTO Sondage (IdS,IdQ,IdUsers,Reponse)
   VALUES (
      <cfqueryparamvalue="#Arguments.IDS#"
cfsqltype="cf_sql_numeric">,
      <cfqueryparamvalue="#Arguments.
IdQ#"cfsqltype="cf_sql_numeric">,
      <cfqueryparamvalue="#Arguments.
IdUsers#"cfsqltype="cf_sql_numeric">,
      <cfqueryparamvalue="#Reponse#"
cfsqltype="cf_sql_varchar"maxlength="255">
   )
  </cfquery>
  
  <cfquery name="montreSondage" datasource="BourseImmo">
   SELECT * FROM Sondage
  </cfquery>
 </cffunction>
</cfcomponent>
0
didierdufresne Messages postés 1 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 10 décembre 2008
10 déc. 2008 à 10:07
Salut,

Il est important quand on travaille avec une base de donnée de ne travailler qu'avec des procédures stockées.
Avantages :
     - rapidité (sql précompole le code)
     - Sécurité (le user n'a que les bon droit)
             il n'y a pas de code sql dans le source CFM
     - Moins de données transitent sur le réseau
0
Rejoignez-nous