Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1

    select con scelte multiple: inserimento corretto in mysql

    ciao a tutti,
    vi spiego:
    1) inserisco i dati di un form in un db (nome, cognome, ecc)
    2) un campo del form è una select con scelta multipla (pane, vino, birra, ecc)

    i dati vengono inseriti correttamente nel db, tranne che per le scelte multiple della select, ovvero viene caricata solo l'ultima delle scelte selezionate.

    come mai?
    devo cambiare il data type della cella?
    aiutatemi se potete,
    grazie

    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Devi impostare l'attributo name della select in modo che essa invii un array di dati, così:

    codice:
    <select name="variabile[]" ...
    A questo punto PHP riceverà tutti gli elementi selezionati dentro la variabile $_POST['variabile'] (oppure $_GET, qualora tu usassi il moetodo "get" per inviare i dati). Variabile che potrai, quindi, trattare quindi come un qualsiasi altro array.
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    grazie Sky,
    ti scrivo il codice:

    il metodo è GET e nell'action il name è richiamato da questa variabile:
    $nomecampo=$_REQUEST['nomecampo'];

    poi inserisco i dati del 'nomecampo' così:
    $query = "INSERT INTO nomeriga (nomecampo) VALUES ('$nomecampo')";

    quali sono i cambiamenti che devo apportare?

    :master:
    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

  4. #4
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Nel form devi inserire le parentesi quadre alla fine dell'attributo name del tag <select>

    Pre quanto riguarda il codice PHP, dovrai elaborare i dati con implode(): essa unisce tutti gli elementi di un array in un'unica stringa, separandoli con il carattere passato nel primo argomento di funzione.

    Presta attenzione a una cosa sola: nel caso in cui il campo del database che conterrà i dati sia di tipo "SET", i valori del form dovranno essere inclusi singolarmente tra apici e separati da virgole.

    Codice PHP:
    $query "INSERT INTO nomeriga (nomecampo) VALUES ('"implode("',' "$nomecampo) ."')"
    Altrimenti, se il campo contiene un'unica stringa (per esempio VARCHAR, oppure TEXT, ecc.), tutto il risultato della funzione implode() va passato a MySQL dentro agli apici.

    Codice PHP:
    $query "INSERT INTO nomeriga (nomecampo) VALUES ('"implode(', '$nomecampo) ."')"
    In quest'ultimo caso il carattere che separerà ogni valore è arbitrario, puoi usare ciò che vuoi. L'importante è che non sia mai presente dentro ai valori.

    Buon lavoro ^^

    Daniele
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  5. #5
    grazie Sky,
    ho provato a fare come dici...

    questa è la risposta del server:
    Warning: implode() [function.implode]: Bad arguments. on line
    $query = "INSERT INTO nomeriga (nomecampo) VALUES ('". implode(', ', $nomecampo) ."')";

    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

  6. #6
    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

  7. #7
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Dà quell'errore perché la variabile $nomecampo non è un array.
    Siamo sicuri che in essa viene recuperato il giusto valore dal form e che esso presenti nell'attributo "name" le due parentesi quadre (<select name="nomecampo[]") ?
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  8. #8
    nel form:
    <form method="post" ...
    <select name="nomecampo[]" ...

    nella action:
    $sezioni=$_REQUEST['nomecampo'];
    $query = "INSERT INTO nomeriga (nomecampo) VALUES ('". implode(', ', $nomecampo) ."')";

    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

  9. #9
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Originariamente inviato da cybergiaggia
    nella action:
    $sezioni=$_REQUEST['nomecampo'];
    Qui i valori scelti nella select finiscono nella variabile $sezioni, non in $nomecampo - che è quella passata alla funzione implode()
    O la prima variabile la chiami $nomecampo oppure dentro implode() usi $sezione...
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  10. #10
    scusami, per semplificare ho sostituito i nomi, ma la variabile è quella giusta, ecco lo script così com'è, e mi dà quell'errore di cui sopra:

    nel form:
    <form method="post" ...
    <select name="nomecampo[]" ...

    nella action:
    $nomecampo=$_REQUEST['nomecampo'];
    $query = "INSERT INTO nomeriga (nomecampo) VALUES ('". implode(', ', $nomecampo) ."')";
    solo alla stregua di un sogno mi troverò, e non vorrò più svegliarmi...

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.