Fala galera, tudo bem?
Entao, preciso muito de ajuda para entender esse erro que esta acontecendo:
Fatal error : Uncaught TypeError: Argument 1 passed to Hr::searchByName() must be of the type string, null given, called in C:\xampp\htdocs\Emplopes\app\ajax-human-resources\search.php on line 11 and defined in C:\xampp\htdocs\Emplopes\app\Classes\Hr.php:54 Stack trace: #0 C:\xampp\htdocs\Emplopes\app\ajax-human-resources\search.php(11): Hr->searchByName(NULL) #1 {main} thrown in C:\xampp\htdocs\Emplopes\app\Classes\Hr.php on line 54
Abaixo está os codigos referenciados no erro:
Hr.php:
<?php
include_once '../../app/Helpers/autoload.php';
class Hr extends Model
{
private string $table = 'dp_rh_table';
public function createEmployee (string $name, string $departamento, string $idade, string $cpf, string $rg, float $salario, string $dt_inicio): bool
{
//criar uma função
$sql = "SELECT id_func, cpf FROM {$this->table} WHERE cpf = :c";
$search = $this->connection->prepare($sql);
$search->bindValue(':c', $cpf, PDO::PARAM_STR);
$search->execute();
if ($search->rowCount() > 0) //existe
{
return false;
}
else //nao existe
{
//insere
$sql = "INSERT INTO {$this->table} (nome, departamento, idade, cpf, rg, salario, dt_inicio, /* documentos */) VALUES (:n, :dp, :i, :c, :r, :s, :dti/* , :dc */)";
$insert = $this->connection->prepare($sql);
$insert->bindValue(':n', $name, PDO::PARAM_STR);
$insert->bindValue(':dp', $departamento, PDO::PARAM_STR);
$insert->bindValue(':i', $idade, PDO::PARAM_STR);
$insert->bindValue(':c', $cpf, PDO::PARAM_STR);
$insert->bindValue(':r', $rg, PDO::PARAM_STR);
$insert->bindValue(':s', $salario, PDO::PARAM_STR);
$insert->bindValue(':dti', $dt_inicio, PDO::PARAM_STR);
$insert->execute();
if ($insert->rowCount() > 0) //inseriu
{
return true;
}
return false;
}
}
public function getEmployee()
{
$sql = "SELECT id_func, nome, departamento, idade, cpf, rg, salario, dt_inicio FROM {$this->table}";
$data = $this->connection->query($sql);
if($data->rowCount() > 0)
{
return $data->fetchAll();
}
return false;
}
public function searchByName (string $name)
{
$sql = "SELECT id_func, nome, departamento, idade, cpf, rg, salario, dt_inicio FROM {$this->table} WHERE nome LIKE :nome ORDER BY id_usuario DESC";
$search = $this->connection->prepare($sql);
$search->bindValue(':nome', "%{$name}%", PDO::PARAM_STR);
$search->execute();
if($search->rowCount() > 0)
{
return $search->fetchAll();
}
return false;
}
public function editEmployee (int $id_func, string $name, string $departamento, string $idade, string $cpf, string $rg, float $salario, string $dt_inicio): bool
{
$sql = "UPDATE dp_rh_table SET nome = :nome , departamento = :departamento, idade = :idade, cpf = :cpf, rg = :rg, salario = :salario, dt_inicio = :dt_inicioWHERE id_func = :id_func";
$edit = $this->connection->prepare($sql);
$edit->bindValue(':nome', $name, PDO::PARAM_STR);
$edit->bindValue(':departamento', $departamento, PDO::PARAM_STR);
$edit->bindValue(':idade', $idade, PDO::PARAM_STR);
$edit->bindValue(':cpf', $cpf, PDO::PARAM_STR);
$edit->bindValue(':rg', $rg, PDO::PARAM_STR);
$edit->bindValue(':salario', $salario, PDO::PARAM_STR);
$edit->bindValue(':dt_inicio', $dt_inicio, PDO::PARAM_STR);
$edit->bindValue(':id_func', $id_func, PDO::PARAM_INT);
$edit->execute();
if ($edit->rowCount() > 0) //ok
{
return true;
}
return false;
}
public function deleteEmployee (int $id_func): bool
{
$sql = "DELETE FROM {$this->table} WHERE id_func = :id_func";
$delete = $this->connection->prepare($sql);
$delete->bindValue(':id_func', $id_func, PDO::PARAM_INT);
$delete->execute();
if ($delete->rowCount() > 0)
{
return true;
}
return false;
}
}
search.php:
<?php
include_once '../Classes/Hr.php';
//pegando e tratando a variavel
//$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$nome = filter_input(INPUT_POST, 'q', FILTER_SANITIZE_STRING);
$employee = new Hr();
$employees = $employee->searchByName($nome);
if (!$employees)
{
echo 'nousers';
exit;
}
?>
<!-- Table -->
<table class="table table-bordered table-hover text-center">
<thead class="thead-dark">
<th scope="col">#</th>
<th scope="col">Nome</th>
<th scope="col">Departamento</th>
<th scope="col">Idade</th>
<th scope="col">CPF</th>
<th scope="col">RG</th>
<th scope="col">Salario</th>
<th scope="col">Data de inicio</th>
<th scope="col">Ação</th>
</thead>
<tbody>
<?php foreach($employees as $item): ?>
<tr>
<th scope="row"><?= $item->id_func; ?></th>
<td><?= $item->nome; ?></td>
<td><?= $item->departamento; ?></td>
<td><?= $item->idade; ?></td>
<td><?= $item->cpf; ?></td>
<td><?= $item->rg; ?></td>
<td><?= $item->salario; ?></td>
<td><?= $item->dt_inicio; ?></td>
<td>
<!-- edit -->
<button type="button" class="btn text-dark" data-toggle="modal" title="Editar funcionario" data-target="#modalEdit" data-id_func="<?= $item->id_func; ?>" data-nome="<?= $item->nome; ?>" data-departamento="<?= $item->departamento; ?>" data-idade="<?= $item->idade ?>" data-cpf="<?= $item->cpf ?>" data-rg="<?= $item->rg ?>" data-salario="<?= $item->salario ?>" data-dt_inicio="<?= $item->dt_inicio ?>" >
<i class="fas fa-user-edit"></i>
</button>
<!-- delete -->
<button type="button" class="btn text-danger" data-toggle="modal" title="Excluir funcionario" data-target="#modalDelete" data-id_func="<?= $item->id_func; ?>" data-nome="<?= $item->nome; ?>" data-departamento="<?= $item->departamento; ?>" data-idade="<?= $item->idade ?>" data-cpf="<?= $item->cpf ?>" data-rg="<?= $item->rg ?>" data-salario="<?= $item->salario ?>" data-dt_inicio="<?= $item->dt_inicio ?>" >
<i class="fas fa-trash-alt"></i>
</button>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Preciso resolver logo esse problema pois apresento esse codigo amanha.