我确信很容易弄清楚大多数知道PHP和mysql的人,但我无法弄明白。我会尽力以最好的方式解释
如果我错过了什么,请告诉我
相关表格结构
Table | Fields category | id,group_n (more fields exist but are not required now) p_group | id,group_n
我想要实现的目标:
根据与该类别相关的_get URL中的当前_isset id,查询在类别表中查找当前选定的group_n字段(如果可用)。
工作流程示例:
类别
的示例行ID | category | short | group_n 1 | Skin Whitening Pills | pills | Skin Whitening 2 | Skin Whitening Cream | cream | Skin Whitening 3 | Weight Gain / Loss | wgainl | Weight Gain / Loss
如您所见,多个类别可以包含一个group_n。我使用group_n来显示该组的专家。
id为2的类别将group_n作为Skin Whitening edit_category.php?id = 2将显示当前在表行中的id 2的所有输入选项,以便编辑它们并更新查询。现在,当填充group_n的选项时,所选的应该是Skin Whitening,但是p_group中的所有行都可以选择。
码
<?php
$qry=mysql_query("SELECT group_n from category where id=$id", $con);
if(!$qry)
{
die("Query Failed: ". mysql_error());
}
?>
<select name="group" id="group">
<?php
// First, define the desired default value
$default_value = $row['group_n'];
while($row=mysql_fetch_array($qry))
{
// Then you can mark that one as selected in your "while" loop
$selected = ($row['group_n'] == $default_value) ? ' selected' : '';
$qry2=mysql_query("SELECT * from p_group", $con);
while ($row2 = mysql_fetch_array($qry2))
{
echo "<option value='" . $row2['group_n'] . "'" . $selected . ">" . $row2['group_n'] . "</option>";
}
}
?>
</select>
我还尝试使用单个查询来连接两个表,但以下查询将仅列出一行不会自动填充但提供正确值的行。
$qry=mysql_query("
SELECT a.group_n,
b.group_n from p_group a
left join category b
on a.group_n=b.group_n
group by b.group_n where b.id=$id", $con);
我不确定我的查询是需要更改还是php,但我只能让其中一个查询一次使用select。我需要知道如何使两个查询都能正常工作,因此所选的选项是类别表中的一个选项和p_group表中的下拉选项。
理想情况下,我希望类别表与p_group中的id相关联,但是现在我决定将其保留为文本。
答案 0 :(得分:1)
在等待本周异常安静的用户社区的输入之后,我搜索了周围的代码,直到我来到UNION sql join。这基本上需要两组数据并呈现为一个完成技巧的数据。不确定这是否是最好的方式,也许有一种纯粹的PHP方式,但这就行了。
SQL代码段
$qry=mysql_query("select group_n as group_a from category where id=$id union select group_n from p_group group by group_n", $con);
基本上,这将选择左边的查询,右边的查询并显示所有记录。
限制 1.所选的字段数必须匹配 2. UNION将不会选择重复项 3. UNION ALL将选择重复
完整相关代码:
$qry=mysql_query("select group_n as group_a from category where id=$id union select group_n from p_group group by group_n", $con);
if(!$qry)
{
die("Query Failed: ". mysql_error());
}
// First, define the desired default value
$default_value = $row['group_a'];
while($row=mysql_fetch_array($qry))
{
$selected = ($row['group_a'] == $default_value) ? ' selected' : '';
// Then you can mark that one as selected in your "while" loop
echo "<option value='" . $row['group_a'] . "'" . $selected . ">" . $row['group_a'] . "</option>";
}
?>
</select>