2014-12-20 7 views
5

Voglio scrivere una semplice funzione PHP per inserire valori di 10 e 20 caselle di controllo. Ora, il problema è: dovrei inserire tutti i valori in una singola colonna della tabella MySQL o dovrei andare con la tabella separata?PHP: inserire più valori di caselle di controllo in una colonna MySQL

Il mio obiettivo principale è inserire i valori di più checkbox in MySQL e quindi aggiornarli. Se ho spuntato 7 checkbox e dopo un po 'di tempo voglio aggiornare da 7 a 5, come rimuoverà i valori dalla colonna della tabella?

Per favore aiutatemi con qualche semplice esempio di PHP e quale tipo di campi MySQL dovrei aggiungere, perché voglio inserire il valore della casella di controllo che dovrebbe essere in digitale e l'etichetta delle caselle di controllo in un altro campo.

Ecco il codice HTML che ho

<form method="post" action=""> 
    Games You Like: <br/> 
    <input type="checkbox" name="games[]" value="1"><label>Football</label><br> 
    <input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br> 
    <input type="checkbox" name="games[]" value="3"><label>Pool</label><br> 
    <input type="checkbox" name="games[]" value="4"><label>Rugby</label><br> 
    <input type="checkbox" name="games[]" value="5"><label>Tennis</label><br> 
    <input type="checkbox" name="games[]" value="6"><label>Cricket</label><br> 
    <input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br> 
    <input type="checkbox" name="games[]" value="8"><label>Hockey</label><br> 
    <input type="submit" name="submit" value="submit"> 
</form> 

risposta

12

Prova tutto questo esempio,

struttura tabella

CREATE TABLE IF NOT EXISTS `games` (
    `id` int(12) NOT NULL AUTO_INCREMENT, 
    `game_name` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; 
<?php 
include_once("yourconfig.php"); //include your db config file 
extract($_POST); 
$check_exist_qry="select * from games"; 
$run_qry=mysql_query($check_exist_qry); 
$total_found=mysql_num_rows($run_qry); 
if($total_found >0) 
{ 
    $my_value=mysql_fetch_assoc($run_qry); 
    $my_stored_game=explode(',',$my_value['game_name']); 
} 

if(isset($submit)) 
{ 
    $all_game_value = implode(",",$_POST['games']); 
    if($total_found >0) 
    { 
     //update 
     $upd_qry="UPDATE games SET game_name='".$all_game_value."'"; 
     mysql_query($upd_qry); 

    } 
    else 
    { 
     //insert 
     $ins_qry="INSERT INTO games(game_name) VALUES('".$all_game_value."')"; 
     mysql_query($ins_qry); 
    } 
} 

?> 
<form method="post" action=""> 
Games You Like: <br/> 
    <input type="checkbox" name="games[]" value="1" <?php if(in_array(1,$my_stored_game)){echo "checked";}?>><label>Football</label><br> 
    <input type="checkbox" name="games[]" value="2" <?php if(in_array(2,$my_stored_game)){echo "checked";}?>><label>Basket Ball</label><br> 
    <input type="checkbox" name="games[]" value="3" <?php if(in_array(3,$my_stored_game)){echo "checked";}?>><label>Pool</label><br> 
    <input type="checkbox" name="games[]" value="4" <?php if(in_array(4,$my_stored_game)){echo "checked";}?>><label>Rugby</label><br> 
    <input type="checkbox" name="games[]" value="5" <?php if(in_array(5,$my_stored_game)){echo "checked";}?>><label>Tennis</label><br> 
    <input type="checkbox" name="games[]" value="6" <?php if(in_array(6,$my_stored_game)){echo "checked";}?>><label>Cricket</label><br> 
    <input type="checkbox" name="games[]" value="7" <?php if(in_array(7,$my_stored_game)){echo "checked";}?>><label>Table Tennis</label><br> 
    <input type="checkbox" name="games[]" value="8" <?php if(in_array(8,$my_stored_game)){echo "checked";}?>><label>Hockey</label><br> 
    <input type="submit" name="submit" value="submit"> 
</form> 

questo è solo esempio di base e ricerca ho aggiunto in questo esempio, si può imparare da questo esempio di base e penso che questo sia molto utile per te ... se utile che dare una risposta corretta per questa soluzione

Db Table Stored Output

Form Output

+0

Si prega di utilizzare solo frammenti di codice per il codice che può essere eseguito su questa pagina come HTML, CSS e JavaScript. – Sparky

1

funzione d'uso implode per convertire matrice restituita in una stringa uno poi inserirla nel database come normale

if(isset($_POST['submit'])){ 
    $result = implode(",",$_POST['games']); 

}

Speriamo che questo Aiutarti. Saluti Imran Qasim

0

ho messo il nome del gioco nelle staffe e ha cambiato i loro valori true:

<form method="post" action=""> 
Games You Like: <br/> 
<input type="checkbox" name="games[Football]" value="true"><label>Football</label><br> 
<input type="checkbox" name="games[Basket]" value="true"><label>Basket Ball</label><br> 
<input type="checkbox" name="games[Pool]" value="true"><label>Pool</label><br> 
<input type="checkbox" name="games[Rugby]" value="true"><label>Rugby</label><br> 
<input type="checkbox" name="games[Tennis]" value="true"><label>Tennis</label><br> 
<input type="checkbox" name="games[Cricket]" value="true"><label>Cricket</label><br> 
<input type="checkbox" name="games[Table]" value="true"><label>Table Tennis</label><br> 
<input type="checkbox" name="games[Hockey]" value="true"><label>Hockey</label><br> 
<input type="submit" name="submit" value="submit"> 
</form> 

Dopo la presentazione questo si tradurrà in un array come questo:

$_POST["games"] = Array ([Tennis] => true [Cricket] => true [Table] => true) 
// all other values false 

È può facilmente archiviare e successivamente manipolare questa matrice se la si archivia come una stringa JSON nel proprio database. Per questo è necessario un singolo varchar o una colonna di testo.

json_encode($_POST["games"]) 
// {"Tennis":"true","Cricket":"true","Table":"true"} 
0

Si prega di provare questo

<?php 
if(isset($_POST['submit'])) 
{ 
//in here you get games array 
    $mygames = $_POST['games']; 
} 

?> 


<form method="post" action=""> 
Games You Like: <br/> 
<input type="checkbox" name="games[]" value="1"><label>Football</label><br> 
<input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br> 
<input type="checkbox" name="games[]" value="3"><label>Pool</label><br> 
<input type="checkbox" name="games[]" value="4"><label>Rugby</label><br> 
<input type="checkbox" name="games[]" value="5"><label>Tennis</label><br> 
<input type="checkbox" name="games[]" value="6"><label>Cricket</label><br> 
<input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br> 
<input type="checkbox" name="games[]" value="8"><label>Hockey</label><br> 
<input type="submit" name="submit" value="submit"> 
</form> 
0

In primo luogo molto dritto al punto, preferisco fare nomi come questo da diverse caselle di controllo

BasketBall;Cricket;Tennis 

Si può fare quello di

implode(";",$array); 

e quindi scrivere quello nella tabella mySQL ...

per ottenere quei valori Basta usare

$array = explode(";",$urVariable); 

Per valori diversi utilizzano

numberOne = $array[1]; // returns Cricket 

di modificare qualsiasi uso valore Basta avere i valori e riscrivere in ";" modulo ..

Mi piace così come è semplice da implementare e fare un lavoro perfettamente!

Problemi correlati