web-dev-qa-db-ja.com

PHP:複数のチェックボックス値を1つのMySQL列に挿入します

単純なPHP関数で10と20のチェックボックスの値を挿入する関数を記述します。ここで問題は、MySQLテーブルの単一の列にすべての値を挿入するか、または別のテーブル?

私の主な目標は、複数のチェックボックスの値をMySQLに挿入してから更新することです。 7つのチェックボックスをオンにして、しばらくして7から5に更新したい場合、どのようにしてテーブルの列から値を削除しますか?

簡単なPHPの例と、追加する必要があるMySQLフィールドのタイプを教えてください。デジタルで使用するチェックボックスの値と、他のフィールドのチェックボックスのラベルを挿入するためです。

ここに私が持っているHTMLがあります

<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>
5
Sohail Sardar

この全体の例を試してください、

テーブルの構造

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>

これは単なる基本的な例であり、この例で追加したクエリです。この基本的な例から学ぶことができ、これはあなたにとって非常に便利だと思います...このソリューションに正しい答えを与えるよりも役立つ場合

Db Table Stored Output

Form Output

12

関数implodeを使用して、返された配列を文字列に変換し、通常どおりデータベースに挿入します

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

}

うまくいけば、これはあなたを助けるでしょう。よろしくイムランカシム

1
imran qasim

まず最初に非常にまっすぐ、私はこのような名前を異なるチェックボックスから行うことを好みます

BasketBall;Cricket;Tennis

あなたはそれを行うことができます

implode(";",$array);

そしてそれをmySQLテーブルに書いてください...

これらの値を取得するには

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

異なる値を使用するには

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

値を変更するには、値を取得して ";"に書き換えます。形..

実装が簡単で完璧に機能するので、私はこれが好きです!

0
Gavin

やってみてください

<?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
sujeet gupta

ゲーム名を括弧内に入れ、それらの値を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>

これを送信すると、次のような配列になります。

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

この配列をデータベースにJSON文字列として保存すると、簡単に保存して後で操作できます。そのためには、単一のvarchar列またはtext列が必要です。

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