4

こんにちは、データベースからレコードを取得しようとしていますが、いくつかのフィールドで「重大度: 警告メッセージ: 無効な文字列オフセット」というエラーが表示され続けます。

ここに私のコントローラview_logs.phpがあります

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

class View_Logs extends CI_Controller {

function View_Logs()
 {
   parent::__construct();
 }  

function Logs(){
    $id = $this->uri->segment(3);

    $this->load->model('log_listmodel');
    $this->log_listmodel->log_list_get($id);    
}
}
?>

ここに私のモデル log_listmodel.php があります

<?php
class Log_Listmodel extends CI_Model{

    function Log_Listmodel()
    {
      parent::__construct();
    }

    function log_list_get($id){
    $query = $this->db->get_where('test_request_log', array('test_request_id' => $id));
    //return $query->result();
    $results=$query->result_array();


    $data['query']=$results[0];
    $this->load->view('logs_list_view',$data);
    }
}
?>

ここに私のビューページ log_list_view.php があります

<table class="list_header" bgcolor="#ffffff" border="0" width="1020px" cellpadding="4px">

            <?php foreach($query as $row): ?>
            <tr> 
                <td><b>Updated</b></td>
                <td><?php echo $row['id'];?>.</td>
                <td><?php echo $row['new_testing_reason'];?></td>
                <td><?php echo $row['new_applicant_name'];?></td>
                <td><?php echo $row['new_authorizer_name'];?></td>
                <td><?php echo $row['new_received_by'];?></td>
                <td><?php echo $row['new_test_required'];?></td>
                <td><?php echo $row['new_laboratory_number'];?></td>
                <td><?php echo $row['log_date'];?></td>
                <td><?php echo $row['who'];?></td>
            </tr>
            <?php endforeach; ?>
        </table>
4

2 に答える 2

15

結果の最初の行に設定$data['query']しましたが、ビューではそれを使用しているため、データセット全体が含まれています。

だから変える必要がある

$data['query']=$results[0];

$data['query']=$results;

また

$data['query']=$query->result_array();
于 2013-09-25T08:28:44.040 に答える
1

あなたのコードは一種の不適切な構造です。私はそれを再構築してシンプルにしています。それがうまくいくことを願っています。

まず、データベース lib をロードします。

application/config/autoload.phpに移動して 、この行を見つけて、データベース ライブラリを自動ロードします。

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
|   $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/

$autoload['libraries'] = array('database');

コントローラ ビュー

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

class View_Logs extends CI_Controller {

function View_Logs()
 {
   parent::__construct();
   $this->load->library('database');   // if you didn`t load 'database' in your autoload.php
   $this->load->model('log_listmodel');
 }  

function Logs(){
    $id = $this->uri->segment(3);


    $data['query'] = $this->log_listmodel->log_list_get($id)->result();

    $this->load->view('logs_list_view',$data);
}
?>

モデル ビュー

<?php
class Log_Listmodel extends CI_Model{

    function Log_Listmodel()
    {
      parent::__construct();
    }

    function log_list_get($id){
        return $this->db->get_where('test_request_log', array('test_request_id' => $id));

    }
}
?>

ビューモード

<table class="list_header" bgcolor="#ffffff" border="0" width="1020px" cellpadding="4px">

            <?php foreach($query as $row): ?>
            <tr> 
                <td><b>Updated</b></td>
                <td><?php echo $row->id;?>.</td>
                <td><?php echo $row->new_testing_reason;?></td>
                <td><?php echo $row->new_applicant_name;?></td>
                <td><?php echo $row->new_authorizer_name;?></td>
                <td><?php echo $row->new_received_by;?></td>
                <td><?php echo $row->new_test_required;?></td>
                <td><?php echo $row->new_laboratory_number;?></td>
                <td><?php echo $row->log_date;?></td>
                <td><?php echo $row->who;?></td>
            </tr>
            <?php endforeach; ?>
</table>
于 2013-09-25T08:23:42.220 に答える