Newsgroup: it.comp.www.php
Titolo: radio button

Ciao it.comp.www.php,
  si  può impostare forzandolo un radio button? mi spiego, se da pag 2
  ho  un form che con il BACK mi porta a pag 1 e mi passa le variabili
  appena ricevute da pag 1 e in pag 1 ho dei radio button posso far si
  che  risulti  selezionato il valore che gli ho passato di rimando da
  pagina 2?
-- 
I migliori saluti,                 Scrivi a:
 .:Alias:.                  alias2k at libero dot it


Sě, quando stampi il codice relativo al radio button fai una cosa del
genere:
if ($var_radio_button) echo "<input type=\"radio\" name=\"var_radio_button\"
value=\"$var_radio_button\" checked>"; // stampo il radio button selezionato
else echo "<input type=\"radio\" name=\"var_radio_button\"
value=\"$var_radio_button\">"; // stampo il radio button non selezionato
ovvero se precedentemente avevi selezionato il radio button (in questo
esempio con nome var_radio_button) allora lo ristampi selezionato (grazie
alla proprietŕ "checked") altrimenti lo stampi non selezionato.
ciao,
stefano.

 value=\"$var_radio_button\">"; // stampo il radio button non selezionato
Personalmente farei cosě:
if ($var_radio_button) $selected = " checked";
echo "<input type=\"radio\" name=\"var_radio_button\" 
value=\"$var_radio_button\"$selected>"; 
-- 
Liuk (lo Steccalecca) - Cavaliere Jedi - Ex allievo della maestra Alkaid
Home Page: 
http://www.fanwars.it
 - Email: 
li...@fanwars.it
"Non vengo da Piacenza per piacervi, né da Lodi per lodarvi:
vengo da Chiavari..."

 value=\"$var_radio_button\"$selected>";
Allora visto che siamo dei puristi:
if ($var_radio_button) $selected = " checked";
else $selected = "";
echo "<input type=\"radio\" name=\"var_radio_button\"
value=\"$var_radio_button\"$selected>";
cosě evitiamo di stampare un eventuale Notice: Undefined variable.
ste

 value=\"$var_radio_button\"$selected>"; 
grazie,  ho  provato  entrambe  le  soluzioni  ed effettivamente fanno
quello  che  avevo  chiesto  l'unica  cosa  come  faccio  poi a fargli
stampare le altre radio buttono non checkate?
ho  provato  con  uno  switch all'interno dell'[if ($var_radio_button)
$selected = " checked";] che mi stampa solo quella checkata poi esce e
all'uscita dello switch però poi dovrebbe essere in grado di stamparmi
in cascata i valori non selezionati ma non ci sono riuscito...
o meglio ci sono riuscito ma mi stampa due volte il valore selezionato
quindi la mia pagina diventa
X valore selezionato
0 valore 1
0 valore 2
0 valore selezionato (non checkato)
0 valore 4
...
 ...
 ho  provato adesso a mettere nello switch, in base a quale è stato il
 valore selezionato, un echo dei valori non selezionati e poi il break
 e  funziona  però  per una cosa teoricamente semiplice come questa mi
 sono venute una quarantina di righe di codice e considerando che devo
 fare  questa  cosa  per domande con anche 16 checkbox o con + domande
 per pagina capite che mi pare una cosa un po' complicata...
c'è un modo più rapido?
--per spiegarmi meglio, il codice è questo:
if ($Your_work) {
       $selected = " checked";
       switch ($Your_work) {
       case 'Acetate':
            echo "<input type=\"radio\" name=\"Your_work\" value=\"$Your_work\"$selected>".$Your_work."<br>";
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Packaging\"> Packaging<BR>";
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Pet Polymers\">PET Polymers<BR>";
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Corporate/staff\">Corporate/staff <BR>";
            break;
       case 'Packaging':
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Acetate\">Acetate<BR>";
            echo "<input type=\"radio\" name=\"Your_work\" value=\"$Your_work\"$selected>".$Your_work."<br>";
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Pet Polymers\">PET Polymers<BR>";
            echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Corporate/staff\">Corporate/staff <BR>";
            break;
       etc etc etc
    }
   }
   else   {
           echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Acetate\">Acetate<BR>";
           echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Packaging\"> Packaging<BR>";
           echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Pet Polymers\">PET Polymers<BR>";
           echo "<INPUT type=\"radio\" name=\"Your_work\" value=\"Corporate/staff\">Corporate/staff <BR>";
    }       
 
--fine codice
  grazie per la pazienza!
  :)


 value=\"$var_radio_button\"$selected>";
questa me gusta e non ci avevo assolutamente pensato!
mi sa che mi ero complicato la vita per nulla!


 value=\"$var_radio_button\"$selected>";
allora: mi succede una cosa strana
ho scritto:
  <?
  if ($Your_work != "")
       $selected = "checked";
       else $selected = "";
 echo $Your_work."<br>"; //controllo il valore della var
 echo"<br> sel=".$selected."<br>"; //controllo lo stato del check
 ?>
<!-- stampo i radio button -->
<INPUT type="radio" name="Your_work" value="Acetate" <? echo $selected; ?>>Acetate<BR>
<INPUT type="radio" name="Your_work" value="Packaging" <? echo $selected; ?>>Packaging<BR>
<INPUT type="radio" name="Your_work" value="PET Polymers" <? echo $selected; ?>>PET Polymers<BR>
<INPUT type="radio" name="Your_work" value="Corporate staff" <? echo $selected; ?>>Corporate staff<br>
che è la soluzione + semplice e veloce che ho trovato
MA
la cosa strana è che quando faccio la stampa di ritorno, il valore che
mi  ritorno  da  pag  2 è corretto infatti quando lo stampo con l'echo
$Your_work  mi  viene  quello scelto però la lista dei radio button mi
stampa  SEMPRE  come valore selezionato l'ultima voce del radio ovvero
la Corporate staff...
per quale arcano motivo? dove ho fatto l'errore?
grazie


 la Corporate staff...
Perchè tu passi la variabile $selected a tutti i radio e l'html prende come
valido l'ultimo radio in ordine di stampa del codice ovvero, nel tuo caso,
"Corporated Staff".
Devi farti un giro di if per vedere quale valore ha Your Work e di
conseguenza assegnare $selected solo al radio corrispondente.
ste

 conseguenza assegnare $selected solo al radio corrispondente.
allora  devo  tornare  alla soluzione di 1 if per ogni campo del radio
oppure uno switch complessivo per tutta la domanda!?
ad es
if (var != " ")
selected ="checked"
switch var
       case 'valore1':
       stampa il 1° radio checked
       stampa gli altri radio non checked
       break
       case 'valore2':
       stampa il 2° radio checked
       stampa gli altri radio non checked
       break
       etc etc
endif
xò è una cosa abbastanza mastodontica...
anche  xè  poi avrò anche dei checkbox con multichoice... e la cosa si
complica ancora di più...
mi  sa  che  gli  stampo  un  qualcosa  del  tipo  "la tua scelta era:
$var_scelta_prima"  e  poi  di nuovo la lista dei radio/check button priva di
selezioni...


 xò è una cosa abbastanza mastodontica...
Io di solito memorizzo tutte le possibili scelte in degl'array (presi magari
da un db mysql o semplicemente da db-txt) in modo da poter usare i cicli
while for e foreach, in tal caso il tuo codice potrebbe diventare:
$array_radio_button=array('scelta1','scelta2','scelta3','scelta4','scelta5',
'scelta6');
if ($Your_Work) {
    foreach ($array_radio_button as $val) {
        if ($Your_Work == $val) stampa il radio checked;
        else stampa il radio non checked:
    }
}
else {
    foreach ($array_radio_button as $val) {
        stampa il radio non checked:
}
ciao,
ste

Ciao,
credo che questo pezzo di codice dovrebbe fare al caso tuo senza usare
il case ed in una forma abbastanza compatta ;)
Il suo funzionamento dovrebbe essere chiaro. La prima riga è opzionale.
Eineki
---8<---8<---8<---8<---
if (!isset($Your_work)) $Your_work="";
$radios = array( "Acetate","Packaging","PET Polymers","Corporate staff");
foreach ($radios as $act) {
 echo '<INPUT type="radio" name="Your_work" value="' .
    $act . '"' . ($Your_work==$act?' checked ':'') .">$act<br/>\n";
}
---8<---8<---8<---8<---
".:Alias:." <alias2k@guarda_nella_firma.invalid> ha scritto nel messaggio
news:52106420654.20030925172507@guarda_nella_firma.invalid...


 }
a volte anche io ho adoperato questa soluzione ma questa volta non era
fattibile  1)  xè il tempo che ho a disposizione è pochissimo 2) xè il
preventivo  e  il  lavoro  iniziale  erano  "normali" cioè non tali da
richiedere troppe perdite di tempo. In realtà il lavoro era già pronto
e  funzionante  ma  solo  ieri  mi  hanno  chiesto  di implementare la
funzione BACK per il questionario (e non era prevista, diciamo così)
Il  test  poi  è  grosso,  sono  11  pagine,  30 domande di cui alcune
veramente  complesse  quindi  la  soluzione  (funzionante)  che  avevo
adottato  fin'ora  andava  bene  se  non  fosse stato per quest'ultima
tegola
comunque  ti  ringrazio  per  l'interessamento  e  per i tuoi preziosi
consigli,  cercherò  di  sistemare  la  cosa  "a modo mio" con qualche
barbatrucco! :)
buon lavoro,


 ---8<---8<---8<---8<---
proprio  nel  momento  in  cui  avevo deciso di cambiare completamente
strada  mi  hai  illuminato  (o  meglio,  mi  hai  proprio  risolto il
problema!)
è  bastato  mettere  un  session_unregister("variabile");  prima della
graffa  di  chiusura  del  foreach  ed  ora oltre a checkarmi i valori
tornati  dalla  pagina  2  adesso mi "sovrascrive" quelli "vecchi" con
quelli nuovi!
GRAZIE MILLE!!!


 GRAZIE MILLE!!!
Prego, niente di che!
 Se per caso "unregistri" Your_work allora ti conviene mettere l'istruzione
subito fuori del foreach, č inutile farlo piů di una volta ;)
Eineki

 Eineki
ehm... è vero, oops...!
