Enregistrement result radio bouton dans postgresq sans php

Signaler
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
-
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
-
Bonjour,
est il possible d'enregistrer un choix entre 5 boutons radio dans ma base via le onclick ? même sans l'afficher je le récupérerai directement ensuite dans postgres via mes triggers.

La plupart de solutions que je trouve utilisent le Php, que je ne connais pas du tout..

laTD

<form>
   <INPUT type="radio" name="RdP" value="1" checked>R1
   <INPUT type="radio" name="RdP" value="2">R2
   <INPUT type="radio" name="RdP" value="3">R3
   <INPUT type="radio" name="RdP" value="4">R4
   <INPUT type="radio" name="RdP" value="5">R5
   <INPUT type="button" value="Tester"
          onClick="testRadio(this.form.RdP)">


le SCRIPT
<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>


Comment je peux maintenant enregistrer mon choix radio ( 1, 2, 3 ,4 ,5 ) directement dans une colonne de table postgres ? (ex : ma_table_colonne TYPE NUMERIC).

Merci de me mettre sur la voie, si possible simplement svp, je débute..
dan

4 réponses

Messages postés
32434
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
347
Bonjour,

Le javascript s'executant côté client, ne peut pas lancer de requêtes "seul".
tu peux le faire via AJAX mais cela implique tout de même l'utilisation de script PHP

Le principe de l'ajax est le suivant :
Ton script js appelle une page php (hébergée côté serveur) en lui passant des paramètres en POST ou GET
puis cette page PHP effectue la requête.

Il existe des tonnes d'exemples sur le net.

Le plus simple étant tout de même de passer par Jquery si tu le peux.(la syntaxe étant un peu plus "facile" )

Bonne Prog.



Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Bonsoir Jordane,

je me doutais un peu de la méthode, mais débutant ...

Par contre, est il possible de charger mon résultat radio bouton dans un champ caché de mon formulaire ?
J'entre déjà des données dans ma base en remplissant "manuellement" des champs de ce même formulaire, qui une fois validé enregistre tout ses données dans dans ma base.

Ce qui ferai que : j'envoie le test radio bouton, puis valide mon résultat radio, et valide ensuite mon formulaire complet qui va enregistrer toutes mes données y compris celui du résultat radio ? (ensuite j'ai mes triggers qui prennent le relais pour mouliner tout ça).

Je travaille avec netbeans et struts.

Qu'en penses tu ?

Je te remercie pour ta rapidité et pour ton coup de pouce, ça permet de mieux comprendre, depuis 2 jours je tourne en rond de forum en forum.
daniel
Messages postés
32434
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
347
Affecté la valeur de ton bouton dans un champ caché ?
Oui.. c'est facile.

exemple:

Dans ton formulaire html
<input type="hidden" id="leNomDeMonChamp" value="">



Dans ton code javascript
  
  <script type="text\javascript">
function testRadio(radio) {
var inp = document.getelementById("leNomDeMonChamp");
 for (var i=0; i<radio.length;i++) {
  if (radio[i].checked) {
     inp.value = radio[i].value;
    console.log("Système = "+radio[i].value);
  }
 }
} 
  </script>


Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Je te remercie encore pour ta sollicitude, je vais essayer comme ça, d'après ce que je viens de comprendre ça doit marcher..puisque je valide d'abord le résultat radio et ensuite mes transferts de données en base y compris le champ caché.
Si ça marche je t'enverrai un grand remerciement, en qq lignes j'ai compris le sens, enfin je pense(?) et probablement trouvé une solution sans php ni ajax.
Ma table est prête, je vais y bosser tout de suite.
Merci bien, Bonne soirée
Messages postés
32434
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
347
mais juste pour ma culture personnelle... ton formulaire... tu le gère comment pour enregistrer tes données dans ta bdd ?? tu dois bien utiliser du php non ?

Si c'est le cas, pourquoi ne pas mettre tes boutons radios dans ton formulaire directement et le gérer lors du submit via tonscript php ?
la valeur du bouton radio coché se trouvant dans $_POST['RdP']...
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Bonjour,

Je travaille avec des EJB et des beans, j'avais commencé ce matin à détailler tout mes codes, mais cela me semble inapproprié pour te répondre.
J'ai des .tags, .xml, .java, du .jsp bien sûr.. en fait je travaille avec une appli existante (ancienne) et des livres pour comprendre et mettre tout cela en cohérence mais j'ai pas encore tout compris.

Si tu le souhaitais, je peux te fournir des détails, mais je ne suis pas certains de pouvoir répondre à toutes questions et cela va encombrer le forum.
Ce que je suis sûr est que je n'ai pas de PHP dans mes codes.

J'ai modifié mes tables postgres et vais tenter le transfert de données dés que je pourrai afficher la valeur de bouton radio.
Je n'arrive pas à afficher sa valeur dans ma td ( j'ai enlevé le type hidden dans un 1er temps).

J'ai essayé avec getElementById, puis ..ByName,.. je dois avoir une erreur qqpart,

Voila mes 2 scripts que j'ai repris sur les tiens :
1/
<script type="text\javascript">
function testRadio(radio) {
var inp = document.getElementByName("CRdP");
for (var i=0; i<radio.length;i++) {
if (radio[i].checked) {
inp.value = radio[i].value;
console.log("Système = "+radio[i].value);
}
}
}
</script>
2/
<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>

puis ma TD "de récupération" entre des balises html:form
<tr>
<td name="CRdP" id="CRdP" style=".....">
<input type="text" style="..." name="CRdP" id="CRdP" value="">
</td>
</tr>

Mon champ de saisie actuel ( également entre html:form) qui enregistre ma donnée en base, c'est celui que je voudrai remplir avec le javascript.
<html:form ..
<td id="artR" name="artR" style="......">
<html:text style="...." property="RdPP"></html:text>
</td>
..</html:form>

Je continue en parallèle, pour voir si avec les EJB ça peut se faire ,..
Merci encore pour ton coup de main, ça aide.
daniel
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Bonjour,

de nouveau en collecte d'informations..
Je viens de passer 2 jours avec les conteneurs EJB, les beans, etc ..et je n'y arrive pas, les bouquins c'est bien mais insuffisant.
Je vais devoir suivre ton conseil avec jquery.

J'ai "fouillé" les forums jquery, et je me pose 2 questions :
comment jquery entre le résultat du bouton radio dans ma base ? je ne vois pas de noms de table ?
et ou j'entre mon code jquery ( c'est comme javascript ?) ,

Si ru as qq minutes pour me répondre, avant que je ne fasse le pas..
je te remercie bien
daniel
Messages postés
32434
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
347
Jquery c'est du javascript ( une bibliothèque de fonctions javascript en fait).
Par contre, tout comme le javascript "de base" jquery ne permet pas de manipuler les BDD sauf en passant par de l'ajax (ce qui implique l'utilisation de script PHP).

Le truc c'est que je ne maitrise pas EJB (J2EE) ... je me demande si tes questions ne trouveraient pas plus leur place dans le forum JAVA directement....
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Bonjour Jordane,
Juste un petit mot pour te remercier de ton aide concernant javascript, mais je suis contraint par une appliweb existante qui utilise struts, je dois donc travailler mes radios boutons cotés serveur avec struts, Ejb etc..
Ce que je tente depuis 1 semaine, et ça avance mais doucement.
Je vais basculer sur le(s) forum(s) struts.
merci encore
bonne continuation
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
(re) bonjour Jordane,

je reviens vers toi pour une autre difficulté.
En fait j'ai avancé avec struts et mis en place une liste qui permet de faire un choix d'option et qui remplace la checkbox que je voulais faire initialement (en fait c'est plus simple avec struts).

Ce qui se passe maintenant est que mon formulaire est en place, je charge des variables dans postgres via ma liste, et ces variables sont ensuite mixées par des triggers ( qui fonctionnent correctement / calculs et stockage résultats en base OK)

Mais lorsque je valide mon formulaire, tout se passe correctement, je retrouve mes variables et mes résultats dans ma base, sauf que dans mon formulaire ...
- mes variables s'updatent bien
- mes résultats ( calculs par triggers) ne s"updatent pas, il faut que je redéploie l'appli pour que ceux çi soient mis à jour.

Ma base est pourtant mise à jour à chaque validation je ne comprends pas :
- ou mon formulaire peut aller chercher des résultats invalides puisqu'ils n'existent plus dans ma base lorsque je l'ouvre de nouveau sans relancer l'appli ?
- S'agit il d'un problème de trigger ou de validation du formulaire ?

QQ lignes de codes sans passer par mon choix liste pour faire plus simple
JSP
 <html:form action="/create.do"
 method="post"
onsubmit="disabledOnSubmit(this);return validerFormPopup(this);">

// envoi ma variable 1 
<tr>
<td id="variable1"  name="variable1" style ....>
<html:text   property="variable1" styleId="variable1"></html:text>
</td>
</tr>
//// envoi ma variable 2
 <tr>
<td id="variable2"  name="variable2" style ...>
<html:text  property="coefmargearticle" styleId="variable2"></html:text>
<td>
</tr>
/////// appel du résultat apres calcul trigger
<tr>
<td id="resultat" name="resultat" style ...>
 <INPUT type="resultat" id="resultat" name="résultat" value="" >
</td>
//////// validation du formulaire
<tr>
 <td>
<html:submit  styleId="submit" onclick="return loadSubmit();"><bean:message key="title.button.confirm"></bean:message></html:submit>
</td>
 </tr>
</html:form>

Définition du trigger = before + insert + update
( toutes les manip du trigger se font correctement)

faut il que je fasse des triggers différents pour entrer les variables et faire les calculs ?
Bref des interrogations multiples pour savoir par ou prendre le probleme.

SOLUTION EN SCRIPT ?
J'ai aussi essayé en js
<script type="text/javascript">
function Calcul() {
var variable1 = document.getElementById('variable1').value;
var variable2 = document.getElementById('variable2').value;
var resultat = document.getElementById('resultat').value;
if(variable1 != "" && variable2 != "" ) {
var  resultat = parseFloat(variable1) / parseFloat(variable2)  ;
document.getElementById(' resultat').value = resultat.toFixed(2);
} else {
alert('ça va pas');
}
</script>

Cela fait un peu long, mais si vous pouvez m'éclairer même partiellement
ça m'aiderait.
J'espère avoir été à peu prés clair dans mes explications
Merci bien
Messages postés
32434
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
347
Bonjour,
C'est une "nouvelle" question.
Tu aurais donc du ouvrir une nouvelle discussion.

(au passage.. j'ai édité ton message pour y mettre les balises de code).

Pour ce qui est de ton souci :
Mais lorsque je valide mon formulaire, tout se passe correctement, je retrouve mes variables et mes résultats dans ma base, sauf que dans mon formulaire ...
- mes variables s'updatent bien
- mes résultats ( calculs par triggers) ne s"updatent pas, il faut que je redéploie l'appli pour que ceux çi soient mis à jour.
Les calculs se faisant en BDD (via tes triggers) les champs ne se metteront à jour que si tu vas LIRE le contenu de ta bdd pour en récupérer les valeurs.

chose qui est surement faite lorsque tu "redéploies l'appli". :
il faut que je redéploie l'appli pour que ceux çi soient mis à jour
A ce moment tu fais surement une interrogation de ta bdd... et ainsi les données sont actualisées dans ton formulaire.
Messages postés
72
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
11 juillet 2015
1
Excuses moi pour n'avoir pas ouvert une nouvelle discussion, j'y ferai attention la prochaine fois, je crois que je vais devenir un habitué, idem pour les balises de codes, je viens seulement de voir l'icône à droite..
je te remercie de l'avoir fait à ma place.

Ton explication me donne de la réflexion, je comprends mieux mais cela m'engage vers une autre interrogation.

Pourquoi alors lorsque j'enregistre une donnée "brute"
comme <html:text property="coefmargearticle" styleId="variable2"></html:text>
elle s'update puisque la valeur actualisée est aussitôt récupérée par mon formulaire.

A contrario, lorsqu'il s'agit de récupérer une donnée calculée/ trigger
comme <INPUT type="resultat" id="resultat" name="résultat" value="" >
cela ne marche pas ?

C'est pourtant la même base qui est alors interrogée au même momment, et puis toutes les données brutes ou calculées sont mises à jour en même temps ?
Mon formulaire est capable de relire des données "brutes" actualisées mais pas des données recalculées ..

Il y a autre chose que je ne sais pas.
Je dois creuser pourquoi mon formulaire ne veut pas récupérer ou ne peut pas lire seulement ces données "triggers" , il y a une raison à cela .

merci bien encore
daniel