在CodeIgniter中,有没有办法知道用户是否被发送到默认控制器,因为路由将它们发送到那里,或者因为用户实际在URL栏中输入了该控制器.
换句话说,---/home和---.com都可以将你发送到'home'控制器,因为你已经设置好了
$route['default_controller'] = 'home';
但只有---.com/会调用CI来获取"default_controller"所以,我该如何检测到这个?如果只有一个布尔函数可以告诉我这个.
我是codeigniter编程的新手.当我尝试连接数据库并从表中检索数据时,我发现错误如:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI_DB_mysql_result::$result
Filename: models/haii.php
Line Number: 15.
A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: views/getquery.php
Line Number: 2
Run Code Online (Sandbox Code Playgroud)
我使用此代码使用codeigniter连接数据库:
<?php
class product extends CI_Controller
{
function __construct()
{
}
function getall()
{
$this->load->model('haii');
$data['query']=$this->haii->you();
$this->load->view('getquery',$data);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
<?php
class haii extends CI_Model
{
function __construct()
{
parent::__construct();
$this->load->database();
}
function you()
{
$query=$this->db->get('member');
return $query->result;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
<?php …Run Code Online (Sandbox Code Playgroud) 我喜欢将以下MySQL查询转换为Codeigniter Active Record Queries.
以下是MySQL:
select brand_id,name,(select count(*) from items where brand_id = b.brand_id) as itemc, (select count(*) from models where brand_id = b.brand_id) as modelc from brands as b
Run Code Online (Sandbox Code Playgroud)
Codeigniter:
$this->db->limit($perpage,$page);
$query = 'select brand_id,name,(select count(*) from items where brand_id = b.brand_id) as itemc, (select count(*) from models where brand_id = b.brand_id) as modelc from brands as b limit '.$perpage.' offset '.$page.'';
$query = $this->db->query($query);
$query = $query->result();
return $query;
Run Code Online (Sandbox Code Playgroud)
请帮我将以上代码转换为Codeigniter Active Record.
在我的codeigniter网站上,我有一个管理员可以为其创建内容的用户列表.为用户创建新内容时,网址为example.com/content/new/ 5.5是正在为其创建内容的用户的ID.当我提交表单并且form_validation失败时,我重新加载视图,但问题是它丢失了具有ID号的URL上的最后一段.有没有办法我可以用错误重新加载视图,并将该ID保存在网址中?
这是我的代码......
if ($this->form_validation->run() == FALSE){
$this->load->view('create_content', $data); //reload if validation fails
} else {
//prepare data for the database here
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Windows 7中的wamp&codeigniter在php中开发一个MVC应用程序.该应用程序没有任何问题.
我是linux和ubuntu的新手.
但我需要在ubuntu linux机器上托管这个.我已经<php include ('/../footer.php); ?>在Windows wamp中使用它正在工作.
一旦我上传到ubuntu灯.我越来越include ('/../footer.php) failed to open stream
我尝试在网上搜索,但无法得到解决方案.
怎么解决这个问题.
我正在考虑从自动加载文件中删除数据库库.我正在缓存页面上的所有内容,所以我不需要每次都连接到数据库,如果我有CI连接到数据库,我认为这是浪费速度.
我的问题现在是:如果我用例如在$this->load->database()没有参数的MY_Model中加载数据库(它们来自配置文件),是否会为我在控制器中使用的每个模型建立新连接?
或者它会像只加载一次的助手一样?
我在CodeIgniter中有一个Controller,代码如下:
$this->load->view("first");
echo "LOL";
$this->load->view("second");
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,当呈现页面时,HTML是:
LOL
<div id="firstView"></div>
<div id="secondView"></div>
Run Code Online (Sandbox Code Playgroud)
我不知道是什么导致这些陈述的重新排序.有什么建议?我可能忽视了什么吗?
我正在构建一个联系表单,我想通过ajax提交数据并通过相同的方式显示结果.但只要用户点击提交按钮,该页面就会自动提交.我也使用过jquery的preventDefault和stopPropogation.但它仍然无法正常工作.我是jQuery的新手,我可能会遗漏一些小东西.这是代码:
形成
<form action="#" method="post" accept-charset="utf-8" name="contactform" id="contactform">
<p>Name<br/><input type="text" name="cname" value="" id="cname" required /></p><br/>
<p>Email<br/><input type="email" name="cemail" value="" id="cemail" required /></p><br/>
<p>Message<br/><textarea name="cmessage" cols="40" rows="10" id="cmessage" required ></textarea></p>
//Re-captcha code here
<p><input type="submit" name="contact_submit" value="Submit" id="contact_submit" /></p>
</form>
<br />
<div id="result"></div>
Run Code Online (Sandbox Code Playgroud)
脚本
$(document).ready( function(){
$("#contact_submit").click( function(e){
e.preventDefault();
e.stopPropagation();
});
$("#result").html('');
$("#contactform").validate();
});
Run Code Online (Sandbox Code Playgroud)
我已经包含了jQuery Validation Plugin,它也没有用.
我正在尝试使用表中的数据填充选择输入/表单下拉列表.
HTML
<select id="room_type" name="inputInfo" >
<option value="<?php echo set_value('room_type', '$data_room_type'); ?>"></option>
</select>
Run Code Online (Sandbox Code Playgroud)
模型:
function get_room_details($data_room_type) { // line 19
$data_room_type = array();
$this->db->select('room_type', 'default_price');
$this->db->from('room_type');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$data_room_type[] = $row;
}
}
return $data_room_type;
}
Run Code Online (Sandbox Code Playgroud)
控制器:
function index() {
$this->load->view('/main/new_reservation');
$this->load->model('reservations_model');
$this->reservations_model->get_room_details($data_room_type);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:

遇到PHP错误
严重性:注意
消息:未定义的变量:data_room_type
文件名:controllers/reservations.php
行号:8
第8行是::
$this->reservations_model->get_room_details($data_room_type);
Run Code Online (Sandbox Code Playgroud) 也许我现在想不起来.但是我想要弄清楚的是如何在数据库中返回一组结果,即每个类别的行数.无需基于每个类别进行查询.
这种情况下的类别是州.我有90,000行数据,其中50种不同的状态将数据分开.有没有办法创建与每个州相关的计数?
我想说group_by或者其他什么,但老实说,我现在想不起来.想法?
member | comment | state | dataset
----------------------------------
000 |something| CA | an_object_of_data
000 |something| CA | an_object_of_data
000 |something| CA | an_object_of_data
000 |something| NY | an_object_of_data
000 |something| NY | an_object_of_data
000 |something| CA | an_object_of_data
000 |something| CT | an_object_of_data
000 |something| CA | an_object_of_data
Run Code Online (Sandbox Code Playgroud)
以上是各种db表的示例.想象一下,有90k行甚至更多的东西state.
如果我可以通过对结果或某事进行分组来获得返回的计数,即:"CA = 4","CT = 1","NY = 2"
codeigniter ×10
php ×10
mysql ×4
activerecord ×1
connection ×1
database ×1
html ×1
jquery ×1
lamp ×1
performance ×1
templates ×1
ubuntu ×1