Codeigniter和嵌套选项卡标记

时间:2011-04-17 08:15:51

标签: codeigniter tabs

我需要一些指导。请原谅我一篇冗长的帖子,但我需要自己解释一下。在我的世界里,没有人理解我在说什么,所以我必须上网寻求帮助。

我是一名建筑师,在我自己的网站上工作,因为工作已经枯竭,我计划使用改进的网站进行营销活动。

我已经完成了我称之为“lash-up”的网站,该网站功能正常。但它还没有准备好发表。我试图重新组织这样做,并将整个过程转移到Codeigniter。我的谜题与Codeigniter中的观点有关。

潜在客户的主要页面之一是显示已完成工作的项目页面。它使用嵌套标签。正如我所说,我已经在普通的程序PHP中使它工作正常。

请注意,项目按类别组织,即住房,商业等。每个类别都有项目。

实际上,这些标签是在jQuery的帮助下动态生成的。我的意思是,我的homespun php根据从数据库返回的内容创建标记。

选项卡标记是无序列表中的常用标记,其li元素包含其href引用下面排列的div的锚点。为了实现嵌套,这些div然后包含另一个ul以及与之相关的另一组div。

顶部标签对应于一个类别,例如住房,商业广告。下方标签对应于某个类别中的项目。

我以前用四个查询完成了这项工作。我认为至少有一个可能是多余的,但我说这是一个“抨击”。

查询1:"select distinct pcat, pcatid from pcategory inner join projects on pcatid = projcat order by pcat desc"

从这个查询中我得到了href中使用的id。

查询2:与上面相同,但这次id用于div id。

下一个查询是我的困惑的来源,因为我没有看到如何使用CI复制它。

查询3:

$jobcat=$row2['pcatid']; 
$queryall3 = "select projid, projtit, projcost, projdate from projects where projcat= '$jobcat'";

此查询使用类别id - $ jobcat - 由while子句的每次迭代返回,用于扩展查询2的结果。换句话说,它在查询2中运行while while循环,因此它可以获取类别id和然后获得与之相关的所有项目。

查询3的结果用于形成下方标签,其href值是项目的ID。

Query4:与查询3相同,用于使用数据库中与特定项目相关的数据填充下部div。

所以,最后我的问题是:在我看来,使用Codeigniter设置很难管理查询3。我可以想象在视图中循环的一系列结果。我无法想象的是如何在该循环中进行模型调用。

对长篇大论的问题表示道歉,并表现出任何歪曲的编码假设。援助将是一种祝福。

汤姆

1 个答案:

答案 0 :(得分:1)

我真的没有看到你在问什么,但似乎你想知道如何在CI中执行查询?

在这种情况下,我建议您采取良好的read of the docs

$this->db->select('pcat, pcatid');
$this->db->distinct();
$this->db->from('pcategory');
$this->db->join('projects', 'pcategory.pcatid = projects.pid', 'inner');
$this->db->order_by('pcat', 'DESC');
$result = $this->db->get();

我非常怀疑这会起作用,因为我不知道你的表结构,但可能会让你知道如何在CI中使用活动记录类。

您当然可以使用query方法:

$results = $this->db->query('YOUR QUERY HERE');

但是,活动记录类可以为您完成大量工作。

至于在CI中难以做到,这简直是不真实的 - 你只需要更清晰的画面和对你想要达到的目标的理解。

修改

$jobcat=$row2['pcatid']; 
$queryall3 = "select projid, projtit, projcost, projdate from projects where projcat= '$jobcat'";

$results=$this->db->query($queryall3);
$data = $results->result_array(); // get the results of the 3rd query as an array


// new query
$this->db->select('query_4_select'); // select whatever you need
$this->db->from('whatever_table');
// this probably isn't the most efficient way, but for examples sake:
foreach($data as $row) // using the result_array from above
{
    $this->db->or_where('query_4_id', $row['id']); // the magic !!
}
$new_results = $this->db->get();

基本上,您从查询3获取ID,通过foreach运行并构建where x=x or x=y or x=b类型查询,然后(希望)返回所需的结果。

这是一种方法,你需要调整它。

但听起来你可以使用加入?也许你可以张贴整个表结构。