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');
}
}
?>