Visualizzazione dei risultati da 1 a 9 su 9

Discussione: checkbox e array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    16

    checkbox e array

    Piccola domanda, ma non riesco a risolvere il problema.

    Ho una serie di checkbox stamapata da una tabella:

    while ($row = mysql_fetch_array($risultato))

    {

    echo"
    <input type=\"checkbox\" name=\"categorie[]\" value=\"$row[id]\" id=\"cat\">
    <label for=\"categorie\">$row[nome]</label>



    ";
    }

    Gli utenti possono scegliere diverse categorie, e poi inviare il form.

    Come faccio ad inserire in un campo di una tabella tutte le categorie selezionate dagli utenti?

    io ho fatto:


    $categorie = $_POST["categorie"];
    $cat = array($categorie);

    ma nel db mi scrive solo "Array".

    se non faccio così e inserisco nel campo $categorie mi scrive il valore dell'ultimo checkbox selezionato...

    Come si fa a prendere tutti i valori?

    Grazie a tutti per l'aiuto.

  2. #2
    pagina del form:

    Codice PHP:
    //all'interno del ciclo
    <INPUT  type='checkbox' value='$row[ID]' name='ID[]'
    e nella pagina di verifica:
    Codice PHP:
    if($_POST['ID'] != '') {
    foreach (
    $_POST["ID"] as $ID 

    //fai le tue operazioni

    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Codice PHP:
    foreach ($_POST['categorie'] as $value) {
     
    // usa la variabile $value


  4. #4
    Utente di HTML.it L'avatar di RokStar
    Registrato dal
    Dec 2001
    Messaggi
    937
    Se li vuoi mettere tutti in una riga usa implode("simbolochedivide", tuaarray);

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    16
    Grazie mille, non pensavo di riuscire a trovare tante risposte utili e veloci.

    Ora però ho il problema dell'inserimento nel db: con i dati del foreach io devo aggiornare un record di una tb, in questo modo:

    $sql = "UPDATE `utenti` SET
    `categorie` = '???',
    WHERE `id` = '$id'
    " ;
    $query = mysql_query($sql) or die (mysql_error());

    L'ideale per me sarebbe ottenere una valore, da sostituire a quei tre ???, del tipo: "3,5,23" dove questi sono i valori dei singoli checkbox selezionati separati da virgole.


    Quindi cosa faccio? faccio eseguire la query con il foreach?

    foreach ($_POST["categorie"] as $value)
    {
    $sql = "UPDATE `utenti` SET
    `categorie` = '???',
    WHERE `id` = '$id'
    " ;
    $query = mysql_query($sql) or die (mysql_error());

    }

    Ma così i dati non si sovrascrivono?

  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Dipende. Il campo "categorie" di che tipo è?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    16
    per ora è un campo VARCHAR, anche se volevo capire come funzionano i campi di tipo SET che forse sono più adatti a questo tipo di dati.

    Quando poi dovrò selezionare gli utenti in base alle categorie scelte farò una ricerca del tipo LIKE '2', ad esempio, se voglio sapere quelli con categoria id=2.

    E' sbagliata come impostazione?

    Sono pronto a cambiare tutto se ho commesso degli errori anche nel db, voglio imparare come si possono iserire valori multipli in un unico campo quando appunto non si può stabilire il numero di questi valori (se fossero solo tre categorie farei tre campi tipo cat1, cat2, cat3 e le cose forse sarebbero più facili).

  8. #8
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Se è questa l'impostazione puoi usare, come suggeriva RokStar, $cat = implode(",",$_POST['categorie']) e memorizzare direttamente $cat nel campo che ti serve.
    Personalmente credo sia meglio fare un'ulteriore tabella che metta in relazione l'id della tabella "utenti" e la categoria di appartenenza.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    16
    Grazie mille VaLvOnAuTa!
    Finalmente ho risolto il mio problema.

    Ora penso alla soluzione della altra tb in cui inserire l'id utente e il valore della categoria. In effetti a pensarci bene funzionerebbe alla grande:

    una tabella di questo tipo, penso, chiamata magari "cat_utente":

    campi: Categoria, Utente

    e per ogni categoria selezionata scrivere un record con l'id della categoria e l'id dell'utente.

    esempio: utente id=4 categoria id=3

    record = 3, 4

    così poi mi basta fare un query del tipo

    "SELECT utente FROM cat_utente WHERE categoria = 3" per ottenere tutti gli utenti che hanno selezionato quella categoria. E' molto più veloce e funzionale! Ottimo, grazie ancora.

    In questo caso, allora, se ho capito bene, potrei fare così

    foreach ($_POST["categorie"] as $value);
    {
    $sql = "INSERT INTO `cat_utente` (`categoria` , `utente`) VALUES (
    '$value', '$idutente');
    $query = mysql_query($sql) or die (mysql_error());
    }

    e dovrebbe quindi inserirmi i dati in modo corretto! E' così che dovrei fare?

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.