Visualizzazione dei risultati da 1 a 6 su 6

Discussione: checkbox

  1. #1

    checkbox

    Vi chiedo scusa ma ho un lapsus, quindi mi sono bloccata e non riesco ad andare avanti!!!
    Devo far in modo che possa essere modificata la sede legata all'utente.
    Per questo motivo visualizzo tutte le sedi a disposizione con a fianco il rispettivo checkbox che è spuntato soltanto se è quello legato all'utente. (un utente può avere da un minimo di una sede ad un massimo di sei, cioè tutte).
    Avevo provato a chiamare i 6 checkbox con lo stesso name='sede' perchè avevo letto qui che una volta richiamata la variabile sede nella pagina successiva si sarebbe ottenuta una stringa che riportava tutti i valori dei campi checkati separati da virgola...ma come ho potuto verificare questo non avviene!
    Allora ho provato a dare ad ogni checkbox un nome diverso = alla sigla della provincia (es.FE,MC, ecc...) così nella pagina successiva ho richiamato singolarmente ogni checkbox con la brutta sorpresa che se la cassella non è selezionata il valore non passa e quindi non trova la variabile che richiamo.
    Ho aggirato il problema inserendo:
    Codice PHP:
    if(isSet($_POST['AN'])){
                        
    $AN=$_POST['AN'];
                        echo(
    "ANCONA = ".$AN."
    "
    );
                    } 
    Non esiste una soluzione migliore?
    Spero di essermi spiegata in qualche modo!
    Grazie
    Sara

  2. #2
    Così ottieni un array contenente i valori delle varie checkbox:

    codice:
    <input type="checkbox" name="sede[]" value="Sede 1" />Sede 1
    
    <input type="checkbox" name="sede[]" value="Sede 1" />Sede 2
    
    ...
    <input type="checkbox" name="sede[]" value="Sede N" />Sede N
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Questo è il mio codice:
    Codice PHP:
    if(in_array('AN',$sede_utente)){ //controllo se nell'array $sede_utente è presente AN
    echo("<tr><td><input name='AN' type='checkbox' value='AN' checked='checked'/> Ancona </td></tr>"); //se è presente lo visualizzo checkato
    }else{
    echo(
    "<tr><td><input name='AN' type='checkbox' value='AN'/> Ancona </td></tr>");
    //altrimenti lo visualizzo non checkato 
    tu dici che al posto di name='AN' dovrei mettere name='sede[]'??
    Ora ci provo...speriamo bene...

  4. #4
    Codice PHP:
    if(in_array('AN',$sede_utente)){
    echo(
    "<tr><td><input name='sede[0]' type='checkbox' value='AN' checked='checked'/> Ancona </td></tr>");
    }else{
    echo(
    "<tr><td><input name='sede[0]' type='checkbox' value='AN'/> Ancona </td></tr>");
    }
    if(
    in_array('FE',$sede_utente)){
    echo(
    "<tr><td><input name='sede[1]' type='checkbox' value='FE' checked='checked'/> Fermo </td></tr>");
    }else{
    echo(
    "<tr><td><input name='sede[1]' type='checkbox' value='FE'/> Fermo </td></tr>");

    nella pagina successiva lo richiamo così:
    Codice PHP:
    $sede[]=$_POST['sede'];
    var_dump($sede); 
    Il risultato che attengo è questo:
    array(1) { [0]=> array(6) { [0]=> string(2) "AN" [1]=> string(2) "FE" [2]=> string(2) "MC" [3]=> string(2) "PG" [4]=> string(2) "PS" [5]=> string(2) "TR" } }

    Perfetto...il problema è che quando vado a fare il
    sizeof($sede); -->per contare quante sedi ha l'utente OVVIAMENTE mi restituisce 1...e non va bene...come posso risolvere???

  5. #5
    Originariamente inviato da Saretta883
    Codice PHP:
    if(in_array('AN',$sede_utente)){
    echo(
    "<tr><td><input name='sede[0]' type='checkbox' value='AN' checked='checked'/> Ancona </td></tr>");
    }else{
    echo(
    "<tr><td><input name='sede[0]' type='checkbox' value='AN'/> Ancona </td></tr>");
    }
    if(
    in_array('FE',$sede_utente)){
    echo(
    "<tr><td><input name='sede[1]' type='checkbox' value='FE' checked='checked'/> Fermo </td></tr>");
    }else{
    echo(
    "<tr><td><input name='sede[1]' type='checkbox' value='FE'/> Fermo </td></tr>");

    nella pagina successiva lo richiamo così:
    Codice PHP:
    $sede[]=$_POST['sede'];
    var_dump($sede); 
    Il risultato che attengo è questo:
    array(1) { [0]=> array(6) { [0]=> string(2) "AN" [1]=> string(2) "FE" [2]=> string(2) "MC" [3]=> string(2) "PG" [4]=> string(2) "PS" [5]=> string(2) "TR" } }

    Perfetto...il problema è che quando vado a fare il
    sizeof($sede); -->per contare quante sedi ha l'utente OVVIAMENTE mi restituisce 1...e non va bene...come posso risolvere???
    Ma io NON ti ho detto di inserire un indice all'array sede nell'HTML. Come name del checkbox devi mettere semplicemente "sede[]" per TUTTI i checkbox. Poi nella pagina PHP di destinazione avrai un array valorizzato che le sedi selezionate:

    ES:

    Codice PHP:
    <?php
    if (isset($_POST['submit'])) {
        
    $sede $_POST['sede'];
        foreach (
    $sede as $value) {
            echo 
    $value."
    "
    ;
        }
    }
    ?>

    <form action="index.php" method="post">
        <input type="checkbox" name="sede[]" value="Sede1" />Sede 1

        <input type="checkbox" name="sede[]" value="Sede2" />Sede 2

        <input type="checkbox" name="sede[]" value="Sede3" />Sede 3

        <input type="submit" name="submit" value="submit" />
    </form>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Grazie mille...ora funziona alla perfezione!!!
    Grazie ancora!!!

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.