在 Codeigniter/MYSQL 中将选定属性添加到 group_concat 输出

Posted

技术标签:

【中文标题】在 Codeigniter/MYSQL 中将选定属性添加到 group_concat 输出【英文标题】:Adding selected attribute to group_concat output in Codeigniter/MYSQL 【发布时间】:2011-04-20 15:14:24 【问题描述】:

我正在使用 Codeigniter/mysql 从动态选择菜单中输出一个简单的选项列表。

控制器

    $data['get_custom_fields'] = $this->db->query("
                SELECT a.custom_field_name, a.custom_field_id, 
GROUP_CONCAT('<option name=\"',c.custom_field_value_id, '\" value=\"', c.custom_field_value_id , '\">',c.custom_field_value_name , '</option>' ORDER BY c.custom_field_value_id ASC SEPARATOR ' ') as field_values
                FROM projects_custom_fields a
                JOIN projects_custom_fields_values c ON c.custom_field_id = a.custom_field_id
                GROUP BY a.custom_field_id
                ORDER BY c.custom_field_id ASC
                ");

查看页面

<?php if($get_custom_fields->result_array())  ?>
<?php foreach($get_custom_fields->result_array() as $fRow): ?>
<tr>
    <td><label>Select <?php echo $fRow['custom_field_name']; ?></label></td>
    <td><select name="custom_field_<?php echo $fRow['custom_field_id']; ?>">
        <?php echo $fRow['field_values']; ?>
    </select>
    </td>
</tr>
<?php endforeach; ?>
<?php  ?>

在我想将 html selected 属性添加到从另一个表中提取的某些选项之前,这非常有效。

    $data['get_custom_reg'] = $this->db->query("
    SELECT custom_field_id, custom_field_value_id
    FROM projects_custom_fields_reg
    WHERE project_id = $project_id
        ");

我自己和另一位经验丰富的程序员一直在尝试一些方法来实现这一点。

使用带有计数器的数组(效果很好,但我们不能在查询中增加计数器)加上 IF 语句

我们的后备选项是摆脱使用 GROUP_CONCAT 的单个 MYSQL 查询,并使用多个数据库调用和几个 PHP 语句来输出代码。

我们将不胜感激所有帮助,因为我们真的碰壁了。

谢谢

提姆

【问题讨论】:

【参考方案1】:

未经测试,请尝试:

   SELECT a.custom_field_name, 
          a.custom_field_id, 
          GROUP_CONCAT('<option name=\"',c.custom_field_value_id, '\" value=\"', c.custom_field_value_id, CASE WHEN r.project_id IS NOT NULL THEN 'selected' ELSE '' END, '\">',c.custom_field_value_name , '</option>' ORDER BY c.custom_field_value_id ASC SEPARATOR ' ') as field_values
     FROM projects_custom_fields a
     JOIN projects_custom_fields_values c ON c.custom_field_id = a.custom_field_id
LEFT JOIN projects_custom_fields_reg r ON r.custom_field_value_id = c.custom_field_value_id
                                      AND r.custom_field_id = a.custom_field_id
                                      AND r.project_id = ?
 GROUP BY a.custom_field_id
 ORDER BY c.custom_field_id

【讨论】:

非常接近...不是我所需要的,但向我展示了如何在 MySQL 中执行 CASES 并引导我们找到正确的答案。再次感谢!

以上是关于在 Codeigniter/MYSQL 中将选定属性添加到 group_concat 输出的主要内容,如果未能解决你的问题,请参考以下文章

如何在vim中将选定的行复制到剪贴板

如何在 PHPStorm 中将选定的文本转换为小写?

如何在链式函数中将选定元素传递给“this”

在 vuejs 中将选定对象显示为字符串

如何在Javascript中将选定选项设置为默认选择

在 Visual C# 中将选定行从 DataGridView 移动到另一个