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

Discussione: checkbox[][], form

  1. #1

    checkbox[][], form

    Ciao a tutti,
    se devo inviare delle checkbox fatte in questo modo

    <form id="form1" name="form1" method="post" action="result.php">
    <input type="checkbox" name="checkbox[8][1]" value="01" />
    01

    <input type="checkbox" name="checkbox[8][2]" value="02" />
    02

    <input type="checkbox" name="checkbox[9][3]" value="03" />
    03

    <input type="checkbox" name="checkbox[9][4]" value="04" />
    04

    <input type="submit" name="Submit" value="Invia" />
    </form>

    come posso riprendere i valori checkati da $_POST["checkbox"] sia del primo array che del secondo?
    Grazie

  2. #2
    non capisco a che pro usi questa forma, non è meglio così?

    <form id="form1" name="form1" method="post" action="result.php">
    <input type="checkbox" name="checkbox[]" value="01" />
    01

    <input type="checkbox" name="checkbox[]" value="02" />
    02

    <input type="checkbox" name="checkbox[]" value="03" />
    03

    <input type="checkbox" name="checkbox[]" value="04" />
    04

    <input type="submit" name="Submit" value="Invia" />
    </form>

    quando recuperi i dati basta un ciclo for:

    for ($i=0; $i<count($_POST['checkbox']); $i++)
    echo "checkbox = ".$_POST['checkbox'][$i]."
    ";

  3. #3
    Lui vuole una matrice, non un array monodimensionale.

    Non so se può funzionare con la doppia parentesi quadra (ho scoperto 20 minuti fa questa forma ) ma forse è meglio (leggi 'più logico') cambiare il nome delle checkbox.

    checkbox1[1]
    checkbox1[2]
    checkbox2[2]
    checkbox2[5]
    checkbox2[7]
    checkbox3[4]

    E poi eventualmente te li metti in una matrice in modo più semplice.

    Che cosa rappresentano quell'accoppiata di indici/chiavi, per avere la necessità di indicare il valore tramite due coordinate?

  4. #4
    Si, cerco di spiegarmi meglio.

    Allora ho questa form di checkbox dinamiche, e mi serve riprendermi in particolare di checkbox[8][1] l'id = 8(che gli passo io e il relativo valore
    Solo che possono essere checkate tutte, ma se hanno lo stesso nome me ne posta solo una.

    Quindi in questo modo:
    <form id="form1" name="form1" method="post" action="result.php">
    <input type="checkbox" name="checkbox[8]" value="01" />
    01

    <input type="checkbox" name="checkbox[8]" value="02" />
    02

    <input type="checkbox" name="checkbox[9]" value="03" />
    03

    <input type="checkbox" name="checkbox[9]" value="04" />
    04

    <input type="submit" name="Submit" value="Invia" />
    </form>
    non mi va bene...
    Quindi quale puo' essere la soluzione?

    Grazie per avermi risposto

  5. #5
    Se provi a fare
    codice:
    <form id="form1" name="form1" method="post" action="result.php">
    <input type="checkbox" name="checkbox[8][]" value="01" />
    01
    
    <input type="checkbox" name="checkbox[8][]" value="02" />
    02
    
    <input type="checkbox" name="checkbox[9][]" value="03" />
    03
    
    <input type="checkbox" name="checkbox[9][]" value="04" />
    04
    
    <input type="submit" name="Submit" value="Invia" />
    </form>
    cambia qualcosa?

    (però non so come ricavarlo: o $_POST['checkbox'] oppure $_POST['checkbox[8]'])

  6. #6
    A rigor di logica, quest'ultima soluzione di Pictor sembra la migliore.
    Per scorrere questo array, io farei come segue:
    Codice PHP:
    $matrice $_POST['checkbox'];

    foreach (
    $matrice AS $rigo) {
          if(
    is_array($rigo)) {
            
    // scorro l'array con un altro foreach
          
    } else {
            
    // il rigo non è un array
          
    }

    Ho scritto qui sul forum e non ho testato il funzionamento di questo scriptino, ma mi sembra funzionante.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Forse, questa soluzione e' quella giusta.
    Puoi aiutarmi a capire meglio cosa devo fare,pero'?
    Nel senso, $rigo per cosa sta?

    Nel foreach interno cosa dovrei mettere per farmi stampare "name" e "value" della form?
    Grazie a tutti per l'aiuto

  8. #8
    Codice PHP:
    $matrice $_POST['checkbox']; 

    foreach (
    $matrice AS $rigo) { // ad ogni iterazione $rigo conterrà il valore dell'elemento corrente di $matrice
          
    if(is_array($rigo)) { 
            foreach(
    $rigo as $value) {
              echo 
    "Il valore di {$rigo} è $value";
            }
            
    // scorro l'array con un altro foreach 
          
    } else { 
            
    // il rigo non è un array 
          


    Però non stamperà anche il nome della variabile, essendo questo rinominato in $rigo.
    Stampa il valore.

    Comunque è meglio che spieghi che cosa stai facendo e cosa vuoi fare.

    Probabilmente c'è una soluzione migliore....

  9. #9
    Il nome della variabile lo trovi ciclando con foreach l'array $_POST.
    Codice PHP:
    foreach ($_POST AS $nome_variabile) {
        
    // eccetera

    ...quindi nidificando ulteriormente i cicli.
    Sarebbe da testare se vale la pena o meno farlo, intendo in termini di prestazioni.

    Per capire come utilizzare foreach ai tuoi scopi, ti consiglio di andare a dare un'occhiata al manuale ufficiale e agli esempi che ci troverai!
    FOREACH()

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    ok, grazie pictor, grazie alcio...

    grazie a voi ho risolto, posto la soluzione ai miei problemi.

    <form id="form1" name="form1" method="post" action="result.php">
    <input type="checkbox" name="checkbox[][8]" value="01" />
    01

    <input type="checkbox" name="checkbox[][8]" value="02" />
    02

    <input type="checkbox" name="checkbox[][9]" value="03" />
    03

    <input type="checkbox" name="checkbox[][9]" value="04" />
    04

    <input type="submit" name="Submit" value="Invia" />
    </form>



    $matrice = $_POST["checkbox"];
    foreach ($matrice as $rigo) {
    foreach($rigo as $key => $value) {
    echo "Key:" .$key." "; //in modo da avere l'indice
    echo "Valore: $value
    \n";//..e il valore

    }
    }

    Siete stati bravissimi.

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.