+ Rispondi alla Discussione
Risultati da 1 a 9 di 9

Come mantenere selezionato checkbox dopo aver cliccato submit

Ultimo Messaggio di samurai.sette il:
  1. #1
    User
    Data Registrazione
    Dec 2015
    Località
    roma
    Messaggi
    56

    Come mantenere selezionato checkbox dopo aver cliccato submit

    Ciao a tutti. Come da titolo della discussione mi sono posto una domanda.
    Ipotizzando di avere in una pagina php alcuni checkbox ed un submit, come faccio a mantenere i ckeckbox selezionati dopo aver cliccato il bottone submit? Secondo voi è possibile?
    Ciao, grazie mille a tutti.

  2. #2
    Utente Premium
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    218
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Ciao,

    lo stato dei checkbox deve mantenersi per un periodo lungo oppure solamente dopo il submit e basta?

    Nel primo caso hai due possibilità, la prima utilizzando le sessioni, cioè memorizzando le spunte in una o più variabili di sessione al submit, così da averle disponibili nel prosieguo della navigazione.

    Oppure salvando questo valore in un database.

    Nel caso ti servano solo dopo il submit ti basta utilizzare un controllo con isset sulle checkbox.

    Es.

    Codice:
    <input type="checkbox" name="cb1" <?php echo isset($_POST["cb1"]) ? "checked" : "";?>>
    Parliamo di un form dentro un'area riservata o un form contatti? A cosa ti serve realmente?
    Sviluppo siti web dinamici e gestionali | Flaviobiscaldi.it

  3. #3
    User
    Data Registrazione
    Dec 2015
    Località
    roma
    Messaggi
    56
    Ciao flaviors200, grazie mille per avermi risposto.
    La mia pagina .PHP è strutturata in questo modo:
    Codice PHP:
    <html>
        <head></head>
        <body>
            <form method="post">
                <input type="checkbox" name="check" value="Scelta1"/> Scelta1
                <input type="checkbox" name="check" value="Scelta2"/> Scelta2
                <input type="checkbox" name="check" value="Scelta3"/> Scelta3
                <input type="checkbox" name="check" value="Scelta4"/> Scelta4
                <input type="submit" name="ok" value="Fai la tua scelta" />
            </form>
            <?php
                
    if (isset ($_POST['ok']))
                {
                    echo 
    $_POST['check'];
                }
            
    ?>
        </body>
    </html>
    Quello che vorrei fare è questo: quando un utente seleziona uno (o anche più di uno) dei quattro checkbox e clicca il submit "ok" vorrei che i checkbox scelti rimanessero selezionati.
    Ho letto che bisogna utilizzare le sessioni ma nessuno spiega in che modo. Mi potresti dare qualche dritta? Te ne sarei infinitamente grato.
    Ciao, grazie mille

  4. #4
    Utente Premium
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    218
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Ciao,

    ho modificato il tuo codice, dai un'occhiata https://pastebin.com/BYPTWnr2

    Ho anche aggiunto un array, così se vuoi inserire più checkbox ti basterà aggiungerle all'array.

    Tieni presente che la variabile di sessione ha un tempo di vita che puoi impostare nel php.ini, ad ogni modo scaduto tale tempo o se l'utente chiude il browser la variabile "muore".

    Se vuoi fare una cosa permanente devi utilizzare la memorizzazione su file o meglio ancora su database. I cookie potrebbero andare anche bene ma non sono una soluzione affidabile.
    Sviluppo siti web dinamici e gestionali | Flaviobiscaldi.it

  5. #5
    User
    Data Registrazione
    Dec 2015
    Località
    roma
    Messaggi
    56
    Ciao flaviors200, grazie per la risposta e scusa se non ho risposto subito ma questa settimana sono stato piuttosto impegnato con il lavoro.
    Ho provato al codice che mi hai postato ma non funziona esattamente come vorrei. Alcune volte il checkbox che seleziono mi resta selezionato ma altre volte no...

  6. #6
    Utente Premium
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    218
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Ciao samurai,

    sposta queste righe

    Codice PHP:
    if (isset ($_POST['ok']) && isset($_POST['check'])) {
        
    $_SESSION['check'] = $_POST['check'];

    in alto subito dopo session_start()

    Codice PHP:
    session_start();

    if (isset (
    $_POST['ok']) && isset($_POST['check'])) {
        
    $_SESSION['check'] = $_POST['check'];

    Sviluppo siti web dinamici e gestionali | Flaviobiscaldi.it

  7. #7
    User
    Data Registrazione
    Dec 2015
    Località
    roma
    Messaggi
    56
    Ciao flaviors200, grazie mille per l'aiuto ma sono riuscito a risolvere senza utilizzare le sessioni o i cookie.
    Ho provato questo altro sistema e mi funziona benissimo (forse non è una soluzione molto elegante...)
    Codice PHP:
    <html>
        <head></head>
        <body>
            <form method="post">
                <input type="checkbox" name="check[]" value="Scelta1" <?php if(isset($_POST['check']) && is_array($_POST['check']) && in_array("Scelta1"$_POST['check'])) echo 'checked="checked"'?> /> Scelta1
                <input type="checkbox" name="check[]" value="Scelta2" <?php if(isset($_POST['check']) && is_array($_POST['check']) && in_array("Scelta2"$_POST['check'])) echo 'checked="checked"'?> /> Scelta2
                <input type="checkbox" name="check[]" value="Scelta3" <?php if(isset($_POST['check']) && is_array($_POST['check']) && in_array("Scelta3"$_POST['check'])) echo 'checked="checked"'?> /> Scelta3
                <input type="checkbox" name="check[]" value="Scelta4"<?php if(isset($_POST['check']) && is_array($_POST['check']) && in_array("Scelta4"$_POST['check'])) echo 'checked="checked"'?> /> Scelta4
                <input type="submit" name="ok" value="Fai la tua scelta" />
            </form>
            <?php
                
    if (isset ($_POST['ok']))
                {
                    
    // codice da eseguire ...
                
    }
            
    ?>
        </body>
    </html>
    Ultima modifica di samurai.sette; 31-10-19 alle 19:38

  8. #8
    Utente Premium
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    218
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Bene mi fa piacere che hai risolto, ti faccio solo notare che l'ultimo codice che hai postato ha la stessa logica di quello che ti ho linkato, con la sola differenza che tu utilizzi direttamente l'array $_POST['check'].

    Io ho copiato il contenuto di questo array in una variabile di sessione, così da avere i valori memorizzati per tutta la sessione, anche perché è questo che avevo inteso volessi realizzare.

    La condizione

    Codice PHP:
    is_array($_POST['check']) 
    la puoi rimuovere in quanto $_POST['check'] è un array, è sufficiente controllare che sia inizializzato tramite isset()
    Sviluppo siti web dinamici e gestionali | Flaviobiscaldi.it

  9. #9
    User
    Data Registrazione
    Dec 2015
    Località
    roma
    Messaggi
    56
    Ciao flaviors200, vorrei provare a "complicare" un pochino il tutto.
    Nella situazione iniziale inserivo i checkbox direttamente in HTML e con il tuo aiuto sono riuscito a mantenere selezionato i checkbox dopo aver cliccato su un submit.
    Adesso mi sorge questa domanda: se i checkbox li inserisco tramite l'utilizzo di PHP, cosa cambia?
    Faccio questo esempio:
    Codice PHP:
    <html>
        <head></head>
        <body>
            <form method="post">
                <?php
                    
    for ($i 1$i <= 10$i ++)
                    {
                        echo 
    '<input type="checkbox" name="check[]" value="$i" />' $i;
                    }
                
    ?>
                <input type="submit" name="ok" value="Clicca qui" />
            </form>
        </body>
    </html>
    In questo caso come dovrei modificare il codice?
    Ciao.

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.