PHP - imagen no mostrada en FPDF

 
Vista:
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Alejandro (172 intervenciones) el 13/03/2020 09:06:23
buenos dias,

tengo un problema al mostrar una imagen en FPDF en mi intranet. Resulta que tengo un formulario donde introduzco ciertos datos incluida una foto de perfil que se muestra previamente y la cual se guarda en un directorio y guardo la ruta en mi base de datos. Despues tengo un boton que genera un PDF con los registros introducidos incluida la imagen de perfil con FPDF. Hasta aqui todo bien, lo muestra sin problemas.
Despues tengo otra página donde modifico esos datos. Si modifico la foto me la cambia sin problemas, pero es cuando modifico otros datos cuando a la hora de generar el PDF me salta el siguiente error:

Fatal error: Uncaught Exception: FPDF error: Image file name is empty in C:\xampp\htdocs\intranet\fpdf\fpdf.php:271 Stack trace: #0 C:\xampp\htdocs\intranet\fpdf\fpdf.php(868): FPDF->Error('Image file name...') #1 C:\xampp\htdocs\intranet\consultar_usuario.php(83): FPDF->Image('', 160, 50, 25) #2 {main} thrown in C:\xampp\htdocs\intranet\fpdf\fpdf.php on line 271

Luego miro en mi base de datos a ver si se ha guardado la ruta de la imagen y descubro que no hay nada en el registro de ese campo foto. LLevo mucho con esto y no se si es que necesito hacer alguna condicion que me diga que elimine el registro anterior. Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Julio (830 intervenciones) el 13/03/2020 09:09:56
Hola.

¿Puedes poner los códigos? El de cuando lo creas y cuando lo modificas. Da la sensación de que cuando lo modificas sin foto, está machacando todos los datos, incluida la foto que ya estaba puesta y que desaparece.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Alejandro (172 intervenciones) el 13/03/2020 09:22:53
Aqui la pagina FPDF:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
 
 
session_start();
include("conexion.php");
 
$id=$_GET['id_personal'];
 
 
//libreria fpdf
 
require_once("fpdf/fpdf.php");
 
class PDF extends FPDF{
    function Header(){ //función header
              global $id;
              $consulta="SELECT * FROM datos_personales WHERE id_personal=".$id;
              $resultado = mysqli_query($GLOBALS['conn'],$consulta);
 
              while($filas=mysqli_fetch_array($resultado)){
 
 
              $this->Cell(30,25,'',0,0,'C',$this->Image("imagenes/barrioempleo.png", 10,12, 19));
 
              $this -> SetFont ( 'Arial' , 'B' , 15 );
              $this -> Cell( 110, 10 , "Ficha de usuario: ".$filas['nombre']." ".$filas['apellido1']." ".$filas['apellido2'] , 1 , 0 , 'C' );
              $this->Cell(30,25,'',0,0,'C',$this->Image("imagenes/mancomunidad.png",165,12, 25));
              $this -> Ln(20);
 
 
 
              }
 
 
    }
 
    function Footer() { //función footer
      $this->SetY(-15); //posición en el pie. 1.5 cm del borde
      $this->SetFont("Arial", "I", 0); //tipo de letra
      //Texto del pie de página
      $this->Cell(0,10,  'Página '.$this->PageNo().' de {nb}' ,0,0,'C');
    }
}
 
$pdf = new PDF();//creas un documento pdf
$pdf->AliasNbPages();//le das un alias a las paginas del documento
$pdf->SetMargins(10,15);//estableces el margen
$pdf->addPage('P','a4');//añade una nueva pagina al documento, P (Portrait o normal) y el formato
$pdf->setFont('arial','B',7);//establece la fuente (familia, estilo, tamaño)
$consulta = "SELECT * FROM datos_personales WHERE id_personal=".$id;
$resultado = mysqli_query($GLOBALS['conn'],$consulta);
while ($datos = mysqli_fetch_array($resultado)){
 
  $nombre = $datos['nombre'];
  $apellido1 = $datos['apellido1'];
  $apellido2 = $datos['apellido2'];
  $foto = $datos['foto'];
  $dni = $datos['dni'];
  $nie =$datos['nie'];
  $direccion = $datos['direccion'];
  $poblacion = $datos['poblacion'];
  $provincia = $datos['provincia'];
  $nacionalidad = $datos['nacionalidad'];
  $telf1 = $datos['telefono_movil'];
  $telf2 = $datos['telefono_casa'];
  $email = $datos['email'];
  $fechaRegistro = $datos['fecha_registro'];
  $fechaNacimiento = $datos['fecha_nacimiento'];
  $rutaCurriculum = $datos['ruta_curriculum'];
  $rutaDarde = $datos['ruta_darde'];
  $rutaVidalaboral = $datos['ruta_vida_laboral'];
  $situacionActual = $datos['situacion_actual'];
  $estadoCivil = $datos['estado_civil'];
  $tipologiaFamiliar = $datos['tipologia_familiar'];
 
 
$pdf -> Ln();
$pdf -> SetFont('Arial','B',12);
$pdf -> write(0,"DATOS PERSONALES","","",'L',true);
$pdf -> Ln(10);
$pdf -> SetFont( 'Times' , 'B' , 7 );
$pdf-> Image("$foto", 160, 50, 25);
 
 
 
if($datos['dni']) {
 
  $pdf -> write(0,"DNI: ".$dni."    /     Nacionalidad: ".$nacionalidad."    /    Fecha de nacimiento:  ".$fechaNacimiento,"","",'L',true);
 
}else{
 
  $pdf -> write(0,"NIE: ".$nie."    /     Nacionalidad: ".$nacionalidad."    /    Fecha de nacimiento:  ".$fechaNacimiento,"","",'L',true);
 
}
$pdf -> Ln(5);
$pdf -> write(0,"Direccion: ".$direccion."   /  Poblacion: ".$poblacion."  /  Provincia: ".$provincia,"","",'L',true);
$pdf -> Ln(5);
$pdf -> write(0,"Teléfono movil: ".$telf1."   /   Teléfono casa: ".$telf2."   /    Correo electrónico: ".$email,"","",'L',true);
$pdf -> Ln(5);
$pdf -> write(0,"Estado Civil: ".$estadoCivil."   /    Familia: ".$tipologiaFamiliar,"","",'L',true);
$pdf -> Ln(10);
$pdf -> SetFont('Arial','B',12);
$pdf -> write(0,"DATOS LABORALES","","",'L',true);
$pdf -> Ln(10);
$pdf -> SetFont( 'Times' , 'B' , 7 );
$pdf -> write(0,"Situacion actual: ".$situacionActual,"","","L",true);
$pdf -> Ln(5);
 
}
mysqli_free_result($resultado);
 
$pdf->Output('informe.pdf','I');
 
 
 
 
?>


Y aqui la pagina de modificado de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
 
include("conexion.php");
 
$id=$_GET['id_personal'];
 
$nombre = $_POST['nombre'];
$apellido1 = $_POST['apellido1'];
$apellido2 = $_POST['apellido2'];
$foto = $_FILES['foto'];
$dni = $_POST['dni'];
$nie = $_POST['nie'];
$Fnacimiento = $_POST['born'];
$direccion = $_POST['direccion'];
$poblacion = $_POST['poblacion'];
$cp = $_POST['codigopostal'];
$provincia = $_POST['provincia'];
$nacionalidad = $_POST['nacionalidad'];
$telefono1 = $_POST['telf1'];
$telefono2 = $_POST['telf2'];
$email = $_POST['email'];
$fecharegistro = $_POST['fechalta'];
 
//archivos
$curriculum = $_FILES['curriculum'];
$darde = $_FILES['darde'];
$vidalab = $_FILES['vidalab'];
 
 
//subida a directorio de foto de perfil
 
$archivo = (isset ($foto)) ? $foto: null;
$archivo_destino = null;
 
if ($archivo) {
$extension = pathinfo($archivo['name'], PATHINFO_EXTENSION);
$extension = strtolower($extension);
 
    if ($extension == "jpg" or $extension == "png")
    {
 
            $archivo_destino = "archivos/imagenes_perfil/".basename($archivo['name']);
 
            $archivo_ok = move_uploaded_file($archivo['tmp_name'], $archivo_destino);
    }else {
 
            echo "La extension de la imagen no es correcta<br/>";
 
    }
}
 
//subida a directorio de curriculum
$archivo2 = (isset ($curriculum)) ? $curriculum: null;
$archivo_destino2 = null;
 
if ($archivo2) {
$extension = pathinfo($archivo2['name'], PATHINFO_EXTENSION);
$extension = strtolower($extension);
 
    if ($extension == "pdf")
    {
 
            $archivo_destino2 = "archivos/documentos/curriculum/".basename($archivo2['name']);
 
            $archivo_ok = move_uploaded_file($archivo2['tmp_name'], $archivo_destino2);
 
 
    }else {
 
            echo "La extension del documento curriculum no es PDF o no se ha seleccionado ningún archivo<br/>";
 
    }
}
 
 
//subida a directorio de darde
 
$archivo3 = (isset ($darde)) ? $darde: null;
$archivo_destino3 = null;
 
if ($archivo3) {
$extension = pathinfo($archivo3['name'], PATHINFO_EXTENSION);
$extension = strtolower($extension);
 
    if ($extension == "pdf")
    {
 
            $archivo_destino3 = "archivos/documentos/darde/".basename($archivo3['name']);
 
            $archivo_ok = move_uploaded_file($archivo3['tmp_name'], $archivo_destino3);
 
 
    }else {
 
            echo "La extension del documento darde no es PDF o no se ha seleccionado ningún archivo<br/>";
 
    }
}
 
 
//subida a directorio de vida laboral
 
$archivo4 = (isset ($vidalab)) ? $vidalab: null;
$archivo_destino4 = null;
 
if ($archivo4) {
$extension = pathinfo($archivo4['name'], PATHINFO_EXTENSION);
$extension = strtolower($extension);
 
    if ($extension == "pdf")
    {
 
            $archivo_destino4 = "archivos/documentos/vida laboral/".basename($archivo4['name']);
 
            $archivo_ok = move_uploaded_file($archivo4['tmp_name'], $archivo_destino4);
 
 
    }else {
 
            echo "La extension deL documento vida laboral no es PDF o no se ha seleccionado documento PDF</br>";
 
    }
}
 
//subimos los datos pasados por formulario a la base de datos
 
 
$consulta = "UPDATE datos_personales SET nombre='".$nombre."', apellido1='".$apellido1."', apellido2='".$apellido2."', dni='".$dni."', nie='".$nie."', direccion='".$direccion."', poblacion='".$poblacion."', provincia='".$provincia."', cp='".$cp."', nacionalidad='".$nacionalidad."', fecha_nacimiento='".$Fnacimiento."', foto='".$archivo_destino."', telefono_movil='".$telefono1."', telefono_casa='".$telefono2."', email='".$email."', fecha_registro='".$fecharegistro."', ruta_curriculum='".$archivo_destino2."', ruta_darde='".$archivo_destino3."', ruta_vida_laboral='".$archivo_destino4."' WHERE id_personal=".$id;
 
 
if(mysqli_query($GLOBALS['conn'],$consulta)) {
 
    echo "Datos modificados<br/>";
    echo "<a href=index.php>Volver</a>";
 
}else{
 
    echo "Error: " . $consulta . "<br>" . mysqli_error($GLOBALS['conn']);
 
}
 
cerrarBD();
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Julio (830 intervenciones) el 13/03/2020 09:31:21
1
$consulta = "UPDATE datos_personales SET nombre='".$nombre."', apellido1='".$apellido1."', apellido2='".$apellido2."', dni='".$dni."', nie='".$nie."', direccion='".$direccion."', poblacion='".$poblacion."', provincia='".$provincia."', cp='".$cp."', nacionalidad='".$nacionalidad."', fecha_nacimiento='".$Fnacimiento."', foto='".$archivo_destino."', telefono_movil='".$telefono1."', telefono_casa='".$telefono2."', email='".$email."', fecha_registro='".$fecharegistro."', ruta_curriculum='".$archivo_destino2."', ruta_darde='".$archivo_destino3."', ruta_vida_laboral='".$archivo_destino4."' WHERE id_personal=".$id;

Fíjate que es normal que te pase lo que dices. Si no hay archivos subidos, $archivo_destino, $archivo_destino2, $archivo_destino3 y $archivo_destino4, ¿qué tienen? El valor null. Y tú estás actualizando la base de datos igualmente con esos valores, por lo tanto es normal que te pase lo que indicas. Si no se modifica la imagen, tú estás guardando el valor null como ruta de los archivos.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Alejandro (172 intervenciones) el 13/03/2020 09:49:45
vale entonces tendre que especificar que cuando no rellene los campos mantenga lo anterior?? o meter el update de esos archivos en los if anteriores???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Julio (830 intervenciones) el 13/03/2020 10:01:28
Hazlo como quieras, pero obviamente si $archivo_destino es null, por ejemplo, NO debería estar en la sentencia UPDATE. El cómo lo montes ya es cosa tuya y no es complicado. Puedes hacer distintas sentencias UPDATE o concatenar campos si existen o no, como quieras. Pero, obviamente, si no hay archivo, no actualices ese campo.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Alejandro (172 intervenciones) el 13/03/2020 10:05:00
vale muchas gracias Julio, ahora que lo veo así, es muy lógico ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Julio (830 intervenciones) el 13/03/2020 10:06:53
Sí, los errores más simples son los que muchas veces nos cuesta ver porque nos ciega el buscar algo más complejo. Me alegro de que te haya ayudado.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Kathyu (714 intervenciones) el 13/03/2020 12:52:14
Otra forma de hacerlo es poner los mismos valores de la DB, desde que lo recuperas en la pagina de modificación, hasta que lo pasas en el POST del formulario, es este caso ningún campo sera null ya que previamente estas enviando lo mismo.

En los updates esta es la forma mas sencilla, osea siempre se modifica todo el registro (toda la fila de la DB) pero, aunque solo se haya cambiado un dato, los otros datos que no fueron modificados vienen exactamente iguales a como estaban, el resultado? no da ninguna falla en la informacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagen no mostrada en FPDF

Publicado por Alejandro (172 intervenciones) el 13/03/2020 13:57:38
Si ya lo he resuelto. En la pagina de PDF he puesto una condicion de que si el registro esta vacio no haga nada y si esta rellenado que lo modifique. Luego en la pagina de modificacion he hecho lo mismo si se pasa un campo en el formulario que lo actualice y sino pues que no haga nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar