【发布时间】:2024-01-22 22:43:01
【问题描述】:
我正在创建一个网站,该网站将有一些地方,并且每个地方都有我想要的标签。我有一个带有表名复选框的数据库,在表内我有一个名为 checkbox_title 的列。在我的后端,我有三个复选框,它们的值分别是篮球、棒球和排球。如果我选中所有或部分框,我想将它们添加到数据库中,在 checkbox_title 列内。我已经使用 implode() 做到了这一点。但是,当我将它们插入我的数据库时,它们用逗号分隔,这很好,但在我网站的前端,我想将标签显示为分隔包装在 span 标签中,而不是作为使用 span 标签的组。我想知道是否有一种方法可以使用 span 标签而不是逗号来分隔 implode() 值。希望有人能帮我解决这个问题。
PS。我在前端添加了 cmets 以了解我希望它如何工作。
后端代码:
<form method="post" action="">
<div class="form-group">
<?php
if(isset($_POST['add_tags'])) {
$tags = implode(', ' , $_POST['tags']);
$query = "INSERT INTO checkbox (checkbox_title) VALUES ('$tags') ";
$result = mysqli_query($connection, $query);
if(!$result) {
die("Error ".mysqli_error($connection));
}
}
?>
<label class="checkbox-inline"><input type="checkbox" name="tags[]" value="basketball">Basketball</label>
<label class="checkbox-inline"><input type="checkbox" name="tags[]" value="baseball">Baseball</label>
<label class="checkbox-inline"><input type="checkbox" name="tags[]" value="volleyball">Volleyball</label>
</div>
<div class="form-group">
<input type="submit" name="add_tags" class="btn btn-primary" value="Submit">
</div>
</form>
前端代码:
<div class="container">
<div class="row">
<div class="col-xs-12">
<?php
$select_all_query = "SELECT * FROM checkbox";
$select_all_query_con = mysqli_query($connection, $select_all_query);
while($tags = mysqli_fetch_assoc($select_all_query_con)) {
$product_tags = $tags['checkbox_title'];
echo "<span class='c_span'>$product_tags</span>";
}
?>
<!--
<span class="c_span">Basketball</span>
<span class="c_span">Baseball</span>
<span class="c_span">Volleyball</span>
-->
</div>
</div>
</div>
【问题讨论】:
-
将每个标签保存到数据库的新行中,而不是用逗号分隔的一个字符串...您可以使用
explode,但这是错误的方法。 -
如果您有 3 个数据库列(棒球、篮球、排球),为什么不创建 3 个具有相同名称的不同 $_POST 变量?然后你可以检查哪些已经设置,并将这些记录设置到数据库中......
-
@FrankW。错误的做法。添加新标签不能成为更改表的任务(在其中添加新列)。在 HTML/PHP 应用程序中,使用数组是一种很好的做法,而不是使用多个变量。
-
感谢大家的帮助。 Aiyaz Khorajia 代码是我正在寻找的代码。