我无法显示我的表格(codeigniter)

时间:2014-10-31 12:37:29

标签: php html mysql codeigniter

我在这个网站上搜索了答案,但我得到的所有答案都没有用。

MODEL:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_product extends CI_Model 
{
    function __construct()
    {
         // Initialization of class
        parent::__construct();
    }
    function viewauction()
    {
        $query = $this->db->select('*')->from('producten')->get();
        return $query->result();
    }
}

控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller 
{
    function __construct()
    {
         // Initialization of class
        parent::__construct();
    }
    public function index()
    {
        $this->load->model('model_product');
        $data ['query'] = $this->model_product->viewauction();
        $this->load->view('header');
        $this->load->view('welcome_message', $data);
        $this->load->view('footer');
    }
}

查看:

<table class="table">
    <thead>
        <th>Naam</th>
        <th>Beschrijving</th>
        <th>Prijs</th>
        <th>Vooraad</th>
        <th>Categorie</th>
    </thead>
    <tbody>
        <?php foreach($query as $row): ?>
        <tr> 
        <td><?php echo $row->naam; ?></td>
            <td><?php echo $row->beschrijving; ?></td>
            <td><?php echo $row->prijs; ?></td>
            <td><?php echo $row->producten_op_voorraad; ?></td>
            <td><?php echo $row->categorie; ?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

我得到一个空输出。没有错误 我在表中有1个项目。

确定这是数据库文件:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'webshop';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

3 个答案:

答案 0 :(得分:1)

它似乎是table name中的一个类型,确保db

中存在producten名称的表

并且您的配置缺少$db['default']['username'] = '';您需要一个用户名,通常它将是{local}上的$db['default']['username'] = 'root';

$query = $this->db->select('*')->from('producten')->get();

你可以使用

获得结果
$query = $this->db->get('producten');

答案 1 :(得分:0)

在你的模型中,试试这个:

function viewauction()
{
    $query = $this->db->get('producten');
    return $query->result();
}

请注意,$this->db->get('tablename')是Codeogniter Active Records Class中select * from table查询的标准语法。请检查一下:https://ellislab.com/codeigniter/user-guide/database/active_record.html

此外,您可以在控制器中尝试此操作,以检查所有数据是否来自数组$data['query']内的查询:

$data ['query'] = $this->model_product->viewauction();
//do the following to check whether you got the data correctly from your query and inside the array.
$echo "<pre>";
print_r();
die();

修改 - 1:

如果我的解决方案不起作用,那么我很确定问题出在您的数据库配置文件中。我提出了一些意见和问题:

  1. 为什么在数据库默认主机名中使用地址'127.0.0.1'?不是'localhost'更好的选择吗?
  2. 为什么你没有数据库的用户名?通常在mysql中,默认用户名为root。我认为你应该设置$db['default']['username'] = 'root';
  3. 您的数据库名称是否正确?它真的是'webshop'吗?
  4. 我非常确定问题出在这里。请检查。

答案 2 :(得分:0)

我会从root用户攻击问题,并且首先激活调试数据库。当你在localhost中时,只有当你在LOCALHOST中时,从codeigniter激活调试数据库:在你的配置dabase.php中更改这一行:

$db['default']['db_debug'] = TRUE;

再次运行,如果存在数据库问题,它就会出现。

如果没有,请检查您遇到问题的地方:

首先:确保您的查询会产生结果:正如@Shaiful Islam指出的那样,首先检查您运行的sql句子,以及是否会返回结果:

function viewauction()
{
   $query = $this->db->select('*')->from('producten')->get();

   $results = $query->result();

   echo $this->db->last_query();

   return $results;
}

这将返回您正在运行的SQL,您可以直接运行它并检查您是否从SQL接收结果。

第二:如果您运行SQL并获取数据,请在控制器中打印以检查它们是否正常工作:

public function index()
{
    $this->load->model('model_product');
    $data ['query'] = $this->model_product->viewauction();

    // Check the data:
    var_dump( $data['query'] );

    $this->load->view('header');
    $this->load->view('welcome_message', $data);
    $this->load->view('footer');
}

第三次:如果上面进展顺利,最后一件事就是检查视图中的数据:在文件的第一行,写一下:

<?php var_dump($query); ?>

尽管如此,您应该知道错过了哪些数据,并且很容易知道问题出在哪里。