[RESOLU] Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par Austin Russell » 01 mars 2022, 23:05

Bonsoir. Merci pour tes 2 solutions. Même si c'est moins simple, je vais plutôt opter pour la méthode POST.
Le GET me parait moins sécurisé et le NIR étant une donnée de santé, je pense que le POST est plus adapté comme solution.

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par kevin254kl » 21 févr. 2022, 00:48

Oui forcement.
var win = window.open('http://localhost/REE/seances_kine.php', '_self');
win.focus();
Fait un GET et pas un POST donc ta variable avec le $.ajax n'existe pas.

Deux solutions
Tu récupères ta variables avec $_GET
1 - window.open('http://localhost/REE/seances_kine.php?nir=' + nir, '_self');
2 - https://stackoverflow.com/questions/285 ... pt-no-form tu changes la valeur de l'attribut action et tu send le formulaire.

Je pense pour 1 variable le 1 est plus simple.
ps tu peux utiliser un switch plutôt que les elseif https://developer.mozilla.org/fr/docs/W ... nts/switch

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par Austin Russell » 20 févr. 2022, 12:15

Bonjour. Il s'agit bien d'ouvrir différentes pages à partir du clic sur des radiobutton différents, après avoir pour 2 d'entre eux sélectionner une ligne dans une table, qui doit changer de couleur pour se distinguer quand elle est sélectionnée. L'une des données de la ligne, le numéro de sécurité sociale doit ensuite être envoyé à la nouvelle page pour remplir le champ "NIR" correspondant dans le formulaire "épreuve d'effort" ou "séance kiné".

J'ai fait comme tu m'as dit en modifiant un peu les éléments et çà donne çà :

Code : Tout sélectionner

$(document).ready(function(){ $("tr").click(function(){ $(this).addClass('selected').siblings().removeClass('selected'); }); }); window.onload =function() { var sampleForm = document.querySelector('#sampleForm'); sampleForm.addEventListener('submit', function() { event.preventDefault(); var radioChecked = document.querySelector('#sampleForm input[name=choice]:checked').value; if(radioChecked == "patient") { $.ajax({ type: 'POST', url: '/REE/patients.php', success: function(response) { console.log("success"); var win = window.open('http://localhost/REE/patients.php', '_self'); win.focus(); }, error:function(){ console.log("error"); } }); } else if(radioChecked == "efr") { var nir = document.querySelector('.myTable .selected .nir').innerText; $.ajax({ type: 'POST', url: '/REE/efr.php', data: { nir: nir }, //dataType: 'json', success: function(data) { console.log("success"); var win = window.open('http://localhost/REE/efr.php', '_self'); win.focus(); }, error:function(){ console.log("error"); } }); } else if(radioChecked == "skine") { var nir = document.querySelector('.myTable .selected .nir').innerText; $.ajax({ type: 'POST', url: '/REE/seances_kine.php', data: { nir: nir }, dataType: 'json', success: function(data) { console.log("success"); var win = window.open('http://localhost/REE/seances_kine.php', '_self'); win.focus(); }, error:function(data){ console.log("error"); } }); } });
J'arrive à ouvrir mes pages dans le même onglet, mais il y-a encore un truc qui m'échappe.
Le nir du patient sélectionné ne semble pas être récupéré sur la nouvelle page ouverte.
Ai-je oublié quelque-chose dans mes requêtes Ajax ?

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par kevin254kl » 15 févr. 2022, 22:42

Cela dépend si le but est quand je choisis le radio bouton ça me redirige vers le formulaire alors tu peux utiliser cette exemple https://codepen.io/jikail/pen/dyZZyKN
Je colle un événement changement sur chaque radio et quand il est sélectionné j'utilise une fonction (dans ton cas c'est ici tu feras ta redirection)

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par Austin Russell » 15 févr. 2022, 21:20

Juste pour voir si j'ai bien compris. Je dois récupérer le radiobutton sélectionné dans une variable javascript avec un :

var radioChecked = document.querySelector('input[name=nomRadio]:checked').value;

et ensuite je fais un if else ou selon la valeur de radioChecked, je crée une requête ajax différente qui mène vers la page "epreuve_effort.php" ou "seances_kine.php" et envoie la donnée de mon nir ou éventuellement les autres données du patient récupérées depuis mes input imbriqués :

$.ajax({
type: 'POST',
url: 'http://localhost/epreuve_effort.php',
async: false,
data: {},
error:function(data){ }


$.ajax({
type: 'POST',
url: 'http://localhost/seances_kine.php',
async: false,
data: {},
error:function(data){ }

Re: Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par kevin254kl » 13 févr. 2022, 22:39

Hello,

Oui le form va rediriger vers le lien dans l'attribut action.
L'autre façon de faire et de passer par javascript (utilise querySelector au lieu de getElementById) https://www.w3schools.com/jsref/met_html_click.asp un evenement sur ton radio bouton seances_kine tu fais une requête ajax avec les data que tu veux https://developer.mozilla.org/fr/docs/W ... sing_Fetch sur ton script
J'aurais mis un événement click sur le radio bouton

Ouvrir différentes pages à partir du clic sur un radiobutton associé à une ligne sélectionnée dans une table.

par Austin Russell » 13 févr. 2022, 15:59

Bonjour. Pour un site médical à destination d'un pneumologue, je souhaite pouvoir ouvrir deux formulaires différents en fonction du clic sur des radiobutton après avoir sélectionner une ligne d'une table.
Les formulaires servant à créer une nouvelle épreuve d'effort ou une nouvelle séance kiné pour un patient particulier,
je dois d'abord sélectionner les données du patient dans une table, puis en appuyant sur submit, le formulaire doit s'ouvrir en étant pré-rempli avec les données du patient.

Je récupère les variables à envoyer à chaque formulaire via des input imbriqués dans mes td et une fois sur ma page épreuve d'effort, je remplis les champs de mon formulaire épreuve d'effort avec des variables $_POST et j'aimerais faire la même chose avec un autre radiobutton seances_kine qui ouvrirait une page seances_kine.php et remplirait lle formulaire avec les données du patient sélectionné de la même façon.

Avec un seul radiobutton pour ouvrir le formulaire épreuve d'effort une fois la ligne sélectionnée dans ma table, j'utilisais simplement le paramètre action de la balise form pour diriger vers ma page formulaire épreuve d'effort, mais je ne vois pas comment procéder.

Code : Tout sélectionner

<div id="container" style="display:inline-block;"> <div class="parent1"> <div class="title_choice" class="next_titre" style="width:50px; margin-bottom:0px">Choix</div> <div class="child"> <form id="sampleForm" method="post" action="efr.php"> <fieldset class="parent" style="width:250px" > <div class="choiceBox"> <label for="patientLabel" class="patientLabel"><input type="radio" name="choice" id="patient" name="patient" value="patient" /><div class="labelBox">Patient</div></label><br /><br /><br /><br /> <label for="efrLabel" class="efrLabel"><input type="radio" name="choice" id="efr" name="efr" value="efr" /><div class="labelBox">EFR/Epreuve d'Effort</div></label><br /><br /> <label for="skineLabel" class="skineLabel"><input type="radio" name="choice" id="skine" name="skine" value="skine" /><div class="labelBox">Séance Kiné</div></label><br /><br /> </div> <input type="hidden" value="" id="nom" name="nom" /> <input type="hidden" value="" id="prenom" name="prenom" /> <input type="hidden" value="" id="dateNaissance" name="dateNaissance" /> <input type="hidden" value="" id="adresse" name="adresse" /> <input type="hidden" value="" id="codePostal" name="codePostal" /> <input type="hidden" value="" id="ville" name="ville" /> <input type="hidden" value="" id="sexe" name="sexe" /> <input type="hidden" value="" id="nir" name="nir" /> <input type="hidden" value="" id="diagnostic" name="diagnostic" /> <input type="hidden" value="" id="rpps" name="rpps" /> <!--<button id="btnSubmit" onclick="submitForms()"><span>Ouvrir</span></button>--> <input type="submit" value="Ouvrir" /> </fieldset> </form> </div> </div> </div> <div class="choice" style="margin-top: 0px; width:50%;"> <div class="child"> <table class="myTable"> <?php $sql = "SELECT * FROM patients WHERE Medecin= ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$_SESSION["RPPS"]]); while($row = $stmt->fetch()) { echo "<tr onclick=\"myFunction(".$row['Nom'].")\">"; echo "<td class=\"nom\"><input type=\"hidden\" value=".$row['Nom']." name=\"nom\">".$row['Nom']."</td>"; echo "<td class=\"prenom\"><input type=\"hidden\" value=".$row['Prenom']." name=\"prenom\">".$row['Prenom']."</td>"; echo "<td class=\"dateDeNaissance\"><input type=\"hidden\" value=".$row['Date_de_naissance']." name=\"dateDeNaissance\">".$row['Date_de_naissance']."</td>"; echo "<td class=\"adresse\"><input type=\"hidden\" value=".$row['Adresse']." name=\"adresse\">".$row['Adresse']."</td>"; echo "<td class=\"codePostal\"><input type=\"hidden\" value=".$row['Code_postal']." name=\"codePostal\">".$row['Code_postal']."</td>"; echo "<td class=\"ville\"><input type=\"hidden\" value=".$row['Ville']." name=\"ville\">".$row['Ville']."</td>"; echo "<td class=\"sexe\"><input type=\"hidden\" value=".$row['Sexe']." name=\"sexe\">".$row['Sexe']."</td>"; echo "<td class=\"nir\"><input type=\"hidden\" value=".$row['NIR']." name=\"nir\">".$row['NIR']."</td>"; echo "<td class=\"diagnostic\"><input type=\"hidden\" value=".$row['Diagnostic']." name=\"diagnostic\">".$row['Diagnostic']."</td>"; echo "<td class=\"medecin\"><input type=\"hidden\" value=".$row['Medecin']." name=\"medecin\">".$row['Medecin']."</td>"; echo "</tr>"; } ?> </table> </div> </div>
Je récupère les variables à envoyer à chaque formulaire via des input imbriqués dans mes td et une fois sur ma page épreuve d'effort, je remplis les champs de mon formulaire épreuve d'effort avec des variables $_POST.

Merci d'avance à qui voudra bien m'apporter son conseil.