5

データベースの1つのフィールドに複数のチェックボックス値を保存したい。(例1、24、56、100)。これを実現する方法と、クエリで変数を呼び出したい場合にPHPがデータベースからこれらの値を読み取る方法を知りたいのですが。

基本的に私は(楽しさと経験のために)ブログアプリを作成しており、ユーザーがチェックボックスを使用して各ブログ投稿の表示を変更できるようにしたいと考えています。おそらく、ブログ投稿ごとに可視性フィールドを用意しないのはなぜかとお考えの方もいらっしゃると思います。これを行うことが推奨されない理由は理解していますが、これを行う他の方法は考えられません。もう少し説明すると、このアプリケーションを既に構築したCMSにアタッチしたいのですが、基本的にはブログ投稿のテーブルがあり、ユーザーがサイト内のさまざまなページに移動して、ブログ。ユーザーが3つの異なるページで同じブログを使用したいが、各ページに特定の投稿のみを表示したい場合はどうでしょうか。だから私は今混乱しているのです。

4

4 に答える 4

15

私はそのようなデータを保存することに賛成ではありませんが、本当にそのようにしたいのであれば、ここにあなたができることがあります。非正規化されたテーブルがあり、そこに値を保存することをお勧めします

HTMLには、次のようなチェックボックスを含めることができます(ある種のIDを格納していることを考慮して)

<input type="checkbox" name="ids[]" value"1" />
<input type="checkbox" name="ids[]" value"24" />
<input type="checkbox" name="ids[]" value"56" />
<input type="checkbox" name="ids[]" value"100" />

php側では、関数implodeを使用して、以下に示すようにIDを文字列に形成できます(POSTを実行していることを考慮して)

$ids = implode(",",$_POST["ids"]);

データベースから読み取る場所で、値をdbから次のような配列に変換できます

$ids_array = explode(",",$row->ids);

これがお役に立てば幸いです

于 2012-03-05T03:00:04.970 に答える
2

最初にデータベースを作成します。

create table employee(id int(10) not null, name varchar(20), hobbie varchar(20),
     worked varchar(20), primary key(id));

その後、次のようなhtmlページを作成します。

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1    /DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Untitled Document</title>
 </head>

 <body>
 <body background="blue">
 <form action="check.php" method="post">
 Name: <input name="Name" type="text" id="Name" /><br />
<br />
  <br />
   Which you do you want to likes?<br />
         <input type="checkbox" name="Hobbies[]" value="Books" />Books<br />
    <input type="checkbox" name="Hobbies[]" value="Movies" />Movies<br />
   <input type="checkbox" name="Hobbies[]" value="Sports" />Sports<br />
  <input type="checkbox" name="Hobbies[]" value="Games" />Games<br />
  <input type="checkbox" name="Hobbies[]" value="Travelling" />Travelling<br />  

  worked: <input name="Worked" type="text" id="Worked" /><br />
   <br />

<input type="submit" name="submit" value="Submit" />
<input type="reset" name="reset" value="reset" />

 </form>
  </body>
 </html>

その後、mysqlconnect.phpを実行します

 <?php
 $server="localhost";
 $user="root";
 $password="";
 $database="empcheckbox";

 $link=mysql_connect($server,$user,$password) or die("the connection is terminated please      check me!".mysql_error());
mysql_select_db($database,$link);
 ?>

その後、そのようなcheck.phpを作成する必要があります。

<?php

if(isset($_POST['submit']))
{
 $name=mysql_real_escape_string($_POST['Name']);
$worked=mysql_real_escape_string($_POST['Worked']);
$hobb= $_POST['Hobbies'];
if(empty($hobb)) 
    {
        echo("<p>You didn't select any any hobby.</p>\n");
    } 
    else 
    {
       $N = count($hobb);
        echo("<p>You selected $N Hobbies(s): ");
        for($i=0; $i < $N; $i++)
        {
            $var1=$hobb[$i];
            include ('connect.php');
            $table = "INSERT INTO employee (name, hobbies, worked) ".
                     "VALUES ('$name', '$var1', '$worked')";
            mysql_query($table) or die(mysql_error());
            $inserted_fid = mysql_insert_id();
            mysql_close();  
        }

        echo "successfully uploaded!..";
      }
}
else
 {
echo "error please check ur code";
}
于 2012-11-29T10:41:32.620 に答える
1

これに対する完璧な解決策は、@OMGと@Michaelによってコメントされた正規化されたテーブルの作成タスクです。

しかし、ここにあなたが今尋ねたことに対する答えがあります

$ids = implode(", ", $_POST['ids']);

これをMySQLテーブルに保存します。LIKEコマンドを使用してテーブルをクエリし、explodeを使用して配列内のIDを取得できます。

$query = "SELECT * FROM <table> WHERE ids LIKE '%,2, %'"; // get posts having id 2

$id = explode(", ", $result->ids);
于 2012-03-05T03:07:32.663 に答える
-1

PHPとMySQLの基本を学びたいと思うでしょう。

tizag.com、w3schools.com、またはその他のサイトをチェックしてください(チュートリアルは豊富です)。

ただし、基本はここにあります。理解に役立つので、これを覚えておいてください。

MySQLはデータベースです。データベースは通常、データの保存に使用されます。PHPはプログラミング言語です。通常、プログラミングに使用されます。

そのため、PHPからデータベースと通信するための手順は、すでにいくつかのすばらしい開発者が行っています。あなたがしなければならないのは接続を確立することです。

<?php
    $con = mysql_connect("localhost","peter","abc123");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    } else { echo "Connection made"; }
?>

W3Schools経由でmysql_connectを参照してください

さて、ここで行ったことは、データベースSERVERに接続したことです。データベースをまだ選択していません。映画館に行くようなものだと考えてください。それでも、見るには映画を選ぶ必要があります。

これで、データベースに接続します。

    mysql_select_db("my_db", $con); //Notice we're using our connection, "$con"

W3Schools経由でmysql_select_dbを参照してください

データベースに接続すると、データベースからいくつかの情報を取得する準備が整います。
これを行うには、SQLクエリを作成する必要があります。

調子に合わせて:

$sql = "SELECT article_id FROM user_view_blog_posts WHERE user_id = '$user_id'";

W3Schoolsを介してSELECTステートメントを参照してください

テーブルの設定方法に応じて、現在のユーザーのリストが表示されます。ユーザーはサイトの独自の設定を定義できるため、ユーザーのID(またはそれを取得する方法)を既に持っていると思います。

記事を取得するためのSQLクエリができたので、データベースにクエリを実行する必要があります。

$result = mysql_query($sql);
// Now, get the data
while($row = mysql_fetch_array($result)) {
    $articles[] = $row['article_id'];
}

これで、必要なIDのリストが得られるはずです。

残りを理解させてあげましょう。それは非常に簡単で、今必要なすべてのツールが揃っています。あなたがブラッシュアップしたいと思うかもしれない唯一のものはexplodeforeachです。

したがって、それらを保存する方法はあなた次第です。それらがそのように保存されているときにそれらを分割するために爆発を調べてください。

于 2012-03-05T03:15:54.187 に答える