Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: script per checkbox

  1. #1

    script per checkbox

    Ciao a tutti!ecco il mio problema:
    ho un file chiamato selezione.php
    in quetso file ho una form (con action=controllo.php) che recupera tutti gli id dei record in una tabella e li assegna come value a un checkbox.il codice è quello riportato appena sotto:

    codice:
    <form method=post action=controllo.php>
    <input type=checkbox name=id[] value=".$row["id"].">
    /*.... altri input in base al numero di record contenuti nella tabella*/
    <input type=submit name=submit value=invia>
    </form>


    il file controllo serve per verificare che venga selezionato almeno un checkbox,e, in caso contrario avvertire l'utente della mancata selezione.
    nel file controllo.php ho inserito il seguente codice:

    codice:
    if ($submit="submit")
    {    if (is_array($id))
         {
               while (list($key,$check_selezionato) = each($id))
               {
               if(isset($check_selezionato))
               print"hai selezionato almeno un checkbox";
               else
               print"devi selezionare almeno un checkbox";
               }
         }
    }


    però così come è scritto non funziona la parte in else (se seleziono almeno un checkbox compare la scritta "hai selezionato almeno un checkbox", se non seleziono niente non viene stampato niente.

    Come posso risolvere?

    Grazie in anticipo a tutti!!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  2. #2
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179

    Re: script per checkbox

    Originariamente inviato da Attaccabottone
    Ciao a tutti!ecco il mio problema:
    ho un file chiamato selezione.php
    in quetso file ho una form (con action=controllo.php) che recupera tutti gli id dei record in una tabella e li assegna come value a un checkbox.il codice è quello riportato appena sotto:

    codice:
    <form method=post action=controllo.php>
    <input type=checkbox name=id[] value=".$row["id"].">
    /*.... altri input in base al numero di record contenuti nella tabella*/
    <input type=submit name=submit value=invia>
    </form>


    il file controllo serve per verificare che venga selezionato almeno un checkbox,e, in caso contrario avvertire l'utente della mancata selezione.
    nel file controllo.php ho inserito il seguente codice:

    codice:
    if ($submit="submit")
    {    if (is_array($id))
         {
               while (list($key,$check_selezionato) = each($id))
               {
               if(isset($check_selezionato))
               print"hai selezionato almeno un checkbox";
               else
               print"devi selezionare almeno un checkbox";
               }
         }
    }


    però così come è scritto non funziona la parte in else (se seleziono almeno un checkbox compare la scritta "hai selezionato almeno un checkbox", se non seleziono niente non viene stampato niente.

    Come posso risolvere?

    Grazie in anticipo a tutti!!

    Io di solito faccio una count dell'array che mi memorizza i checkbox
    Se count > 0 OK
    else print "Selezionane almeno uno";

    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  3. #3
    if ($submit=="submit")
    devi mettere il doppio uguale, altrimenti la considera come un'assagnazione, quindi sempre vera

  4. #4
    Io di solito faccio una count dell'array che mi memorizza i checkbox
    Se count > 0 OK
    else print "Selezionane almeno uno";
    Puoi farmi un'esempio?


    if ($submit=="submit")
    devi mettere il doppio uguale, altrimenti la considera come un'assagnazione, quindi sempre vera
    Ho provato con if ($submit=="submit") e adesso non stampa più neanche se la condizione in if risulta vera.

    Grazie per l'aiuto!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  5. #5
    Inizia ad utilizzare l'array globale $_POST['submi'] anzichè $submit.Se non ti stampa forse perchè $id non è un array

  6. #6
    Inizia ad utilizzare l'array globale $_POST['submi'] anzichè $submit.Se non ti stampa forse perchè $id non è un array
    Ho utilizzato $_POST['submit'] ma il risultato è lo stesso:

    codice:
    if ($_POST['submit']="submit")
    ....resto del codice...


    con un solo "=" nella condizione if stampa solo se if=vero
    con due "==" nella condizione if non stampa nè vero nè falso

    --- Meglio 100 giorni da leone che 1 da pecora ---

  7. #7
    problema risolto!!!
    in questo modo

    l'istruzione print"devi selezionare almeno un checkbox"; l'ho inserita dopo aver chiuso il secondo if cioè quello che controlla che $id sia un array.

    praticamente se $id è un array allora procede con tutto il codice while ecc...

    se non è un array, esegue l'istruzione print"devi selezionare almeno un checkbox";

    ho fatto dei test e funziona!!

    grazie per il supporto!!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  8. #8
    Originariamente inviato da Attaccabottone
    Ho utilizzato $_POST['submit'] ma il risultato è lo stesso:

    codice:
    if ($_POST['submit']="submit")
    ....resto del codice...


    con un solo "=" nella condizione if stampa solo se if=vero
    con due "==" nella condizione if non stampa nè vero nè falso

    Allora se vuoi verificare con una condizione if una variabile se corrisponde ad un valore DEVI obbligatoriamente mettere == se la condizione if($_POST['submit']) non ti stampaquello che vuoi perchè la condizione è falsa, quindi non vengono passati i valori nell'array $_POST. Per prima cosa accertati di avere register_global=off nel php.ini, poi controlla che il form passi i valori alla pagina php. Se vuoi essere più sicuro utilizza
    if(isset($_POST['submit']))

  9. #9
    ok!!

    funziona anche con i tuoi suggerimenti!!
    prima avevo sbagliato io a scrivere $_POST['submit'].

    ho controllato anche il valore register_global=off nel php.ini ed era settato su on.

    Che cosa controlla questo valore?
    Grazie 1000 per l'aiuto!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  10. #10
    E' per un aquestione di sicurezza, prima si prendeva come valore del post o del get in questo modo $variabile, senza sapere la fonte, get o post. Con il register global ad off invece il post crea un arrai chiamato $_POST e il get item $_GET, in questo modo si sa con certezza da dove provengono i dati. COmunque su free-php c'è scritto con più chirezza

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.