Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Controllo campi radio

  1. #1

    Controllo campi radio

    Ciao a tutti, sono nuova del php ma dovendo fare un lavoretto semplice che prevede la verifica di un campo radio ho preso un pezzo di codice di esempio e me lo sono modificata.

    Per funzionare funziona, e' banalissimo, infatti se non selezioni nulla ti rimanda sulla stessa pagina lasciando in rosso la parola Genere, se selezioni qualcosa allora Genere diventa nero e ti propone il pulsante per passare alla pagina successiva.

    Potete suggerirmi come migliorare il codice e fare in modo che l'utente non debba cliccare 2 volte: la prima per la verifica e la seconda volta per procedere oltre?

    Insomma vorrei che se un utente seleziona subito qualcosa, cliccando passi alla seconda pagina immediatamente....

    Ciao e grazie!!



    <html><head><title>Verifica</title></head>

    <?PHP

    // ASSEGNO AI CAMPI IL VALORE UNCHECKED

    $male_status = 'unchecked';
    $female_status = 'unchecked';


    // ASSEGNO AI CAMPI IL VALORE CHECKED SE SELEZIONATI

    if (isset($_POST['Submit1'])) {


    $selected_radio = $_POST['gender'];

    if ($selected_radio == '1') {
    $male_status = 'checked';

    }
    else if ($selected_radio == '2') {
    $female_status = 'checked';
    }
    }

    // RIMANDO UTENTE STESSA PAGINA SE CAMPI NON SELEZIONATI


    if ($male_status == 'unchecked' and $female_status == 'unchecked' ){
    $form = 'radioButton.php';
    $invio = "Verifica se hai inserito i dati correttamente";
    }

    // RIMANDO UTENTE PAGINA SUCESSIVA SE I CAMPI SONO SELEZIONATI

    else {
    $form = 'radioButton2.php';
    $invio = "Dati corretti passa alla seconda pagina";
    }
    ?>

    <body>
    <FORM NAME ="form1" METHOD ="POST" ACTION ="<?PHP print $form ?>"><?PHP if ($male_status == 'unchecked' and $female_status == 'unchecked' ) { echo "<font color='red'>"; } ?> Genere:</font>
    <INPUT TYPE = 'Radio' Name ='gender' value= '1' <?PHP print $male_status; ?>>Male
    <INPUT TYPE = 'Radio' Name ='gender' value= '2' <?PHP print $female_status; ?>>Female



    <INPUT TYPE = "Submit" Name = "Submit1" VALUE = "<?PHP print $invio ?>">
    </FORM>
    </body></html>

  2. #2
    Va anche bene un suggerimento su un controllo qualsiasi al form radio, basta che sia possibile passare alla pagina successiva se qualcosa e' selezionato (e pertanto tutto e' ok)

    Oppure un suggerimento per modifcare queste 3 righe:

    // RIMANDO UTENTE PAGINA SUCESSIVA SE I CAMPI SONO SELEZIONATI

    else {
    $form = 'radioButton2.php';
    $invio = "Dati corretti passa alla seconda pagina";
    }

    facendo in modo faccia un redirect direttamente alla pagina radioButton2.php mentre arttualmente 'utente deve cliccare il pulsante per una seconda volta (la prima per il controllo, la seconda per passare alla pagina dopo se tutto e' ok).

    ho provato con : header("Location: radioButton2.php");

    ma ricevo il classico "Cannot add/modify header information" perche' passo dati prima del redirect, ho letto che dovrei bufferizzarli per non avere il problema, ma non so dove partire.

    Un aiutino? Grazie...

  3. #3
    Per adesso l'ho risolta usando l'header e portandomi le variabili nella pagina seguente con la sessione.
    Funziona bene mi sembra.

    Tuttavia avendo oltre 40 (e' per un quiz scolastico) domande avrei preferito non scrivere centinaia di righe di controllo magari assolutamente inutili etc etc....

    Come dicono quelli di striscia, se qualcuno ha qualcosa da commentare per migliorare io sono qua (e ringrazio).
    Ciao.


    <?PHP

    // METTO VARIBILI NELLA SESSIONE

    session_start();
    $_SESSION['gender'] = $_POST['gender'];
    $_SESSION['alto'] = $_POST['alto'];


    // ASSEGNO A TUTTI I CAMPI IL VALORE UNCHECKED

    $gender1_status = $gender2_status = $alto1_status = $alto2_status = 'unchecked';


    // ASSEGNO AI CAMPI IL VALORE CHECKED SE SELEZIONATI

    if (isset($_POST['Submit1'])) {

    $selected_radio = $_POST['gender'];
    if ($selected_radio == '1') {$gender1_status = 'checked';}
    else if ($selected_radio == '2') {$gender2_status = 'checked';}

    $selected_radio = $_POST['alto'];
    if ($selected_radio == '1') {$alto1_status = 'checked';}
    else if ($selected_radio == '2') {$alto2_status = 'checked';}
    }


    // RIMANDO UTENTE PAGINA SUCESSIVA SE I CAMPI SONO SELEZIONATI

    if (
    ($gender1_status == 'checked' || $gender2_status == 'checked') and
    ($alto1_status == 'checked' || $alto2_status == 'checked')
    )

    { header ( "Location: radioButton2.php" ); }


    // RIMANDO UTENTE NELLA STESSA PAGINA SE QUALCHE CAMPO NON E' SELEZIONATO

    else {
    $form = 'radioButton.php';
    $invio = "Verifica se hai inserito i dati correttamente";
    }

    ?>

    <html><head><title>Verifica</title></head>
    <body>
    <FORM NAME ="form1" METHOD ="POST" ACTION ="<?PHP print $form ?>">
    <?PHP if ($gender1_status == 'unchecked' and $gender2_status == 'unchecked' ) { echo "<font color='red'>"; } ?> Genere:</font>
    <INPUT TYPE = 'Radio' Name ='gender' value= '1' <?PHP print $gender1_status; ?>>Male
    <INPUT TYPE = 'Radio' Name ='gender' value= '2' <?PHP print $gender2_status; ?>>Female



    <?PHP if ($alto1_status == 'unchecked' and $alto2_status == 'unchecked' ) { echo "<font color='red'>"; } ?> Altezza:</font>
    <INPUT TYPE = 'Radio' Name ='alto' value= '1' <?PHP print $alto1_status; ?>>Si
    <INPUT TYPE = 'Radio' Name ='alto' value= '2' <?PHP print $alto2_status; ?>>No



    <INPUT TYPE = "Submit" Name = "Submit1" VALUE = "<?PHP print $invio ?>">
    </FORM>
    </body></html>

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.