Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Checkbox multipli

  1. #1

    Checkbox multipli

    Comincio chiedendo scusa per l'ennesimo post, purtroppo ho letto gli altri post, ma non mi hanno chiarito le idee..

    Ho un form con una serie di campi (text), in fondo ho un'area 'interessi' dove, chi compila il modulo, può inserire più voci.
    Come faccio ad inserire nel database MySQL le voci selezionate?

    Io avevo pensato di poter risolvere il mio problema in questo modo:

    <input name="interesse" type="checkbox" id="interesse" value="internet">Internet
    <input name="interesse" type="checkbox" id="interesse" value="sport">Sport
    <input name="interesse" type="checkbox" id="interesse" value="arte">Arte
    ecc...

    ma purtroppo non ho avuto i risultati sperati..
    Grazie anticipatamente per le eventuali risposte.

  2. #2
    Se già sai a priori quanti campi devi visualizzare potresti assegnare nomi diversi per le varie checkbox, ad esempio:

    <input name="interesse1" type="checkbox" id="interesse" value="internet">Internet
    <input name="interesse2" type="checkbox" id="interesse" value="sport">Sport
    <input name="interesse3" type="checkbox" id="interesse" value="arte">Arte

    Poi nella pagina dove arrivi con il form per intenderci la pagina scritta nel campo ACTION del form,

    if ($_POST['interesse1'] == "internet")
    {
    vuol dire che è stato checkato interesse1
    }
    else vuol dire che interesse1 non è stato checkato

    lo stesso controllo lo fai per tutte le altre variabili.

    Se, invece, nn sai a priori quanti valori devi far comparire per il checkbox perché li prendi dal DB, allora potresti fare:

    1. una query con cui prendi i valori dal DB;
    2. per ogni valore che prendi dal DB:

    <input name="interesse[]" type="checkbox" value="$valore_DB">$valore_DB


    Ora, nella pagina di arrivo del form, avrai il vettore $_POST['interesse'] che conterrà solo i valori checkati, quindi:

    for ($i=0; $i<sizeof($_POST['interesse']); $i++) $_POST['interesse'][$i];

    con tale ciclo accedi agli elementi checkati.

    Spero di aver compreso.

  3. #3
    Ok, si potrebbe fare sia la prima che la seconda ipotesi, ma il problema è che ho circa 23 voci... dovrei creare nel DB tutti questi campi?

    E poi, se volessi far modificare le spunte inserite, come richiamo dal DB le voci checkate (1) e non (0)..?

  4. #4
    Codice PHP:
    $query "SELECT * FROM tabella ORDER BY voci";
    $result=mysql_query($query);
    // scrive i 23 checkbox
    // $row[1] contiene il valore del campo da inserire
    while ($row=mysql_fetch_array($result)) {
      echo 
    "<input name=\"interesse[]\" type=\"checkbox\" value=\"".$row[1]."\"".checked($row[1])." />".$row[1].;
    }

    function 
    checked($val) {
        
    $val=trim($val);
        if (
    $val)
          return 
    " checked=\"checked\"";
        else
          return 
    "";
      } 
    la funzione CHECKED verifica il dato del checkbox: se c'è qualcosa allora aggiunge al TAG il parametro CHECKED.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.