• User Attivo

    Conservazione dati in radiobutton

    Salve a tutti.
    ho un form in cui per conservare il valore dei campi ho attivato delle variabili di sessioni.
    Per esempio in un elenco select uso questa istruzione

    <select name="provincia" id="provincia" value="<?php echo $_SESSION['provincia']?>">
    <option <?php if ($_SESSION['provincia'] == "Agrigento") echo "selected" ?>>Agrigento</option>
    ...........
    </select>

    Per un campo di testo uso questa istruzione

    <input name="nome" type="text" id="nome" value="<?php echo $_SESSION['nome']?>" size="30" maxlength="100" />

    Ma per un campo radiobutton come mi devo comportare?
    Attualmente il codice è questo:

    <input name="gratuita" type="radio" value="si" />
    <input name="gratuita" type="radio" value="no" />

    Come posso associare una variabile di sessione?


  • User Attivo

    Il problema lo potresti risolvere molto più semplicemente che attivando una sessione...

    Se il form ha method POST le variabili del form inviate saranno:

    $_POST['id_del_campo']

    In cima alla pagina inserisci per ogni voce:

    if (isset($_POST['id_del_campo']))
    $id_del_campo = mysql_real_escape_string($_POST['id_del_campo']);
    else
    $id_del_campo = "";

    e poi nel codice del form metti

    value="<?=$id_del_campo?>"

    L'uso di mysql_real_escape_string($_POST['id_del_campo']) ha senso solo se nella pagina poi lanci delle query a un database mysql in cui usi la variabile e impedisce che uno possa mettere nel campo del codice per exploitare la query, altrimenti puoi anche mettere solo $_POST['id_del_campo']

    Se il method è GET cambi $_POST in $_GET... e le variabili di sessione le usi solo se effettivamente ti serve mantenere uno stato lungo come nel caso di un login...

    keiske

    edit:

    oibò, ho letto ora del radio button... beh per quello è un po' diverso... un radio button è selezionato o meno a seconda che ci sia un "checked" in fondo al tag (e la stessa cosa può valere per disabled per le varie voci)

    Io personalmente uso il valore del radio button che viene passato... nel tuo caso se al momento dell'invio del form è selezionato il primo il valore è si altrimenti è no...

    Stessa cosa all'inizio (ma nell'input devi mettere id="gratuita" anche)

    if (isset($_POST['gratuita']))
    $gratuita = mysql_real_escape_string($_POST['gratuita']);
    else
    $gratuita = "";

    Poi sotto metti:

    if($gratuita == "no") {
    $check1 = "";
    $check2 = "checked";
    } else {
    $check1 = "checked";
    $check2 = "";
    }

    E nel form metti

    <input name="gratuita" id="gratuita" type="radio" value="si" <?=$check1?>/>
    <input name="gratuita" id="gratuita" type="radio" value="no" <?=$check2?>/>

    In questo modo quando si carica la pagina dopo l'invio se il valore passato era si vuol dire che era segnato il primo radio... e allora viene scritto al volo il valore "checked" nella prima riga e niente nella seconda... e viceversa... se la variabile non c'è perchè la pagina è caricata senza inviare il form l'if sopra applica l'else e ti imposta di default il checked sul "si"

    L'alternativa è ciclare in DOM il radiobutton per vedere che voce è "segnata" dopo aver memorizzato il valore, ma io ho una particolare idiosincrasia con i cicli su radio e option che prima o poi dovrò colmare...

    keiske


  • User Attivo

    Ho fatto come mi hai detto e funziona.
    Mille grazie!!!!!

    Quindi mi sconsigli si usare le sessioni. Effettivamente nel caso specifico non mi servono quindi le posso baipassare.

    Ancora grazie