Recupero selezione checkbox da database

giorno a tutti/e,

la mia difficoltà è questa:

a. tramite una selezione multipla di checkbox carico nel campoA del db una serie di id (avrò, quindi, 12,6,15,35 ecc...) [fin qui tutto ok]

b. quando apro la pagina modifica come faccio a far visualizzare come selezionati i checkbox con gli id presenti nel campoA???

pensavo di fare un explode ma poi mi blocco. qualcuno mi illumini per favore.

td>Cat. Idee</td>
<td colspan='3'>
[php]$mysqlc->query("SELECT * FROM tab1;");
while($res_idee = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC)){  $st++;
$data1 = explode(",", $result1['campoA']);

foreach($data1 as $val1){ if(empty($val1)) break;

//giusto per controllo echo $val1;
echo "<input type='checkbox' name='stuzzica[".$st."]' value='".$res_idee['id_categoria']."'>".$res_idee['nome'];

} }  return;[/php]
inviato 8 anni fa
danielix
X 0 X

In generale bisognerebbe evitare di mettere una lista di dati in un unico campo della tabella. La soluzione corretta è creare un'altra tabella nella quale mettere tante righe quanti sono gli id da associare alla prima tabella. Comunque....

Per perselezionare una checkbox devi inserire nel tag la dicitura checked="checked". Quindi con un IF potresti decidere se mostrare questo testo, in base alla presenza nell'array $data1 dell'id di una checkbox.

Dovresti quindi fare un ciclo per mostrare tutte le checkbox e poi all'interno di questo ciclo mettere l'IF di prima.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ciao Gianni, grazie della tua risposta solo che...

dopo tanto sono riuscito a impostare questo codice seguendo le tue indicazioni

$data = explode(",", $result1['campoA']);foreach($data as $val)
{
                                $mysqlc->query("SELECT * FROM tab;");
                            
                                while($res_idee = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC)){
                            
                                    echo "<input type='checkbox'";
                            
                                    if($res_idee['id'] == $val) echo " checked=\"checked\"";
                            
                                    echo " value='".$res_idee['id']."'>".$res_idee['nome'];
                                }}

i checkbox vengono flaggati ma si ripetono tutti per quante volte sono gli id presenti nel campoA

nel mio eesempio ho 3 id nel campoA 12,3,33 - tutte e 20 le categorie si mostrano 3 volte.

dove sbaglio? :'(

risposto 8 anni fa
danielix
X 0 X

L'errore sta nel ciclo foreach($data as $val) posto esternamente al ciclo while. Prova così:

$data = explode(",", $result1['campoA']);

$mysqlc->query("SELECT * FROM tab;");
while($res_idee = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC)) {
   echo "<input type='checkbox'";
    if(in_array($res_idee['id'],  $data)
      echo " checked=\"checked\"";
   echo " value='".$res_idee['id']."'>".$res_idee['nome'];
   }
}

Ho notato però che queste checkbox non hanno un nome, come fai a sapere se sono state selezionate dall'utente?

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni

hai dato il giusto compimento ai miei due giorni di ricerche e prove. grazie ancora.

per il checkbox effettivamente io lo dichiaro così

echo "<input type='checkbox' name='idea[".$idee['id']."]'";

ultima nota in

if(in_array($res_idee['id_categoria'], $data) echo " checked=\"checked\"";

manca una parentesi ) dopo $data, ovviamente non lo dico per te ma per i posteri a cui sarà utile questa bella pilloletta.

 O0

risposto 8 anni fa
danielix
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda