5

我想将多个复选框值存储到数据库的一个字段中。(例如 1, 24,56,100)。我想知道如何实现这一点,如果我想在查询中调用变量,PHP 如何从数据库中读取这些值?

基本上我正在创建一个博客应用程序(为了乐趣和体验),我希望用户能够通过复选框更改每篇博客文章的可见性。我知道您可能在想,为什么我不为每篇博文设置一个可见性字段。我理解为什么不建议这样做,但我想不出任何其他方法来做到这一点。再解释一下:我想将此应用程序附加到我已经构建的 CMS 上,基本上我有一个包含博客文章的表格,然后我希望用户能够转到他们网站中的不同页面并添加一个博客。好吧,如果用户想在 3 个不同的页面上使用同一个博客,但只想在每个页面上显示某些帖子,该怎么办。所以这就是我现在很困惑的原因。

4

4 回答 4

15

即使我不赞成这样保存数据,但如果你真的想这样做,这就是你可以做的。我建议你有一个非规范化表并将你的 val 存储在那里

在您的 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 将 ids 形成一个字符串,如下所示(考虑到您正在执行 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>

之后我们做了mysql connect.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 列表。

我会让你弄清楚其余的。这非常简单,而且您已经拥有了您现在需要的所有工具。您唯一可能要复习的是explodeand foreach

因此,存储它们的方式取决于您。当它们以这种方式存储时,请查看爆炸以将它们分开。

于 2012-03-05T03:15:54.187 回答