Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143

    Query per un multiselect form

    Premetto che ho cercato la soluzione sul forum, ma non sono riuscito a risolvere. Spiego il problema: ho un campo select che permette di selezionare più opzioni. Ora sto cercando di inserire le varie opzioni selezionate (gli id) in una colonna del db.

    Per chiarire meglio (in sintesi)
    il db è così strutturato
    codice:
    Tabella 'prodotti'
    ----------------------------------------------
    id_prodotto | nome_prodotto | colore_prodotto
    ----------------------------------------------
           1    |       auto     |         
           2    |       casa     |
    ----------------------------------------------
    codice:
    Tabella 'colori'
    -----------------------------
    id_colore     | nome_colore 
    -----------------------------
           1      |     nero                  
           2      |     rosso
           3      |     giallo         
    -----------------------------
    Il codice sarebbe questo:

    Codice PHP:
    <?
    //Definisco le stringhe
    $prodotto = ($_POST['nome_prodotto']);
    $colore = ($_POST['colore']);

    //Menù colori
    $menucolori_sql $data->query("SELECT * FROM colori ORDER BY colore_nome ASC");
    while(
    $menucolori_obj $data->estrai($menucolori_sql)){ 
      
    $colore_id[] = $menucolori_obj->colore_id;
      
    $colore_nome[] = $menucolori_obj->colore_nome;      
    }

    //Eseguo la query
    if(isset($_POST['submit'])){  
    $query_sql 'INSERT INTO prodotti (nome_prodotto, colore_prodotto) VALUES  ($prodotto, $colore);  
    }
    <?
    //Form
    <form>
    Prodotto: <input name="nome_prodotto" type="text">
    Colore: 
    <select multiple name="colore">
      {section name="foo" loop=$colore} 
        <option value="{$id_colore[foo]}">{$nome_colore[foo]}</option>
      {/section}
    </select>
    <input name="submit" type="submit" value="inserisci">
    </form>
    Quando credo un nuovo prodotto e seleziono soltanto un colore va tutto bene, ma se seleziono più colori dal campo select, nel database viene archiviato solo il primo selezionato. So che dovrei utilizzare gli array, ma come?

  2. #2
    Il name della select deve essere colore[] quindi:

    codice:
    <select multiple name="colore">
    diventa
    codice:
    <select multiple name="colore[]">
    in questo modo quando devi leggere il POST o GET, colore sarà un array e non una variabile.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    Grazie mille per la risposta! Funziona benissimo!!

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.