基本上,我正在创建一个博客应用程序(为了好玩和经验),我希望用户能够通过复选框更改每篇博客文章的可见性。我知道你可能会想为什么我不为每篇博客文章设置一个可见性字段。我明白为什么不建议这样做,但我想不出其他方法来实现这一点。再解释一下:我想将此应用程序附加到我已经构建的CMS上,基本上我有一个博客文章表,然后我希望用户能够转到其站点内的不同页面并添加博客。那么,如果用户想在3个不同的页面上使用相同的博客,但只想在每个页面上显示特定的文章,那该怎么办呢?所以我现在很困惑。
尽管我不赞成这种保存数据的方式,但如果您真的想要这样做,可以尝试以下方法。我建议您创建一个非规范化的表,并将值存储在其中。
在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"]);
在从数据库读取数据的地方,您可以像这样将值从数据库转换为数组
$ids_array = explode(",",$row->ids);
希望这有所帮助
首先创建数据库:
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连接.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);
?>
<?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";
}
这个问题的完美解决方案是创建规范化表,正如@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);
你需要先学习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"; }
?>
好的,你所做的是连接到数据库服务器。但你尚未选择数据库。可以将其视作前往电影院观影,你仍需选择想看的电影。
现在,我们连接到我们的数据库:
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'";
根据您的表格设置,这将为您获取当前用户的列表。我假设您已经拥有用户ID(或获取其ID的方法),因为他们有能力为该网站定义自己的首选项。
现在您已经有了用于获取文章的SQL查询语句,您需要查询数据库。
$result = mysql_query($sql);
// Now, get the data
while($row = mysql_fetch_array($result)) {
$articles[] = $row['article_id'];
}
这样就可以得到你需要的ID列表。
我会让你自己解决剩下的问题。这很简单,而且你现在拥有所有需要的工具。唯一需要注意的是 explode
和 foreach
。
所以,存储它们的方式取决于你。当以这种方式存储时,请查看 explode 的用法以将它们分割。