0

この不正な文字列オフセットについて問題があります

これは、formlembur.php という名前のコントローラーです。

      function download($lid)
      {
         $form_lembur = $this->form_lembur->read(array('lid' => $lid));
         $data['form_lembur'] = $form_lembur;
         //echo $data;die;(until this statement,it can load the data on database.
         //it actually showing the data.
         $this->load->view('exp-lembur', $data);
      }

これは form_lembur.php という名前のモデルです

        public function read($where = FALSE)
        {
           if ($where === FALSE)
           {
                $query = $this->db->get('form_lembur');
                return $query->result_array();
           }

           $query = $this->db->get_where('form_lembur', $where);
           return $query->row_array();
        }

これはダウンロード前のビューです

<td> <a href="<?php echo base_url();?>formlembur/download/<?php echo $data->lid; ?>"><input type="submit" name="download" value="Download"></a></td>

これは、exp-lembur.php という名前の Excel でデータを表示するビューです。

<?php
    header("Content-type: application/vnd.openxmlformats xlsx");
    header("Content-disposition: attachment; filename=\"Lembur.xls\"");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
  <meta http-equiv=Content-Type content="text/html; charset=us-ascii">
  <meta name=ProgId content=Excel.Sheet>
<title>Reports</title>
<style>
    table.member
    {
          border:.5pt solid #000;
          border-collapse:collapse;
          font:14px tahoma;
          margin:0 auto;
          width:50%
    }
    table.member tr th{background-color:#999;border:.5pt solid #000}
    table.member tr.head th{color:#fff}
    table.member tr.data td{border:.5pt solid #000; vertical-align: top}
</style>
</head>
<body>
<?php
      //print 'Generated On ' .date("j M y, g:i a",time()). '<br>';
  ?>
  <table class="member">
    <thead>
      <tr class="head">
        <th>Tanggal</th>
        <th>Nama</th>
        <th>Jabatan</th>
        <th>Jam Pulang</th>
        <th>Keperluan</th>
        <th>Instruktur</th>
        <th>Status</th>
        <th>Uang Lembur</th>
      </tr>
    </thead>
      <tbody>
      <?php
          if (isset($form_lembur)){
              foreach($form_lembur as $k){

              print <<<h
              <tr class="data">
                    <td>{$k['date']}</td>
                    <td>{$k['nama']}</td>
                    <td>{$k['jabatan']}</td>
                    <td>{$k['jampulang']}</td>
                    <td>{$k['keperluan']}</td>
                    <td>{$k['instruktur']}</td>
                    <td>{$k['status']}</td>
                    <td>{$k['uanglembur']}</td>
               </tr>
               h;
               }
            }
        ?>
      </tbody>
    </table>
</body>
</html> 

しかし問題は、それが不正な文字列オフセットであると言ったことです。何が問題ですか ?私を助けてください。

これはエラーメッセージです(Excelドキュメントにダウンロードしようとしたため、Excelドキュメントに表示されました)

A PHP Error was encountered                         
Severity: Warning                           
Message: Illegal string offset 'date'                           
Filename: views/exp-lembur.php                          
Line Number: 50                         
4

1 に答える 1

1

問題はモデルにあります。たまに返ってくる

$query->result_array()

その他の時間の返品

$query->row_array()

$where 値に依存します。ただし、result_array() は次の形式を提供します。

$row[0]['date'];

row_array() がこの形式を与える場合:

$row['date'];

そのため、「不正な文字列オフセット 'date'」があります。

于 2013-08-25T01:45:28.413 に答える