Ciao a tutti, è da diverse ore che sto perdendo la testa con un ciclo, vi chiedo gentilmente di darmi una mano...
Allora, ho un campo nel db che contiene le particolarità che può avere un'automobile (abs, airbag, navigatore, etc.).
Ho creato una tabella "particolarita" che contiene due colonne, "id" e "nome" (es "1" "abs", "2" "airbag", etc)
Nel modulo di inserzione delle auto ho creato diverse checkboxes aventi come name "particolarita[]" in modo che da crearmi un array contenente i numeri delle particolarità selezionate, dopodichè inserisco il dato nel database facendo un implode e separando i numeri da "-".
Nel database quindi compare una stringa simile a questa: "1-4-5-8-12", quando vado poi a visualizzare l'auto faccio un'explode di quel campo sul carattere "-" e vado a richiamare i nomi delle particolarità sfruttando gli id.
Spero di esser stato chiaro fin qui![]()
Ora sto scrivendo un modulo per modificare un'inserzione e vorrei quindi che le checkboxes delle particolarità fossero "checkate" o meno a seconda dei valori precedentemente inseriti nel database.
Per i campi <Option><Select> non ho mai avuto problemi, dentro un ciclo while infatti inglobavo un ciclo if che dava alla variabile "$selected" un valore "SELECTED" se l'id coincideva con quello corrispondente all'auto, in questo modo il ciclo while mi stampava qualcosa come:
<option value=tot SELECTED>marca auto</option>
oppure
<option value=tot>altra marca auto</option> per tutte le altre.
Come posso riuscire a fare una cosa simile per le checkboxes?
Vi passo il codice che ho creato, il problema è che nel ciclo foreach mi ristampa la stessa stringa tante volte quanti elementi sono presenti nell'array creato (quello creato con explode, ricordate?).
Ecco il pastrocchio:
Spero che qualcuno abbia la pazienza di aiutarmi, non dovrebbe essere difficile ma io proprio non ci sto riuscendocodice:// Qui prendo il dato del database (es: 1-5-6-7-12-15) $particolarita_exp = explode('-',$dati['particolarita']); //Con l'explode ottengo l'array $particolarita_exp contenente i 6 valori //La tabella "particolarita" ha 2 colonne, id e nome (es: 1 - ABS, 2 - Airbag, etc.) $query_particolarita = "SELECT * FROM particolarita ORDER BY id"; $result_particolarita = mysql_query("$query_particolarita") or die("$diesql".mysql_error()); while ($dati_particolarita = mysql_fetch_array($result_particolarita)){ $particolarita2 = $dati_particolarita['id']; $nome_particolarita2 = $dati_particolarita['nome']; //Con questo ciclo vorrei riempire la variabile $checked foreach($particolarita_exp as $particolarita_exp2){ if ($particolarita2 == $particolarita_exp2) { $checked = " checked=\"checked\" ";} else $checked = ""; $option_particolarita .= "\n<input type=\"checkbox\" value=\"$particolarita2\" $checked name=\"particolarita[]\" />$nome_particolarita2 \n"; }aiutatemi a capire
}
![]()