Comment extraire la valeur d'un bouton radio san envoi GET ou POST ?

cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010 - 20 févr. 2010 à 02:34
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 21 févr. 2010 à 07:01
Salut!

J'ai un formulaire de réservation pour un restaurant avec deux boutons radio (valeurs "Midi" et "Soir"). Dessous j'ai deux listes déroulantes pour sélectionner l'heure de la réservation. Je souhaite que la plage horaire du menu déroulant soit différente en fonction que l'utilisateur ai choisi "Midi" ou "Soir".

J'ai essayé ceci :
<tr>
    <td class="tabLabel"><label>Service : </label></td>	
    <td class="tabInput">
         Midi 
         Soir
    </td>
    <td class="tabError"> </td>
</tr>
<tr>
    <td class="tabLabel"><label>Heure de réservation</label>
</td>
    <td class="tabInput">
        <select title="HrReserv" name="HrReserv" maxlength="2">
<option class="alignSelectInput" value="0" selected="hh">hh</option>
<?php
$testRadio=$_POST['Service']
switch($testRadio){
case 'Midi':
echo("<option class=\"alignSelectInput\" value=\"0\" selected=\"hh\">hh</option>\n");
echo("<option class=\"alignSelectInput\" value=\"11\">11</option>\n");
echo("<option class=\"alignSelectInput\" value=\"12\">12</option>\n");
echo("<option class=\"alignSelectInput\" value=\"13\">13</option>\n");
echo("<option class=\"alignSelectInput\" value=\"14\">14</option>\n");
break;
case 'Soir' :
echo("<option class=\"alignSelectInput\" value=\"0\" selected=\"hh\">hh</option>\n");
echo("<option class=\"alignSelectInput\" value=\"19\">19</option>\n");
echo("<option class=\"alignSelectInput\" value=\"20\">20</option>\n");
echo("<option class=\"alignSelectInput\" value=\"21\">21</option>\n");
echo("<option class=\"alignSelectInput\" value=\"22\">22</option>\n");
break;
}
?>
</select>,
:,
<select title="MnReserv" name="MnReserv" maxlength="2">
<option class="alignSelectInput" value="0" selected="mm">mm</option>
<option class="alignSelectInput" value="0">00</option>
<option class="alignSelectInput" value="15">15</option>
<option class="alignSelectInput" value="30">30</option>
<option class="alignSelectInput" value="45">45</option>
</select>



Vu que je n'ai pas fait de POST, cela ne risque pas de fonctionner c'est sur Le soucis c'est que je ne veux pas faire d'envoi vers une autre page vu le but de mon code serait de faire une modification "en temps réel" de la page en modifiant les valeurs des options du bouton radio.

Première question : Est-ce possible? (si ça se trouve php ou Javascript ne peuvent pas me permettre de faire ça)

Deuxième question : Si oui, comment passer outre le problème de l'envoi des valeurs et les récupérer de suite? (ou bien faire un évènement pour savoir quel bouton est selectionné)

Avez vous une piste?

6 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
20 févr. 2010 à 07:05
Alors replaçons ta question dans son contexte.
Tu génères via PHP une page HTML (avec pourquoi pas du Javascript..), donc PHP n'intervient plus après l'affichage.
Tu veux obtenir le résultat de ton bouton sans faire de GET ou POST.. donc sans faire appel au serveur, donc à PHP.
Donc ma question, c'est: Tu ne veux pas faire appel au serveur donc à PHP pour répondre à ton besoin (légitime..). Alors pourquoi poses-tu la question sur le forum PHP ?? LOL !!
Non je plaisante mais au delà de ça, essaie de te pencher sur les bases d'un système client-serveur.. et là tu aurais compris que ton problème doit être présenté.. dans le forum Javascript.
Autre piste: JQuery.. Mais le J c'est pour Javascript.
Bonne recherche..
S.
0
cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010
20 févr. 2010 à 16:18
Pas tout à fait,

Ce que je voulais faire (j'ai trouvé une autre solution) c'est faire la vérification sans passer par du JavaScript (qui est parfois désactivé chez les particuliers). Bien entendu une fois le formulaire complété je l'envoie bien quelque part (sinon à quoi me servirait-il?)

Mais tu as raison sur un point : j'ai en effet perdu de vue pendant la conception de ma page le rôle "serveur" du php. Il est impossible de faire des vérifications en temps réel en php pour la bonne raison qu'il ne se trouve pas sur le poste client. J'en suis arrivé à la même conclusion cette nuit ce qui m'a permis de modifier la conception de la page et ainsi de régler (en tout cas c'est en bonne voie) mon problème.

Par contre cela occasionne une autre difficulté : comment s'assurer l'envoi de données correctes si le JavaScript est désactivé chez l'utilisateur? Plus de contrôle des saisies donc envoie possible de valeurs erronées... mais je ne vois pas de solutions possibles.
0
ultimacsplayer Messages postés 29 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 16 juin 2010
21 févr. 2010 à 01:48
Bonsoir, voici une idée de code qui pourrait t'intéresser,
si tu veux voir ce que ça donne en live: http://www.btconcept.fr/test_bouton_radio.php


<script>
function afficher(service){
if(service=="midi"){
document.getElementById('Service11').style.display="block";
document.getElementById('Service12').style.display="block";
document.getElementById('Service13').style.display="block";
document.getElementById('Service14').style.display="block";
document.getElementById('Service19').style.display="none";
document.getElementById('Service20').style.display="none";
document.getElementById('Service21').style.display="none";
document.getElementById('Service22').style.display="none";
}else{
document.getElementById('Service11').style.display="none";
document.getElementById('Service12').style.display="none";
document.getElementById('Service13').style.display="none";
document.getElementById('Service14').style.display="none";
document.getElementById('Service19').style.display="block";
document.getElementById('Service20').style.display="block";
document.getElementById('Service21').style.display="block";
document.getElementById('Service22').style.display="block";
}
}
</script>
<label>Service : </label>,
Midi
Soir,
,

----

<label>Heure de réservation</label>,
<table>
----,
<select title=\"HrReserv\" name=\"HrReserv\" maxlength=\"2\">
<option class=\"alignSelectInput\" value=\"0\" selected=\"hh\">hh</option>
<option id='Service11' value=\"11\">11</option>
<option id='Service12' value=\"12\">12</option>
<option id='Service13' value=\"13\">13</option>
<option id='Service14' value=\"14\">14</option>
<option id='Service19' style='display:none' value=\"19\">19</option>
<option id='Service20' style='display:none' value=\"20\">20</option>
<option id='Service21' style='display:none' value=\"21\">21</option>
<option id='Service22' style='display:none' value=\"22\">22</option>
</select>
</td>
:,
<select title="MnReserv" name="MnReserv" maxlength="2">
<option class="alignSelectInput" value="0" selected="mm">mm</option>
<option class="alignSelectInput" value="0">00</option>
<option class="alignSelectInput" value="15">15</option>
<option class="alignSelectInput" value="30">30</option>
<option class="alignSelectInput" value="45">45</option>
</select>




www.BTconcept.fr
www.BoutiquePrice.com
0
ultimacsplayer Messages postés 29 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 16 juin 2010
21 févr. 2010 à 02:03
Tu peux rajouter un bout de code pour : Si 11h est sélectionné par exemple, et que la personne clique sur Soir, alors l'option HH est sélectionnée, au lieu de rester sur 11h.
Si ça t'interesse, voici le code:


function afficher(service){
document.getElementById('hh').selected=" selected ";
if(service=="midi"){
...voir plus haut...
}else{
...voir plus haut...
}

}

Sans oublier de rajouter un id à l'option "hh":



<option value="0" id="hh" selected="hh">hh</option>



C'est un petit détail mais c'est un finition nécessaire..

www.BTconcept.fr
www.BoutiquePrice.com
0

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

Posez votre question
cs_Krasha Messages postés 36 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mars 2010
21 févr. 2010 à 03:06
Excellent ! Je vais tester ce code et je vous tiens au courant.

Merci !
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
21 févr. 2010 à 07:01
Je n'ai pas lu le code d'UltimacsPlayer mais je peux rajouter deux choses:
- La proportion des internautes ayant coupé leur javascript est inférieur à 0,5% donc je te laisse imaginer le temps que tu perds à cogiter sur le sujet par rapport au gain potentiel. Au pire tu leur dis que le site est inaccessible à cause de cela et qu'ils se débrouillent.
- Que faire s'ils ne cochent rien et s'ils valident ? C'est là que PHP entre en jeu, il vérifie et revient le cas échéant sur cette même page mais en affichant un petit message d'erreur.
S.
0