Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441

    Input radio, errore nella selezione

    Ciao a tutti , io ho un problema: ho un form con dentro degli input di tipo radio, il nocciolo del problema sta nel fatto che se prima ne seleziono uno di questi e poi però cambio idea selezionandone così un altro vengono spuntati entrambi, perché? Io vorrei che venisse selezionato uno ed uno solo di input, anche se venissero premuti tutti in sequenza, come succede in tutti gli esempi..

    Codice PHP:
    <form action='' method='post'>
        <
    input id='d16' name='e' type='radio' value='e'>
        <
    input id='d16' name='d' type='radio' value='d'>
        <
    input id='d16' name='c' type='radio' value='c'>
        <
    input id='d16' name='b' type='radio' value='b'>
        <
    input id='d16' name='a' type='radio' value='a'>
    </
    form

  2. #2

    Re: Input radio, errore nella selezione

    Devi impostare lo stesso nome per le varie radio button.
    Es.
    codice:
    <input type="radio" name="sesso" value="M" />
    <input type="radio" name="sesso" value="F" />

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Re: Re: Input radio, errore nella selezione

    Originariamente inviato da marcello.colame
    Devi impostare lo stesso nome per le varie radio button.
    Es.
    codice:
    <input type="radio" name="sesso" value="M" />
    <input type="radio" name="sesso" value="F" />
    Esatto!
    Però @andbaz se vuoi raccogliere dati, devi anche pensare che sia un array (a tutti gli effetti lo è) e quindi scrivi:
    codice:
    <input type="radio" name="sesso[]" value="M" />
    <input type="radio" name="sesso[]" value="F" />
    dove le parentesi quadre (ammesse in html) servono a creare in automatico l'indice, tieni anche presente che se devi prendere il valore attraverso un qualsiasi linguaggio lato server, l'http, cioè il protocollo di passaggio dei dati, fa sì che solo il valore dell'elemento "cliccato" sarà presente, ovvero, se fai click su M ti ritroverai un arrai così formato sesso[0] = 'M' e basta, non ci saranno altri elementi nell'array, se cliccavi F avresti avuto solo l'elemento F dell'array, con chiave 0, la chiave sarà sempre e solo 0 (zero) perché di tutti i radio button solo uno può passare il valore, cioè quello cliccato.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Re: Re: Input radio, errore nella selezione

    Originariamente inviato da Marcolino's
    Esatto!
    Però @andbaz se vuoi raccogliere dati, devi anche pensare che sia un array (a tutti gli effetti lo è) e quindi scrivi:
    A che scopo? Comunque verra' inviato un unico valore...
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Re: Re: Re: Re: Input radio, errore nella selezione

    Originariamente inviato da br1
    A che scopo? Comunque verra' inviato un unico valore...
    Perché comunque è visto come un array e quindi ha un indice.
    Mi sono trovato in difficoltà nel validare un gruppo di radiobutton a cui non avevo associato un indice nel nome attraverso i filtri del php.

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Re: Re: Re: Re: Input radio, errore nella selezione

    Originariamente inviato da Marcolino's
    Perché comunque è visto come un array e quindi ha un indice.
    Mi sono trovato in difficoltà nel validare un gruppo di radiobutton a cui non avevo associato un indice nel nome attraverso i filtri del php.
    Stai confondendo sicuramente con i checkbox
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    marco dovresti spiegare quello che hai detto perché la validazione non mi pare c'entri nulla
    inoltre passare un unico valore utilizzando lo stesso nome per i radio presenti è operazione standard che non chiede indici

    illuminaci

  8. #8
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Allora, siccome non mi piace passare per pazzo nonostante le mie affermazioni, ho rifatte alcune prove di pratiche che normalmente uso nel lavoro quotidiano ed ho scoperto che usando il PHP c'è effettivamente differenza tra usare o meno le parentesi quadre o meno.
    Non so se dipenda da come vengano passati i dati dal protocollo http, ho studiato un po' le rfc ma sono troppo astratte e per capire ci vorrebbe troppo tempo.
    così ho realizzata questa provetta qui sotto e i risultati sono interessanti.

    Ecco l'esempio http://stilisticamente.biz/test/prov...adiobutton.php
    Questo il semplice codice:
    Codice PHP:
    <?php
        
    if (filter_has_var(INPUT_POST'invia') && filter_input(INPUT_POST'invia') == 'proviamo') {
            
    $filtro1 = array(
                
    'prova'    =>    array (
                    
    'name' => 'prova',
                    
    'filter' => FILTER_SANITIZE_STRING,
                    
    'flags'  => FILTER_REQUIRE_ARRAY)
            );
            
    $filtro2 = array('prova'FILTER_SANITIZE_STRING);
            
    $risposta1 filter_input_array(INPUT_POST$filtro1);
            
    $risposta2 filter_input_array(INPUT_POST$filtro2);
            
    $risposta3 filter_input(INPUT_POST'prova'FILTER_SANITIZE_STRING);
            echo 
    '<pre>';var_dump($risposta1$risposta2$risposta3);echo '</pre>';
        }
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <body>
    <form method="post" action="#">
        

    <input type="radio" id="a1" name="prova" value="1"><label for="a1">Prova 1</label></p>
        

    <input type="radio" id="a2" name="prova" value="2"><label for="a2">Prova 2</label></p>
        

    <input type="radio" id="a3" name="prova" value="3"><label for="a3">Prova 3</label></p>
        
        <input type="submit" name="invia" value="proviamo">
    </form>
    </body>
    </html>
    Potete provare anche voi, in questo modo il programmino mi ritorna la stringa corretta, cioè:
    risposta1 array(1) {
    ["prova"]=>
    array(1) {
    [0]=>
    string(1) "2"
    }
    }
    risposta2 bool(false)
    risposta3 bool(false)
    Se tolgo le quadre:
    risposta1 array(1) {
    ["prova"]=>
    bool(false)
    }
    risposta2 bool(false)
    risposta3 string(1) "2"
    E' interessante notare come risposta2 non riporta mai il valore giusto e probabilmente era questo che mi aveva indotto a pensare che comunque bisognasse raggruppare i radio button come indici di array.
    Per quanto riguarda i checkbox come dice br1 sappi che qualcunque elemento di form può essere raggruppato in un array, testo, email, checkbox, radiobutton ma anche textarea o select.

  9. #9
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    uhmm... così hai dimostrato "solo" che è possibile creare un indice purché ci siano le parentesi quadre nel nome dell'input (a parte il fatto che nel tuo esempio non ci sono )

    e se invece lo fai normalmente come facciamo tutti, senza questo indice, che ti accade?
    non riesci a stampare il valore? qui qualcosa non torna...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.