我需要一些指导。请原谅我一篇冗长的帖子,但我需要自己解释一下。在我的世界里,没有人理解我在说什么,所以我必须上网寻求帮助。
我是一名建筑师,在我自己的网站上工作,因为工作已经枯竭,我计划使用改进的网站进行营销活动。
我已经完成了我称之为“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。我可以想象在视图中循环的一系列结果。我无法想象的是如何在该循环中进行模型调用。
对长篇大论的问题表示道歉,并表现出任何歪曲的编码假设。援助将是一种祝福。
汤姆
答案 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
类型查询,然后(希望)返回所需的结果。
这是一种方法,你需要调整它。
但听起来你可以使用加入?也许你可以张贴整个表结构。