1

こんにちは、CIでの検索に問題があります。最初のページでは結果は正常に表示されますが、2番目のページでは1064SQLエラーが表示されます。

SQL構文にエラーがあります。1行目の'ANDcpt_echip.cpt_echip_nr_inventar LIKE' %%' LIMIT 10、10'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

コード(使用される関数)は次のとおりです。

モデル:

function search($start, $limit){
        $match = $this->input->post('search');
        $tip_echip = $this->input->post('cpt_tip_echip_nume');
        $q = $this->db->query("SELECT * FROM (cpt_echip)LEFT OUTER JOIN cpt_utl ON cpt_utl.cpt_utl_marca = cpt_echip.cpt_utl_marca WHERE cpt_echip.cpt_tip_echip_id = $tip_echip AND cpt_echip.cpt_echip_nr_inventar LIKE '%$match%' LIMIT $start , $limit");


        $rezultat = $q->result();

        return $rezultat;
    }

function num_filter(){
        $tip_echip = $this->input->post('cpt_tip_echip_nume');
        $this->db->where('cpt_tip_echip_id', $tip_echip);
        $q = $this->db->get('cpt_echip');
        $number = $q->num_rows();

        return $number;
    }

コントローラ:

function search(){

        $data = $this->helpdesk_model->general();

        $start_row = $this->uri->segment(3);
        $per_page = 10;

        if(trim($start_row) == ""){
            $start_row = 0;
        }

        $config['base_url'] = base_url() . '/index.php/helpdesk/search/';

        $config['total_rows'] = $this->helpdesk_model->num_filter();
        $config['per_page'] = $per_page;
        $config['num_links'] = 10;
        $config['first_link'] = 'Prima pagina';
        $config['last_link'] = 'Ultima pagina';

        $this->pagination->initialize($config);

        $data['pagini'] = $this->pagination->create_links();
        $data['query'] = $this->helpdesk_model->search($start_row, $per_page);

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

見る:

<table border="1">
            <tr>
                <th>Nr. Inventar</th>
                <th>Nume</th>
                <th>Utilizator</th>
            </tr>
            <?php foreach($query as $row): ?>
            <tr>
                <td><?php echo anchor('helpdesk/detalii_echipament/'.$row->cpt_echip_nr_inventar, $row->cpt_echip_nr_inventar, array('data-fancybox-type'=>'iframe', 'class'=>'fancybox')); ?></td>
                <td><?php echo $row->cpt_echip_nume; ?></td>
                <td><?php echo $row->cpt_utl_nume; ?></td>
            </tr>
            <?php endforeach; ?>
        </table>
        <?php echo $pagini; ?>

検索とフィルターがなくても、ページネーションは正常に機能します。

4

1 に答える 1

0

$_POST 配列が空であることを意味します。リンクを使用して 2 番目のページに移動すると、何も投稿されません。検索データをURLで渡すか、初回送信時にセッションに保存して利用することができます。

print_r($_POST) を使用して、 $_POST 配列が何であるかを確認するだけです。

于 2012-10-31T12:15:57.153 に答える