0
Hello. I am performing a query to the database, with php and mysql, and return the result of this query to Datatables (in the form of JSON) which lists this result in a table in my HTML.
The problem is I’m having trouble with accentuation when listing the result in HTML.
I’ve tried everything to format this data and I couldn’t. What makes it more difficult is that I do not have access to the return of this data in Javascript, because it is done automatically with the Data Tables library.
Could someone help me.
Follow the code below:
<?php
session_start();
require_once("../../conexao/conexao-com-banco.php");
$departamento_usuario_logado = $_SESSION["departamento-usuario"];
$usuario_logado = $_SESSION["nome"];
$administrador = $_SESSION["administrador"];
$supervisor = $_SESSION["supervisor"];
//Receber a requisão da pesquisa
$requestData = $_REQUEST;
$empresa_origem = !empty($_POST["empresa_origem"]) ? filter_input(INPUT_POST, 'empresa_origem', FILTER_SANITIZE_STRING) : "";
$departamento = !empty($_POST["departamento"]) ? filter_input(INPUT_POST, 'departamento', FILTER_SANITIZE_STRING) : "";
$funcionario = !empty($_POST["responsavel"]) ? filter_input(INPUT_POST, 'responsavel', FILTER_SANITIZE_STRING) : "";
$cod_empresa = !empty($_POST["cod"]) ? filter_input(INPUT_POST, 'cod', FILTER_SANITIZE_STRING) : "";
$empresa = !empty($_POST["empresa"]) ? filter_input(INPUT_POST, 'empresa', FILTER_SANITIZE_STRING) : "";
$atividade = !empty($_POST["atividade"]) ? filter_input(INPUT_POST, 'atividade', FILTER_SANITIZE_STRING) : "";
$data_inicio = !empty($_POST["data_inicio"]) ? filter_input(INPUT_POST, 'data_inicio', FILTER_SANITIZE_STRING) : "";
$data_fim = !empty($_POST["data_fim"]) ? filter_input(INPUT_POST, 'data_fim', FILTER_SANITIZE_STRING) : "";
//Indice da coluna na tabela visualizar resultado => nome da coluna no banco de dados
$columns = array(
0 => 'responsavel',
1 => 'empresas',
2 =>'tipo_atividade',
3 => 'dt_vencimento',
4 => 'enviado_por',
5 => 'data_upload',
6 => 'codigo'
);
if($data_inicio == "" || $data_fim == "")
{
$query = "";
}
else
{
$query = " AND a.dt_vencimento BETWEEN '$data_inicio' AND '$data_fim'" ;
}
//Obtendo registros de número total sem qualquer pesquisa
$contadorderegistros ="
SELECT
a.tipo_atividade,a.dt_vencimento, b.enviado_por, b.data_upload, b.codigo
FROM
tbl_atividades AS a
INNER JOIN
tbl_arquivos AS b
ON
a.codigo = b.codigo_atividade
WHERE
a.departamento like '%$departamento%' AND a.responsavel like '%$funcionario%' AND a.cod like '%$cod_empresa%' AND a.empresas like '%$empresa%' AND a.tipo_atividade like '%$atividade%' AND a.empresa_origem like '%$empresa_origem%' '$query'";
/*
if(!empty($classificacao))
$contadorderegistros.= " and classificacao = '$classificacao'";
if(!empty($descricao))
$contadorderegistros.= " and descricao = '$descricao'";
*/
$resultado_arquiv = mysqli_query($conecta, $contadorderegistros);
$qnt_linhas = mysqli_num_rows($resultado_arquiv);
//Obter os dados a serem apresentados
$dadosparapreenchimento = "
SELECT
a.responsavel,a.empresas,a.tipo_atividade,a.dt_vencimento,b.enviado_por, b.data_upload, b.codigo
FROM
tbl_atividades AS a
INNER JOIN
tbl_arquivos AS b
ON
a.codigo = b.codigo_atividade
WHERE
a.departamento like '%$departamento%' AND a.responsavel like '%$funcionario%' AND a.cod like '%$cod_empresa%' AND a.empresas like '%$empresa%' AND a.tipo_atividade like '%$atividade%' AND a.empresa_origem like '%$empresa_origem%' '$query'";
//echo $contadorderegistros;
//echo $dadosparapreenchimento;
if( !empty($requestData['search']['value']) ) { // se houver um parâmetro de pesquisa, $requestData['search']['value'] contém o parâmetro de pesquisa
$dadosparapreenchimento.=" and a.responsavel LIKE '%".$requestData['search']['value']."%'";
$dadosparapreenchimento.=" or a.empresas LIKE '%".$requestData['search']['value']."%'";
$dadosparapreenchimento.=" or a.tipo_atividade LIKE '%".$requestData['search']['value']."%' ";
$dadosparapreenchimento.=" or a.dt_vencimento LIKE '%".$requestData['search']['value']."%'";
$dadosparapreenchimento.=" or b.enviado_por LIKE '%".$requestData['search']['value']."%'";
$dadosparapreenchimento.=" or b.data_upload LIKE '%".$requestData['search']['value']."%'";
}
$resultado_arquivos = mysqli_query($conecta, $dadosparapreenchimento);
$totalFiltered = mysqli_num_rows($resultado_arquivos);
//Ordenar o resultado
$dadosparapreenchimento .= " ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." ";
//ACIMA, COMENTAMOS PARA COLOCAR O ORDER BY COM O NOSSO CRITÉRIO, QUE É A DATA DE UPLOAD (QUE ESTÁ NA QUERY ABAIXO)
//$dadosparapreenchimento .= " ORDER BY b.data_upload desc" . " LIMIT ".$requestData['start']." ,".$requestData['length']." " ;
$resultado_arquivos = mysqli_query($conecta, $dadosparapreenchimento);
// Ler e criar o array de dados
$dados = array();
while( $row_arquivo = mysqli_fetch_array($resultado_arquivos) ) {
$dado = array();
$dado[] = utf8_encode($row_arquivo["responsavel"]);
$dado[] = utf8_encode(substr($row_arquivo["empresas"],0,40));
$dado[] = utf8_encode($row_arquivo["tipo_atividade"]);
$dado[] = date("m-Y", strtotime($row_arquivo["dt_vencimento"])); //Importante usar o utf8 em campos que vão conter acento pois dara erro no JSON
$dado[] = utf8_encode($row_arquivo["enviado_por"]);
$dado[] = date("d-m-Y", strtotime($row_arquivo["data_upload"]));
$dado[] = "<a class='btn btn-sm btn-primary' target='_blank' href=exibir-arquivo.php?codigo=" . $row_arquivo['codigo'] . "><i class='fas fa-cloud-download-alt'></i></a>";
$dados[] = $dado;
}
//Cria o array de informações a serem retornadas para o Javascript
$json_data = array(
"draw" => intval( $requestData['draw'] ),//para cada requisição é enviado um número como parâmetro
"recordsTotal" => intval( $qnt_linhas ), //Quantidade de registros que há no banco de dados
"recordsFiltered" => intval( $totalFiltered ), //Total de registros quando houver pesquisa
"data" => $dados //Array de dados completo dos dados retornados da tabela
);
echo json_encode($json_data); //enviar dados como formato json
?>
HTML OUTPUT
There is something very wrong, because it makes no sense to use ut8_decode and then utf8_encode again, I recommend you read this https://answall.com/a/43205/3635, working with Codecs has to be very careful and do step by step and set up the charset at all and save the files. php and . js, if any, with the right codec.
– Guilherme Nascimento