【问题标题】:How to get data in database and display specific data in View (Codeigniter)如何获取数据库中的数据并在视图中显示特定数据(Codeigniter)
【发布时间】:2015-07-16 01:51:08
【问题描述】:

我是 Codeigniter 框架的新手,我创建了一个简单的应用程序,该应用程序将从数据库中获取数据,然后在视图中显示条件。我正在尝试将特定数据从数据库显示到我的视图中,到目前为止,我没有使用下面的代码。

模型(Datamodel.php)

function getData() {
    $this->db->select("name, value");
    $this->db->from('settings');
    $query = $this->db->get();
    return $query->result_array();
}

控制器(maincontroller.php)

function index()
{
    $data['metadata'] = $this->Datamodel->getData();
    $this->load->view('viewdata', $data);
}

查看

  <h3>Site Information</h3>
  <?php foreach($metadata as $data) {?>
      <h4>Site Title: <?php echo $data['site_title']; ?></h4>
      <h4>Site Description: <?php echo $data['site_description']; ?></h4>
      <h4>Site keyword: <?php echo $data['site_keyword']; ?></h4>
      <h4>Site Year: <?php echo $data['site_year']; ?></h4>
  <?php }?>

我想在浏览器上显示类似的内容:

网站信息

网站标题:我的第一个 codeigniter 应用
站点描述:这是示例 ci 应用程序
网站关键字:简单的 ci 应用程序,第一个应用程序
场地年份:2015

{ 接受任何帮助和建议。谢谢! 请查看这张图片 [http://prntscr.com/722hsm] 了解我的数据库结构!}

【问题讨论】:

    标签: php html mysql codeigniter model-view-controller


    【解决方案1】:

    感谢您采取主动。

    只是一些修改:

    模型

    <?php
    function getData() {
      $siteData = array();
      $this->db->select("name, value");
      $this->db->from('settings');
      $query = $this->db->get();
      if ($query->num_rows()) {
        foreach ($query->result_array() as $row) {
        // Your data is coming from multiple rows, so need to loop on it.
          $siteData[$row['name']] = $row['value'];
        }
      }
      return $siteData;
    }
    

    查看:

    <h3>Site Information</h3>
    <?php foreach($metadata as $dataName => $dataValue) {?>
        <!-- You are getting the names and values in loop, so, 
    use it in loop. Also, use ucwords() and str_replace() to beautify your
     output. for more informtion on this, read php.net documentation.
           -->
      <h4><?php echo ucwords(str_replace('-', ' ', $dataName))?>: <?php echo $dataValue; ?></h4>
    <?php }?>
    

    第二种方法(没有 FOREACH):

    <h3>Site Information</h3>
    <h4>Site Title: <?php echo $metadata['site_title']; ?></h4>
    <h4>Site Description: <?php echo $metadata['site_description']; ?></h4>
    <h4>Site keyword: <?php echo $metadata['site_keyword']; ?></h4>
    <h4>Site Year: <?php echo $metadata['site_year']; ?></h4>
    

    【讨论】:

    • 是的,它确实有效,但我只想显示值。
    • 您已经从数据库中获取名称和值,为什么还要将硬编码的名称与来自数据库的值相对?
    • 对不起,我只是一个新手。我更喜欢这种方式。
    • @AlexNewbie,欢迎您。继续研究,你会成为一名优秀的程序员。
    【解决方案2】:

    只需在控制器中加载您的模型:

    function index()
    {
        $this->load->model('Datamodel');
        $data['metadata'] = $this->Datamodel->getData();
        $this->load->view('viewdata', $data);
    }
    

    在你的观点上试试这个

    <h3>Site Information</h3>
    
          <h4>Site Title: <?php echo $metadata['site_title']; ?></h4>
          <h4>Site Description: <?php echo $metadata['site_description']; ?></h4>
          <h4>Site keyword: <?php echo $metadata['site_keyword']; ?></h4>
          <h4>Site Year: <?php echo $metadata['site_year']; ?></h4>
    

    【讨论】:

    • 显示错误:遇到 PHP 错误严重性:通知消息:未定义索引:site_title、site_description、site_keyword、site_year
    • 它会显示错误,因为您没有循环结果数据并且数据在多行中。请参考下面我的回答。
    • 只需在您的查看页面上尝试print_r($metadata),看看您得到了什么。
    • 我试过你的答案瞳孔。感谢那。但我只想获得价值。
    • @dinesh 我尝试了你的建议 print_r($metadata),它在浏览器上显示如下。网站标题:数组([site_description] => 这是我的第一个 codeigniter 迷你应用 [site_keyword] => 第一个 ci 应用,示例网站 [site_title] => 简单 ci 应用,第一个应用 [site_year] => 2015)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多