使用 JOIN 的 PHP MySQL 选项

标签 php html mysql

我有一张 table ...

表:论坛

for_id  for_name       for_des           for_mem
  1      Forum 1    Description 1     mem1@email.com, mem2@email.com 
  2      Forum 2    Description 2       null
  3      Forum 3    Description 3     mem1@email.com

然后我有另一个表:成员

mem_id mem_name     mem_email ...
   1     Jane    mem1@email.com
   2     Jack    mem2@email.com
   3     Smith   mem3@email.com

我正在尝试创建一个 HTML 选项列表。一个多选列表,将显示成员 中的所有列,然后在编辑信息时选择论坛 中的列。

示例:编辑 for_id = 1 它应显示所有用户并仅选择 for_id=1for_mem

中的用户

目前我正在使用:

<? $data = explode(',',$row[for_mem]); ?>
<div class="col-md-9">
    <select name="for_mem" id="" multiple class="form-control">
        <?php foreach($data as $key => $value){?>
        <option value="<?php echo $value; ?>"><?php echo $value; ?></option>
        <?php } ?>
    </select>
</div>

但它只显示该论坛的 for_mem 中的用户,而不是所有用户,供他们选择要添加的新用户。另外,只是电子邮件。有没有办法显示名字?

请帮忙。谢谢

最佳答案

这个查询可以解决部分问题,然后通过联合将两者连接起来。第一部分是论坛中存在的成员,第二部分是论坛中不存在的成员。 我添加了一个字段“checked”,第一部分为 1,第二部分为 0,用于确定显示时要检查哪些用户。

select for_id, for_name, for_mem, mem_name, mem_email, 1 checked from forums, members where locate(mem_email, for_mem) > 0
union
select for_id, for_name, for_mem, mem_name, mem_email, 0 checked from forums, members where locate(mem_email, for_mem) = 0;

可能有任何句法错误我没有测试,因为数据不可用。您可以使用 group by 或 group concat 获取更多信息。我建议先在 mysql 提示符下运行它,然后查看结果并根据需要进行修改。

关于使用 JOIN 的 PHP MySQL 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176620/

相关文章:

javascript - 按钮使用一次后不再触发功能

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 如何禁用在浏览器上显示配置详细信息的 phpmailer

php - 无法从命令行执行PHP文件

html - 为什么 div 标签不与中心对齐?

javascript - 如何检查单击的元素是否包含具有特定类的元素

php - 柱形图的动态数据表创建(列和行未知)

java - 使用 Java 更新 Mysql 表行

Python mysql 连接器 LIKE 针对 unicode 值

Mysql 将 XXXXXXXXXXXX 格式的字符串格式化为 XX-XX-XXXXXXX-X