Problem with Codeigniter Error: Type: ArgumentCountError

-2

I am using Codeignter and I have the following error:

  

Message: Too few arguments to function CtrlPdfTest :: index (), 0   passed in C: \ xampp \ htdocs \ bioanestesys \ system \ core \ CodeIgniter.php on   line 532 and exactly 3 expected

     

Filename:   C: \ xampp \ htdocs \ bioanestesys \ application \ controllers \ Trans \ CtrlPdfTest.php

     

Line Number: 11

The driver code is as follows:

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

class CtrlPdfPrueba extends CI_Controller {

    public function __construct() {

        parent::__construct();

    }

    public function index($idpaciente,$id,$tiempo){

        if($this->session->userdata('nombre') != NULL){
            $idpaciente = base64_decode(urldecode($idpaciente));
            $id = base64_decode(urldecode($id));
            $data = array(
            'paciente'=>$idpaciente,
            'cirugia'=>$id,
            'tiempo'=>$tiempo,
            'query2'=>$this->modPreIdPaciente->informacionDetallePaciente($idpaciente,$id),
            'queryFC'=>$this->ModPdfPrueba->buscaintervaloFC($idpaciente,$id,$tiempo),
            'queryPulso'=>$this->ModPdfPrueba->buscaintervaloPulso($idpaciente,$id,$tiempo),
            'queryPAS'=>$this->ModPdfPrueba->buscaintervaloPAS($idpaciente,$id,$tiempo),
            'queryPAD'=>$this->ModPdfPrueba->buscaintervaloPAD($idpaciente,$id,$tiempo),
            'queryPAM'=>$this->ModPdfPrueba->buscaintervaloPAM($idpaciente,$id,$tiempo),
            'querySpO2'=>$this->ModPdfPrueba->buscaintervaloSpO2($idpaciente,$id,$tiempo),
            'queryEtCO2'=>$this->ModPdfPrueba->buscaintervaloEtCO2($idpaciente,$id,$tiempo),
            'queryTemp1'=>$this->ModPdfPrueba->buscaintervaloTemp1($idpaciente,$id,$tiempo),
            'queryTemp2'=>$this->ModPdfPrueba->buscaintervaloTemp2($idpaciente,$id,$tiempo),
            'queryBIS_L'=>$this->ModPdfPrueba->buscaintervaloBIS_L($idpaciente,$id,$tiempo),
            'queryBIS_R'=>$this->ModPdfPrueba->buscaintervaloBIS_R($idpaciente,$id,$tiempo),
            'queryPVC'=>$this->ModPdfPrueba->buscaintervaloPVC($idpaciente,$id,$tiempo),
            'queryPAS_In'=>$this->ModPdfPrueba->buscaintervaloPAS_In($idpaciente,$id,$tiempo),
            'queryPAD_In'=>$this->ModPdfPrueba->buscaintervaloPAD_In($idpaciente,$id,$tiempo),
            'queryPAM_In'=>$this->ModPdfPrueba->buscaintervaloPAM_In($idpaciente,$id,$tiempo),
            'queryPIC'=>$this->ModPdfPrueba->buscaintervaloPIC($idpaciente,$id,$tiempo),
            'queryCAM'=>$this->ModPdfPrueba->buscaintervaloCAM($idpaciente,$id,$tiempo),
            'queryFiO2'=>$this->ModPdfPrueba->buscaintervaloFiO2($idpaciente,$id,$tiempo),
            'queryFiCO2'=>$this->ModPdfPrueba->buscaintervaloFiCO2($idpaciente,$id,$tiempo),
            'queryFiIso'=>$this->ModPdfPrueba->buscaintervaloFiSo($idpaciente,$id,$tiempo),
            'queryFiN2O'=>$this->ModPdfPrueba->buscaintervaloFiN2O($idpaciente,$id,$tiempo),
            'queryEtIso'=>$this->ModPdfPrueba->buscaintervaloEtIso($idpaciente,$id,$tiempo),
            'queryEtN2O'=>$this->ModPdfPrueba->buscaintervaloEtN2O($idpaciente,$id,$tiempo),
            'queryEtO2'=>$this->ModPdfPrueba->buscaintervaloEtO2($idpaciente,$id,$tiempo),
            'queryFR'=>$this->ModPdfPrueba->buscaintervaloFR($idpaciente,$id,$tiempo),
            'queryPAP'=>$this->ModPdfPrueba->buscaintervaloPAP($idpaciente,$id,$tiempo)
            );

            $this->load->view('Panel/Trans/reporte_pdf',$data);

        }
        else{
                redirect('CtrlPrincipal');
            }
    }
}

How can I solve it?

    
asked by mary 23.04.2018 в 20:42
source

1 answer

1

The problem is that can not assign parameters to the index() function in a Codeigniter controller . A simple solution is to create another function with another name and leave the index blank or use session variables (which is the most recommended) instead of passing data as the patient id as parameters by the url (which is a bad practice which makes the system vulnerable to SQL injection).

The quick solution (but not recommended) is the following:

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

class CtrlPdfPrueba extends CI_Controller {

    public function __construct() {

        parent::__construct();

    }

    public function index(){

    }
    public function paciente($idpaciente,$id,$tiempo){

        if($this->session->userdata('nombre') != NULL){
            $idpaciente = base64_decode(urldecode($idpaciente));
            $id = base64_decode(urldecode($id));
            $data = array(
            'paciente'=>$idpaciente,
            'cirugia'=>$id,
            'tiempo'=>$tiempo,
            'query2'=>$this->modPreIdPaciente->informacionDetallePaciente($idpaciente,$id),
            'queryFC'=>$this->ModPdfPrueba->buscaintervaloFC($idpaciente,$id,$tiempo),
            'queryPulso'=>$this->ModPdfPrueba->buscaintervaloPulso($idpaciente,$id,$tiempo),
            'queryPAS'=>$this->ModPdfPrueba->buscaintervaloPAS($idpaciente,$id,$tiempo),
            'queryPAD'=>$this->ModPdfPrueba->buscaintervaloPAD($idpaciente,$id,$tiempo),
            'queryPAM'=>$this->ModPdfPrueba->buscaintervaloPAM($idpaciente,$id,$tiempo),
            'querySpO2'=>$this->ModPdfPrueba->buscaintervaloSpO2($idpaciente,$id,$tiempo),
            'queryEtCO2'=>$this->ModPdfPrueba->buscaintervaloEtCO2($idpaciente,$id,$tiempo),
            'queryTemp1'=>$this->ModPdfPrueba->buscaintervaloTemp1($idpaciente,$id,$tiempo),
            'queryTemp2'=>$this->ModPdfPrueba->buscaintervaloTemp2($idpaciente,$id,$tiempo),
            'queryBIS_L'=>$this->ModPdfPrueba->buscaintervaloBIS_L($idpaciente,$id,$tiempo),
            'queryBIS_R'=>$this->ModPdfPrueba->buscaintervaloBIS_R($idpaciente,$id,$tiempo),
            'queryPVC'=>$this->ModPdfPrueba->buscaintervaloPVC($idpaciente,$id,$tiempo),
            'queryPAS_In'=>$this->ModPdfPrueba->buscaintervaloPAS_In($idpaciente,$id,$tiempo),
            'queryPAD_In'=>$this->ModPdfPrueba->buscaintervaloPAD_In($idpaciente,$id,$tiempo),
            'queryPAM_In'=>$this->ModPdfPrueba->buscaintervaloPAM_In($idpaciente,$id,$tiempo),
            'queryPIC'=>$this->ModPdfPrueba->buscaintervaloPIC($idpaciente,$id,$tiempo),
            'queryCAM'=>$this->ModPdfPrueba->buscaintervaloCAM($idpaciente,$id,$tiempo),
            'queryFiO2'=>$this->ModPdfPrueba->buscaintervaloFiO2($idpaciente,$id,$tiempo),
            'queryFiCO2'=>$this->ModPdfPrueba->buscaintervaloFiCO2($idpaciente,$id,$tiempo),
            'queryFiIso'=>$this->ModPdfPrueba->buscaintervaloFiSo($idpaciente,$id,$tiempo),
            'queryFiN2O'=>$this->ModPdfPrueba->buscaintervaloFiN2O($idpaciente,$id,$tiempo),
            'queryEtIso'=>$this->ModPdfPrueba->buscaintervaloEtIso($idpaciente,$id,$tiempo),
            'queryEtN2O'=>$this->ModPdfPrueba->buscaintervaloEtN2O($idpaciente,$id,$tiempo),
            'queryEtO2'=>$this->ModPdfPrueba->buscaintervaloEtO2($idpaciente,$id,$tiempo),
            'queryFR'=>$this->ModPdfPrueba->buscaintervaloFR($idpaciente,$id,$tiempo),
            'queryPAP'=>$this->ModPdfPrueba->buscaintervaloPAP($idpaciente,$id,$tiempo)
            );

            $this->load->view('Panel/Trans/reporte_pdf',$data);

        }
        else{
                redirect('CtrlPrincipal');
            }
    }
}

In this way you should only add paciente to your URL to enter. Even so for security it investigates on how to use session variables. I hope it will be helpful and review more documentation of Codeigniter. Greetings.

    
answered by 23.04.2018 / 21:09
source