PHP MySQL:将MySQL查询结果与PHP数组匹配
我的数据库中有一些数据:PHP MySQL:将MySQL查询结果与PHP数组匹配,php,mysql,arrays,Php,Mysql,Arrays,我的数据库中有一些数据: id_tag | tag ------------ 1 | Dog 2 | Cat 3 | Buldog 4 | Persian Cat 然后我有一个参数: $tag = "2, 4"; 我想在复选框中显示所有标记。如果id_标记等于$tag参数。 我有一个想法: echo "<div class='btn-group' data-toggle='buttons'>"; $thetag = explode(", "
id_tag | tag
------------
1 | Dog
2 | Cat
3 | Buldog
4 | Persian Cat
然后我有一个参数:
$tag = "2, 4";
我想在复选框中显示所有标记。如果id_标记等于$tag参数。
我有一个想法:
echo "<div class='btn-group' data-toggle='buttons'>";
$thetag = explode(", ", $tag);
$tagall = mysql_query("SELECT * FROM tags");
if(mysql_num_rows($tagall) > 0)
{
while($tagt = mysql_fetch_array($tagall))
{
foreach($thetag as $ttg)
{
if($tagt['id_tags'] == $ttg)
{
$aktiv = "active";
$ceked = "checked";
}
else
{
$aktiv = "";
$ceked = "";
}
}
echo "<label class='btn btn-primary {$aktiv}'><input type='checkbox' value='{$tagt['id_tags']}' autocomplete='off' {$ceked}> {$tagt['tag']}</label>";
}
}
echo "</div>";
波斯猫处于激活和检查状态
结果我需要的是猫和波斯猫活跃和检查。请帮帮我 当然是这样,因为您在这里所做的是在主循环中毫无意义地循环
$tag
,每次您重写以前存储的信息时,只使用最后一个
以下是解决方案之一:
while($tagt = mysql_fetch_array($tagall))
{
if(in_array($tagt['id_tag'], $thetag))
{
$aktiv = "active";
$ceked = "checked";
}
else
{
$aktiv = "";
$ceked = "";
}
echo "<label class='btn btn-primary {$aktiv}'><input type='checkbox' value='{$tagt['id_tag']}' autocomplete='off' {$ceked}> {$tagt['tag']}</label>";
}
while($tagt=mysql\u fetch\u数组($tagall))
{
if(在数组中($tagt['id\u tag',$thetag))
{
$aktiv=“活动”;
$ceked=“已检查”;
}
其他的
{
$aktiv=“”;
$ceked=“”;
}
回显“{$tagt['tag']}”;
}
另外,请。问题是,您的
foreach($ttg的标签)
循环在找到匹配项后继续循环。如果下一次迭代不匹配,它会将$aktiv
和$ceked
设置回空字符串。这些变量的最终值只是基于$tagt['id_tags']
是否匹配$thetag
的最后一个元素,而不是它是否匹配其中任何一个。您可以在设置$ceked=“checked”后放置break
来解决此问题代码>
但更简单的方法是:
if (in_array($tagt['id_tags'], $thetag)) {
$aktiv = "active";
$ceked = "checked";
} else {
$aktiv = "";
$ceked = "checked";
}
使用checked=“checked”为什么将波斯猫和猫分为两类?猫应该吃波斯猫。我想你可以在标签上查找“Cat”,如果有匹配项,则将其设置为checkedPersian是子类别wow。。。我没有想到in_数组。我只是把重点放在了foreach上。谢谢各位。你太棒了。
if (in_array($tagt['id_tags'], $thetag)) {
$aktiv = "active";
$ceked = "checked";
} else {
$aktiv = "";
$ceked = "checked";
}