我正在尝试在表视图中显示两列,一列是文档的标题,另一列是文档的描述。我在特定的表中有一个列,我选择名为“filename”,用于存储与其标题和描述相关联的上载文档的名称。
我很好奇我如何设法只显示标题和描述,同时将“filename”列中包含的数据设置为标题的超链接值? (基本上,我希望他们能够在点击它的名字后下载文件)
我非常肯定我可以通过跳过表格生成器并在视图中执行“foreach”手动将其打开,以打印出结果集中的所有数据,但我愿意接受建议,因为这样会使代码变得粗糙。以下是我的控制器的片段。
<?php
class blah extends CI_Controller {
public function troubleshooting() {
$this->load->library('pagination');
$this->load->library('table');
$config['base_url'] = 'http://somewebsite.com/troubleshooting';
$config['total_rows'] = $this->db->get('document')->num_rows();
$config['per_page'] = 10;
$config['num_links'] = 10;
$this->pagination->initialize($config);
$data['records'] = $this->db->get('document', $config['per_page'],$this->uri->segment(3));
$this->db->select('doc_title, filename, description, category_id, product_id');
$this->db->where('category_id = 1');
$this->db->where('product_id = 1');
$this->db->order_by('doc_title', 'asc');
$this->load->view('blah/troubleshooting.php', $data);
}
}
答案 0 :(得分:0)
您可以使用select->(CONCAT(...), FALSE)
查询在查询中创建链接。
http://codeigniter.com/forums/viewthread/105687/#531878
**更新** 好吧,你的表助手将接收一个数组 - 你的db查询将返回一个数组。因此,您必须以一种方式创建查询,以便按照表助手的方式创建数组。
你需要这样的东西:
$records = [
'doc_title' => 'My Title',
'filename' => '<a href="path/to/filename.php">filename.php</a>',
'description' => 'My description text here.',
'category_id' => 5,
'product_id' => 56
]
您的查询可能如下所示:
$this->db->select('doc_title');
$this->db->select('CONCAT("<a href=path/to/'.filename.'>".'filename'."</a>")', FALSE);
$this->db->select('description, category_id, product_id');
$this->db->where('category_id = 1');
$this->db->where('product_id = 1');
$this->db->order_by('doc_title', 'asc');
$records = $this->db->get('document', $config['per_page'],$this->uri->segment(3));
诀窍是你的CONCAT
函数会有一些'引用'问题。如果没有亲自测试,我不确定我的报价是否合适。看看那里的一些文档,这应该有所帮助:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat