PHP - Mostrar multiples registros del mismo empleado

 
Vista:
Imágen de perfil de Alberto

Mostrar multiples registros del mismo empleado

Publicado por Alberto (9 intervenciones) el 16/03/2023 22:44:07
Tengo mi siguiente codigo para editar una plantilla de excel y convertirla a PDF la cual se llena con informacion extraida de mi base de datos mi problema es que mi plantilla es un examen en el cual la columna I se deben mostrar las respuestas ingresadas por el empleado cuando realizo el examen en linea.

Mi problema es que cuando extraigo la respuesta en todas las preguntas me pone la misma respusta ya que me esta tomando como referencia la ultima respuesta ingresada por el empleado, lo que quiero saber o si me pueden orientar es como puedo mostrar todas las respuestas que obtengo con la siguiente consulta.

1
SELECT * FROM mst_useranswer,empleados WHERE idaso = 253415 AND test_id = 1 AND codigo_persona = 253415 ORDER BY que_id ASC;


380eG

Edit.php

Este es el codigo que uso para la modificacion y conversion de la plantilla del examen Se que me toma el ultimo registro por que en columna B5 extraigo la fecha del examen y me pone la del ultimo registro.

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
<?php
 
require 'vendor/autoload.php';
require 'conexion.php';
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
$sql = "SELECT * FROM mst_useranswer,empleados WHERE idaso = 253415 AND test_id = 1 AND codigo_persona = 253415 ORDER BY que_id ASC";
$resultado = $mysqli->query($sql);
 
 
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$path ='Examen.xlsx';
    $spreadsheet = $reader->load($path);
 
    $sheet = $spreadsheet->getActiveSheet();
 
    while($rows = $resultado->fetch_assoc()){
        $sheet->setCellValue('B5', $rows['date']);
        $sheet->setCellValue('G4', $rows['Nombre']);
        $sheet->setCellValue('G5', $rows['codigo_persona']);
        $sheet->setCellValue('I10', $rows['your_ans']);
        $sheet->setCellValue('I14', $rows['your_ans']);
        $sheet->setCellValue('I18', $rows['your_ans']);
        $sheet->setCellValue('I22', $rows['your_ans']);
        $sheet->setCellValue('I26', $rows['your_ans']);
        $sheet->setCellValue('I30', $rows['your_ans']);
        $sheet->setCellValue('I34', $rows['your_ans']);
        $sheet->setCellValue('I38', $rows['your_ans']);
        $sheet->setCellValue('I42', $rows['your_ans']);
        $sheet->setCellValue('I46', $rows['your_ans']);
        $sheet->setCellValue('I49', '10');
        $sheet->setCellValue('C52', $rows['Nombre']);
        $sheet->setCellValue('D53', 'SI');
        $sheet->setCellValue('I53', 'NO');
        $namefile = $rows['codigo_persona'];
    }
 
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Mpdf");
    $pdf_path = "$namefile.pdf";
    //$writer->save($pdf_path);
    //$writer->save('Hostel_.xlsx');
 
    if (!file_exists('files')) {
        mkdir('files', 0755);
    }
    $writer->save('files/'.$pdf_path);
 
    $dir = 'files/';
 
    $new_name_file = $dir . $pdf_path;
 
    $ins = $mysqli->query("INSERT INTO files(title,description,url) VALUES ('','','$new_name_file')");
 
    if ($ins) {
        echo 'success';
    } else {
        echo 'fail';
    }
 
 
?>

Este es mi resultado al ejecutar el php


vf4zY
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 victor

Mostrar multiples registros del mismo empleado

Publicado por victor (6 intervenciones) el 16/03/2023 23:32:06
tu error esta aqui:

$sheet->setCellValue('B5', $rows['date']);


aqui le dices que te pegue en la COLUMNA B y FILA 5 el resultado, eso tienes que hacer dinamico.


seria bueno que sumes la fila, Ejemplo:


1
2
3
4
5
$suma_fila = 0:
while($rows = $resultado->fetch_assoc()){
$suma_fila = $suma_fila + 1;
        $sheet->setCellValue('B'.$suma_fila , $rows['date']);
}

Asi, cada vez que realice la impresion, baje a la siguiente fila dentro de la misma columna.
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 Alberto

Mostrar multiples registros del mismo empleado

Publicado por Alberto (9 intervenciones) el 16/03/2023 23:37:09
Si no estaria mal lo unico malo es que donde quiero imprimir los valores son celdas que estan separadas por 2 o mas celdas o otras que estan en otra columna

anexo imagen de la plantilla en excel que es donde imprimo mis resultados


as

Si te das cuenta los campos que requiero llenar son los siguientes

Fecha
Nombre
No. de reloj
Respuesta

Y si te das cuenta son posiciones diferentes como podria aplicarlo ahi
Quizas si lo sabes y yo entendi mal tu respuesta en caso de ser asi me disculpo
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