Envoi de résultat bouton radio vers données postgresql

Résolu
Dbl35 Messages postés 74 Statut Membre -  
Dbl35 Messages postés 74 Statut Membre -
Bonjour,

je ne sais pas si je suis dans le bon forum ?..

Je ne sais pas comment faire pour enregistrer dans postgres les résultats de radiobutton.
J'ai 5 choix possibles types
<html:form..
<tr..
<td ..<input type="radio" name="popup" value="1" onClick="R=1">
.. ainsi .. 5 fois de suite de R1 à R5

Je voudrais stocker dans postgres les R qui seront ensuite pris en charge par des triggers postgresql et me remplirons des champs de mon IHM ou se situent mes boutons radios.
Comment je peux faire ça ? je ne connais quasiment pas javascript.
J'ai essayé plusieurs modèles de script issus de forums mais je n'arrive pas à les faire fonctionner.

merci de vos aides ( je débute)
dan

1 réponse

  1. tarek_dotzero Messages postés 834 Statut Membre 122
     
    Bonjour,

    Vous ne devez pas utiliser JavaScript, mais un script côté serveur (Servlet) qui va recevoir les données.

    L'évènement
    onClick
    que vous utilisez n'est pas correcte, il suffit de récupérer la valeur du paramètre "popup" et il va contenir la valeur correspondante (spcifiée par l'attribut
    value
    ).

    Destination : J2EE, Servlet et surtout l'objet
    request

    Bon Courage.
    0
    1. Dbl35 Messages postés 74 Statut Membre
       
      Bonjour,

      je vous remercie de votre intervention, depuis 8 jours je me prends la tête en essayant ce que je sais (avec mes bouquins) mais ça ne suffit pas.. du courage mais ce qu'il me manque le plus c'est la connaissance, plus j'avance et plus j'ai l'impression de ne plus rien savoir....

      je vais travailler coté servlet, mais pouvez vous m'indiquer comment je vais entrer mon script servlet ,

      Actuellement voila ou j'en suis, je ne suis pas sûr de bien m'expliquer ( je suis pas un pro, loin s'en faut).

      J'ai ajouter une table (radutile) dans postgres pour collecter mon résultat radiobutton
      Puis j'ai modifié tout mon html comme ceci :

      </html:form
      ..
      1// mes td d'installation de chaque bouton radio ( name commun = Rdp)
      <td id="article" name="volradio" style="...">
      <INPUT type="radio" id="RDp5" name="RdP" value="5" onClick="testRadio(this.form.RdP)" >
      </td>

      2// ma td de récupération de la value du bouton radio et de son envoi dans postgres
      <td id="article" >
      <html:text style="..." property="radutile" value="" name="RdP"></html:text>
      <input id="resultRadiobouton" name="resultRadiobouton" type="text" value="">
      </td>
      .....
      </html:form>

      mon but est d'enregister mon onclick dans le "resultRadiobouton" de ma td 2 et de le transférer dans "property=radutile" de la même td, qui l'enverra ensuite dans postgresql


      j'ai ensuite essayé plusieurs scripts :

      1er pour // fait apparaite le value de chaque bouton suivant le click = Ok
      <script type="text/javascript">
      function testRadio(radio) {
      for (var i=0; i<radio.length;i++) {
      if (radio[i].checked) {
      alert("Système = "+radio[i].value)
      }
      }
      }
      </script>

      les scripts suivants sont destinés à enregistrer le value de mon radiobutton dans mon "input" td 2 ( resultRadiobouton)
      mais ça ne marche pas

      2 ieme By NAME
      <script type="text\javascript">
      function testRadio(radio) {
      var inp = document.getElementByName("resultRadiobouton");
      for (var i=0; i<radio.length; i++) {
      if (radio[i].checked) {
      inp.value = radio[i].value;
      console.log("systeme = "+radio[i].value);
      }
      }
      }
      </script>

      3 ieme By Id
      <script type="text\javascript">
      function testRadio(radio) {
      var inp = document.getElementById("resultRadiobouton");
      for (var i=0; i<radio.length; i++) {
      if (radio[i].checked) {
      inp.value = radio[i].value;
      console.log("systeme = "+radio[i].value);
      }
      }
      }
      </script>

      j'ai aussi essayé ça Bt TagName :
      </script>
      <script type="text\javascript">
      function testRadio(radio) {
      var inp = document.getElementsByTagName("radutile"));
      for (var i=0; i<radio.length; i++) {
      if (radio[i].checked) {
      inp.value = radio[i].value;
      console.log("systeme = "+radio[i].value);
      }
      }
      }
      </script>

      A priori tout cela ne sert à rien ?

      Je vais essayer de suivre ce que vous m'indiquez, mais j'aurai besoin d'un guidage ( pas de le faire à ma place bien sûr) pour que je comprenne enfin..

      pouvez vous me donner un coup de pouce dans ce sens ?

      je bosse avec netbeans, struts sous linux

      merci encore
      dan
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      "je bosse avec netbeans, struts sous linux "
      Alors pourquoi tu veux tout faire en JavaScript ? Utilises tes actions Struts pour effectuer tes opérations en base de données.

      "A priori tout cela ne sert à rien ?"
      Si on parle de l'utilisation d'une boucle if (radio[i].checked) effectivement je ne vois pas à quoi ça sert. Lorsque ton formulaire effectue un get/post, il transmets déjà quelle case est cochée à ton action Struts côté Java, il n'y a donc plus qu'à récupérer les valeurs du formulaire et faire ton appel JDBC en conséquence.

      Il n'est même pas nécessaire de faire du Struts pour faire ça, mais si tu fais du Struts et que tu ne fais pas ça, je me demande à quoi te sers ton Struts ?
      0
    3. Dbl35 Messages postés 74 Statut Membre
       
      bonsoir, merci de me répondre,

      Je suis bien d'accord avec toi, mais je suis "obligé" de bosser avec struts ( que j'apprends avec un bouquin...) du fait qu'il s'agir d'une ancienne appliweb que je dois faire évoluer vers de nouvelles fonctionnalités.
      Je suis contraint par l'existant.. et ça m'arrange pas du tout de bosser avec des outils que je n'ai jamais pratiqué, mais c'est comme ça, d'autant plus que je débute pour arranger le tout.. et repasser derrière des codes que tu n'as pas fait c'est pas si évident, mais comme je l'indique, j'ai pas le choix, il faut que je fasse avec..
      Maintenant si je peux m'en passer ce sera avec plaisir.

      mais voila,. tout est fait entre des balises html:form, intouchables sans s'engager dans des modifs des tags, de validations.xml ,de jpa et autres jsp ,etc..
      alors que si je pouvais transférer mes données radio vers postgres, aprés je sais faire.

      C'est pas ça le blocage ?
      <html:javascript formName="CreateArticleForm" method="strutsValidation" dynamicJavascript="true" staticJavascript="true"/>
      <html:form action="/createfinc.do" method="post" onsubmit="disabledOnSubmit(this);return validerFormPopup(this);">

      ma td qui charge mabase par property="radutile" (colonne postgres)
      <html:text style="....." property="radutile" value="" name="RdP"></html:text> /

      Coté postgres c'est OK,mes triggers sont en place pour mouliner mes résultats radiobouton.

      Mon problème est justement ce que tu me dis, ou et comment récupérer les résultats de mes radioboutons dans ma base.
      Je ne comprends pas que même mes scripts classiques ne chargent pas mon input ?
      <input id="resultRadiobouton" name="resultRadiobouton" type="text" value="">

      Si tu as une solution simple, le compliqué ce sera pour plus tard, pour l'instant ce ne sont que des retouches.
      Tu m'indique qu'il est possible de le faire sans struts, au moins dans un 1er temps, je suis preneur. tout de suite, struts après...

      excuses moi si je ne suis pas clair, mais je bouine depuis 10 jours sur cette manip
      svp, au plus simple.

      Merci bien encore
      dan
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      "sans s'engager dans des modifs des tags, de validations.xml ,de jpa et autres jsp"
      Commences déjà par regarder tes classes Java. Pour cela tu dois avoir un fichier struts.xml qui dispatche tes url sur telle classe et telle méthode. Si tu sais quelle classe gère l'url /createfinc.do tu pourras retrouver le point d'entrée, récupérer le contenu du formulaire et le traiter.
      0
    5. Dbl35 Messages postés 74 Statut Membre
       
      Bonjour,
      j'ai bossé ton message, et voila ce que j'ai fait , c'est peut être long, mais je pense que ton "oeil" averti repérera vite une erreur, dis moi si je suis sur la bonne voie.

      Le fichier s'appelle struts-config.xml qui me dirige effectivement vers mescl

      <struts-config>
      <form-beans>
      ..
      <form-bean name="CreateIncForm" type="form.orgbtp.approvisionnement.articles.CreateIncForm"/>
      ..
      <action-mappings>
      ..
      <action scope="session" path="/displayInc" type="action.tr.appro.inc.DisplayIncAction" name="CreateIncForm" validate="false">
      <forward name="success" path="/jsp/tr/appro/inc/display_inc.jsp"></forward>
      </action>

      <!--Action create Inc-->
      <action input="/jsp/tr/appro/inc/display_inc.jsp" name="CreateIncForm"
      path="/createInc"
      scope="session"
      type="action.tr.appro.inc.CreateIncAction" validate="true">
      <forward name="success" path="/jsp/tr/appro/inc/display_inc.jsp" redirect="true" ></forward>
      </action>

      <!--Action modify Inc-->
      <action input="/jsp/tr/appro/inc/display_articles.jsp"
      name="CreateIncForm"
      path="/modifyInc"
      scope="session"
      type="action.tr.appro.inc.ModifyIncAction" validate="true">
      <forward name="success" path="/jsp/tr/appro/inc/display_inc.jsp" redirect="true" ></forward>
      </action>

      <!--Action delette Inc-->
      <action input="/jsp/tr/appro/inc/display_inc.jsp"
      name="CreateIncForm"
      path="/deleteInc"
      scope="session"
      type="action.tr.appro.inc.DeleteIncAction" validate="false">
      <forward name="success" path="/jsp/tr/appro/inc/display_inc.jsp" redirect="true" ></forward>
      </action>
      ***********************************************************************************************

      J'ai engagé ces modifs dans mes packages sources .java
      (finalités = ajout d'un champ de récup de ma donnée radio)

      1/ > public class CreateIncForm extends ActionForm {
      // ajout ma récupération
      private String radutile;
      ..
      // ajout
      public String getRadutile() {
      return this.radutile;
      }/*radio utile */
      public void setRadutile(String radutile) {
      this.radutile = radutile;
      }/*radio utile*/
      ..
      public void reset(ActionMapping mapping, HttpServletRequest request) {
      super.reset(mapping, request);
      this.radutile = "";
      ..
      public String[] findInc(String id) {
      ..// colonne de ma table
      res[29] = Strinpublic class CreateIncAction extends Action {

      2/ > public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      if(request.getSession().getAttribute("logged") != null) {
      System.out.println("Enregistrement de Inc ");
      RelaisEjb leRelais = new RelaisEjb();
      GestionIncRemote remote = (GestionIncRemote)leRelais.getRemote("java:comp/env/GestionIncBean");
      CreateIncForm f = (CreateIncForm)form;
      ..
      //ajout pour mon champ de recup "big decimal en base"
      if(f.getRadutile().length() > 0) {
      BigDecimal RadU = new BigDecimal(f.getRadutile()).setScale(2, RoundingMode.HALF_DOWN);
      art.setArtDecRadiobouton(RadU);
      }
      ..
      j'ai aussi modifié d'autres class, mais avant pourrais tu me dire si je suis sur la bonne voie pour récupérer mon résultât radiobouton dans "radutile" ?

      j'ai d'autres fichiers que j'ai modifiés... modify, delette et display,, tout c'est bien passé, mon champ de recup apparait (radutile) dans mon popup et quand j'y entre une donnée je la retrouve bien dans ma base

      Maintenant, si j'ai bien compris, je dois ajouter mes radios boutons dans mon package sources
      createIncForm ? C'est ça ?

      merci encore
      dan
      0