Catchable fatal error: Object of class User could not be converted to string in

0

I have that error and I can not find the problem.

The error is generated when you try to generate a PDF. It gives me problems in this line- >

  

Catchable fatal error: Object of class User could not be converted   to string in   /Applications/XAMPP/xamppfiles/htdocs/prj/include/crud_usuario.php on   line 226

And the function,

public function pago($usuario){
        $db = BaseDatos::conectar();
        //var_dump($usuario);
        try{
            $sentencia = "SELECT p.* FROM Usuario u INNER JOIN Pagos p ON u.id_usuario = p.id_usuario WHERE p.id_usuario = :id_usuario";
            $stmt = $db->prepare($sentencia);
            $stmt->execute([':id_usuario' => $usuario]);
            return $stmt->fetchAll();
        } catch(Exception $e){
            print 'Ha surgido un problema, '.$e->getMessage();
        }
    }

The ($ user) of the previous function is called like this,

    $crud = new CrudUsuario();
    $usuario = new Usuario();

    $crudCurso = new CrudCurso();
    $curso = new Curso();

    $id_de_usuario = $usuario->getIdUsuario();

    $listado = $crud->usuarioCurso($_GET['id_usuario']);

    $id_curso = $listado[0]['id_curso'];
    $usuarioCurso = $crudCurso->obtenerCurso($id_curso);

    if (isset($_GET['id_usuario'])) {
        $usuario = $crud->obtenerUsuario($_GET['id_usuario']);
    }
    else{
        $usuario = $crud->obtenerUsuario($_SESSION['id_usuario']);
    }   

    $pagos = $crud->pago($usuario->getIdUsuario());
?>

It seems that when you access the file admin_user, which contains I have more lines but what I try to do is that.

elseif($_GET['impMatricula']=='si'){
    $pdf = new PDF;
    $pdf->matricula($_GET['id_usuario']);
}

And PDF class,

class PDF extends FPDF{
    function Header(){
        //Set de fuente Arial, Negrita y Size 16
        $this->SetFont('Arial','B',16);
        $this->Cell(35);
        //$this->Image('img/logo.png','100','0','22','25','JPG');
        $this->Cell(100,40,utf8_decode('Titulo'),0,0,'C');
        $this->Ln(20);
    }
    function InfoFicha($usuario){
        $usuario = new Usuario;
        $crud = new CrudUsuario;
        $usuario = $crud->obtenerUsuario($_GET['id_usuario']);
        $bandera = false;

        $pago = $pago->pago($_GET['id_usuario']);

        /**/
        $this->Cell(20,10,'Nombre:');
        $this->SetFont('Arial','U',12);
        $this->Cell(50,9, utf8_decode($usuario->getNombre().' '.$usuario->getApellido()),0, 0 , 'L', $bandera );
        $this->Line(27, 154, 65, 154);
        //$this->Ln();//salto de linea
        /**/
        $this->SetFont('Arial','B',12);
        $this->Cell(23,10,utf8_decode('Dirección:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(50,9, utf8_decode($usuario->getDireccion()),0, 0 , 'L', $bandera );
        $this->Ln();//salto de linea

        $this->SetFont('Arial','B',12);
        $this->Cell(10,10,utf8_decode('CP:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(15,9, utf8_decode($usuario->getCodPostal()),0,0,'L',$bandera);
        //$this->Ln();

        $this->SetFont('Arial','B',12);
        $this->Cell(40,10,utf8_decode('Fecha nacimiento:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(22,9, utf8_decode($usuario->getFechaNac()),0,0,'L',$bandera);
        //$this->Ln();

        $this->SetFont('Arial','B',12);
        $this->Cell(18,10,utf8_decode('Correo:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(100,9, utf8_decode($usuario->getEmail()),0,0,'L',$bandera);
        $this->Ln();

        $this->SetFont('Arial','B',12);
        $this->Cell(22,10,utf8_decode('Teléfono:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(25,9, utf8_decode($usuario->getTel()),0,0,'L',$bandera);
        //$this->Ln();

        $this->SetFont('Arial','B',12);
        $this->Cell(19,10,utf8_decode('Cursos:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(100,9, utf8_decode($usuario->getCurso()),0,0,'L',$bandera);
        $this->Ln();

        $this->SetFont('Arial','B',12);
        $this->Cell(19,10,utf8_decode('IBAN:'));
        $this->SetFont('Arial','U',12);
        $this->Cell(100,9, utf8_decode($pago[0]),0,0,'L',$bandera);
        //$this->Cell(100,9, utf8_decode($usuario->getNCuenta()),0,0,'L',$bandera);
        $this->Ln();
    }
    public function matricula($usuario){
        $pdf = new PDF;
        $usuario = new Usuario;
        $pdf->SetTitle('Matricula -'.$usuario->getDni().' MC');
        $pdf->SetLeftMargin(25);
        $pdf->SetRightMargin(25);
        /**/
        $pdf->AddPage();
        $y_axis_initial = 25;
        $pdf->SetFont('Arial','B',12);
        $pdf->Ln(10);
        $pdf->InfoFicha($usuario);
        /*Lo guardamos el PDF con dni de la persona*/
        //ob_clean();
        //ob_end_clean();
        $pdf->Output('matricula-'.$usuario->getDni().'.pdf','I');
    }
}
?>

Crud User,

<?php 
require_once('conexion.php');

class CrudUsuario{
    public function __contruct(){}

    public function insertar($usuario){
        $db=BaseDatos::conectar();

        try {
            $insert = $db->prepare('
                INSERT INTO Usuario
                VALUES (
                :id_usuario,
                :dni,
                :nombre,
                :apellido,
                :contrasena,
                :email,
                :usuario,
                :direccion,
                :cod_postal,
                :telefono,
                :fecha_nac,
                :foto,
                :curso,
                :estado,
                :tipo,
                :localidad,
                :ncuenta
                )
            ');
            $binds = [
                'id_usuario' => NULL,
            ];
            $insert->bindValue(':id_usuario', NULL);
            $insert->bindValue(':dni', $usuario->getDni());
            $insert->bindValue(':nombre', $usuario->getNombre());
            $insert->bindValue(':apellido', $usuario->getApellido());
            $insert->bindValue(':contrasena', $usuario->getContrasena());
            $insert->bindValue(':email', $usuario->getEmail());
            $insert->bindValue(':usuario', $usuario->getUsuario());
            $insert->bindValue(':direccion', $usuario->getDireccion());
            $insert->bindValue(':cod_postal', $usuario->getCodPostal());
            $insert->bindValue(':telefono', $usuario->getTel());
            $insert->bindValue(':fecha_nac', $usuario->getFechaNac());
            $insert->bindValue(':foto', $usuario->getFoto());
            $insert->bindValue(':curso', $usuario->getCurso());
            $insert->bindValue(':estado', $usuario->getEstado());
            $insert->bindValue(':tipo', $usuario->getTipo());
            $insert->bindValue(':localidad', $usuario->getLocalidad());
            $insert->bindValue(':ncuenta', $usuario->getNCuenta());
            $insert->execute();
            return $db->lastInsertId();
        }
        catch (PDOException $e) {
            print $e->getMessage()."Este es un error";
        }
    }

    public function actualizar($usuario){
        $db = BaseDatos::conectar();
        try {
        $actualizar = $db->prepare('
          UPDATE Usuario
          SET
            id_usuario = :id_usuario,
            dni = :dni,
            nombre = :nombre,
            apellido = :apellido,
            contrasena = :contrasena,
            email = :email,
            usuario = :usuario,
            direccion = :direccion,
            cod_postal = :cod_postal,
            telefono = :telefono,
            fecha_nac = :fecha_nac,
            foto = :foto,
            curso = :curso,
            estado = :estado,
            tipo = :tipo,
            localidad = :localidad,
            ncuenta = :ncuenta
          WHERE id_usuario = :id_usuario
        ');

        $actualizar->bindValue(':id_usuario', $usuario->getIdUsuario());
        $actualizar->bindValue(':dni', $usuario->getDni());
        $actualizar->bindValue(':nombre', $usuario->getNombre());
        $actualizar->bindValue(':apellido', $usuario->getApellido());
        $actualizar->bindValue(':contrasena', $usuario->getContrasena());
        $actualizar->bindValue(':email', $usuario->getEmail());
        $actualizar->bindValue(':usuario', $usuario->getUsuario());
        $actualizar->bindValue(':direccion', $usuario->getDireccion());
        $actualizar->bindValue(':cod_postal', $usuario->getCodPostal());
        $actualizar->bindValue(':telefono', $usuario->getTel());
        $actualizar->bindValue(':fecha_nac', $usuario->getFechaNac());
        $actualizar->bindValue(':foto',$usuario->getFoto());
        $actualizar->bindValue(':curso', $usuario->getCurso());
        $actualizar->bindValue(':estado',$usuario->getEstado());
        $actualizar->bindValue(':tipo',$usuario->getTipo());
        $actualizar->bindValue(':localidad', $usuario->getLocalidad());
        $actualizar->bindValue(':ncuenta',$usuario->getNCuenta());
        $actualizar->execute();/*ejecutamos la sentencia.*/
        print_r($actualizar->errorInfo());
        var_dump($actualizar->errorInfo());
    }
        catch (PDOException $e) {
            print $e->getMessage()."Este es un error";
        }

    }
    public function obtenerUsuario($id_usuario){
        $db = BaseDatos::conectar();
        $select = $db->prepare('SELECT * FROM Usuario WHERE id_usuario=:id_usuario');
        $select->bindValue('id_usuario',$id_usuario);
        $select->execute();
        $usuario = $select->fetch();
        $myUsuario = new Usuario();
        $myUsuario->setIdUsuario($usuario['id_usuario']);
        $myUsuario->setNombre($usuario['nombre']);
        $myUsuario->setApellido($usuario['apellido']);
        $myUsuario->setDni($usuario['dni']);
        $myUsuario->setUsuario($usuario['usuario']);
        $myUsuario->setEmail($usuario['email']);
        $myUsuario->setCodPostal($usuario['cod_postal']);
        $myUsuario->setTel($usuario['telefono']);
        $myUsuario->setDireccion($usuario['direccion']);
        $myUsuario->setLocalidad($usuario['localidad']);
        $myUsuario->setFechaNac($usuario['fecha_nac']);
        $myUsuario->setFoto($usuario['foto']);
        $myUsuario->setCurso($usuario['curso']);
        $myUsuario->setTipo($usuario['tipo']);
        $myUsuario->setNCuenta($usuario['ncuenta']);
        return $myUsuario;
    }

    public function mostrar(){
        $db = BaseDatos::conectar();
        $listadoUsuario = [];

        $select = $db->query('SELECT * FROM Usuario');
        /*Si no están los setters no se mostrarán en la tabla*/
        foreach ($select->fetchAll() as $usuario) {
            $myUsuario = new Usuario();
            $myUsuario->setIdUsuario($usuario['id_usuario']);
            $myUsuario->setNombre($usuario['nombre']);
            $myUsuario->setApellido($usuario['apellido']);
            $myUsuario->setEmail($usuario['email']);
            $myUsuario->setTel($usuario['telefono']);
            $myUsuario->setDireccion($usuario['direccion']);
            $myUsuario->setLocalidad($usuario['localidad']);
            $myUsuario->setFechaNac($usuario['fecha_nac']);
            $myUsuario->setFoto($usuario['foto']);
            $myUsuario->setNCuenta($usuario['ncuenta']);
            $listadoUsuario[] = $myUsuario;
        }
        return $listadoUsuario;
    }

    public function eliminar($id_usuario){
        $db = BaseDatos::conectar();

        $eliminar = $db->prepare('DELETE FROM Usuario WHERE id_usuario=:id_usuario');
        $eliminar->bindValue(':id_usuario',$id_usuario);
        $eliminar->execute();
    }

    public function queSoy($estado){
        switch ($estado) {
            case '1':
                echo 'Admin';
                break;
            case '2':
                echo 'Administrador';
                break;
            case '3':
                echo 'Alumno';
                break;
            case '4':
                echo 'Profesor';
                break;
            default:
                echo "Ha surjio algún problema";
                break;
        }
    }

    public function edad($fecha){
        list($dia,$mes,$ano) = explode("/",$fecha);
        $ano_diferencia  = date("Y") - $ano;
        $mes_diferencia = date("m") - $mes;
        $dia_diferencia   = date("d") - $dia;
        if ($dia_diferencia < 0 || $mes_diferencia < 0)
            $ano_diferencia--;
        return $ano_diferencia;
    }

    public function usuarioCurso($id_usuario){
        $db = BaseDatos::conectar();

        $consultar = $db->prepare(
            "SELECT u.id_usuario, u.nombre, c.id_curso, c.nombre, c.fecha_inicio, c.fecha_fin
                FROM Usuario u
                INNER JOIN mapeo_curso m ON u.id_usuario = m.id_usuario
                INNER JOIN Curso c ON c.id_curso = m.id_curso
                WHERE m.id_usuario = $id_usuario
        ");
        $consultar->execute(array($id_usuario));
        $listadoUsuario = $consultar->fetchAll();
        $contar = count($listadoUsuario);
        return $listadoUsuario;
    }

    public function pago($usuario){
        $db = BaseDatos::conectar();
        //var_dump($usuario);
        try{
            $sentencia = "SELECT p.* FROM Usuario u INNER JOIN Pagos p ON u.id_usuario = p.id_usuario WHERE p.id_usuario = :id_usuario";
            $stmt = $db->prepare($sentencia);
            $stmt->execute([':id_usuario' => $usuario]);
            return $stmt->fetchAll();
        } catch(Exception $e){
            print 'Ha surgido un problema, '.$e->getMessage();
        }
    }

    public function insertarPagador($pago){
        $db=BaseDatos::conectar();
        var_dump($pago);

        try{
            $sentencia = $db->prepare("INSERT INTO Pagos values(:id_pagos,:id_usuario,:iban,:estado,:tipo,:observaciones,:fecha,:nombre,:apellido,:banco)");

            $sentencia->execute(array(':id_pagos'=>NULL,':id_usuario'=>$pago->getIdUsuario(),':iban'=>$pago->getIban(),':estado'=>$pago->getEstado(),':tipo'=>$pago->getTipo(),':observaciones'=>$pago->getObservaciones(),':fecha'=>$pago->getFecha(),':nombre'=>$pago->getNombre(),':apellido'=>$pago->getApellido(),':banco'=>$pago->getBanco()));
        } catch(PDOException $e){
            echo "Error -> ".$e->getMessage();
        }
    }

    public function actualizaPagador($id_pago,$id_usuario,$pago){
        $db=BaseDatos::conectar();

        try{
            $sentencia = $db->prepare("UPDATE Pagos SET id_pagos=:id_pagos,iban=:iban,estado=:estado,tipo=:tipo,observaciones=:observaciones,fecha=:fecha,nombre=:nombre,apellido=:apellido,banco=:banco WHERE id_pagos = :id_pagos");
            $sentencia->execute([':id_pagos'=>$id_pago,':iban'=>$pago->getIban(),':estado'=>$pago->getEstado(),':tipo'=>$pago->getTipo(),':observaciones'=>$pago->getObservaciones(),':fecha'=>$pago->getFecha(),':nombre'=>$pago->getNombre(),':apellido'=>$pago->getApellido(),':banco'=>$pago->getBanco()]);
        } catch(PDOException $e){
            echo "Error -> ".$e->getMessage().'<br>';
            echo "Error -> ".$e->getLine().'<br>';
        }
    }

    public function tipo_pago($n){
        switch ($n) {
            case '0':
                return 'Banco';
                break;
            case '1':
                return 'Efectivo';
                break;
            case '2':
                return 'Bono';
                break;
        }
    }

    public function es_fecha($d){
        $date = new DateTime();
        return $date->format('d/m/Y');
    }
}

?>
    
asked by sergibarca 08.06.2018 в 17:23
source

0 answers