Vou inserir na tabela atend, idade que aquele atendimento atende, exemplo de 0 a 17 anos.
Alguns atendimentos não terão nenhuma informação nestes campos.
Preciso que ao inserir guias caso haja a informação nestes campos, faça uma verificação da idade do paciente e diga que a especialidade não atende caso esteja fora deste intervalo.
PS: Eu sei que os nomes dos campos das tabelas não precisam ter _guia ou _atend, mas preferi colocar mesmo sabendo que é redundante pois como sou muito iniciante estava tendo dificuldades para me organizar, ok?
<?php include_once "../../config/db.php";?>
<?php include_once "../../view/layout/menu.php";?>
<?php include_once "../../config/functions.php";?>
<?php
date_default_timezone_set('America/Sao_Paulo');
setlocale(LC_NUMERIC, 'pt_BR');
$id = $_GET['id'];
if (count($_POST) > 0) {
$data_hora_formatada = date('Y-m-d H:i:s');
$dt_cadastro = date('Y-m-d H:i:s');
$posto = $_POST['posto'];
$status = $_POST['status'];
$paciente = $_POST['paciente'] ?? null;
$tipo_atend = $_POST['tipo_atend'];
$atend = $_POST['atend'];
$peso = str_replace(',', '.', $_POST['peso']);
$alt = str_replace(',', '.', $_POST['alt']);
$urg = isset($_POST['urg']) ? 1 : 0;
$esp = $_POST['esp'];
$erros = [];
// Verifica se o paciente existe
$stmt = $conn->prepare("SELECT * FROM paciente WHERE id_paciente = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$pac = $stmt->fetch(PDO::FETCH_ASSOC);
// Calcular a idade do paciente
$dt_nascto = $pac['dt_nascto_paciente'];
$idade = date_diff(date_create($dt_nascto), date_create('now'))->y;
if (!empty($tipo_atend) && !empty($atend)) {
// Buscar os limites de idade da especialidade
$stmt = $conn->prepare("SELECT idade_ini_atend, idade_fim_atend FROM atend WHERE id_atend = :id_atend");
$stmt->bindParam(':id_atend', $atend);
$stmt->execute();
$atend_data = $stmt->fetch(PDO::FETCH_ASSOC);
// Verifica se a especialidade foi encontrada
if ($atend_data) {
$idade_ini = $atend_data['idade_ini_atend'];
$idade_fim = $atend_data['idade_fim_atend'];
// Verifica se os limites de idade estão definidos
if (!is_null($idade_ini) && !is_null($idade_fim) && $idade_ini !== '' && $idade_fim !== '') {
$idade_ini = (int)$idade_ini;
$idade_fim = (int)$idade_fim;
// Verifica se a idade do paciente está dentro dos limites
if ($idade < $idade_ini || $idade > $idade_fim) {
$erros[] = "A idade do paciente não está dentro dos limites permitidos para esta especialidade!";
}
}
} else {
$erros[] = "Especialidade não encontrada!";
}
}
if (empty($posto)) {
$erros[] = "Selecione um Posto!";
}
if (empty($esp)) {
$erros[] = "Informe qual especialista solicitou!";
}
if (empty($tipo_atend)) {
$erros[] = "Selecione um tipo de Especialidade!";
}
if (empty($atend)) {
$erros[] = "Informe a Especialidade!";
}
if (empty($peso)) {
$erros[] = "Informe o Peso!";
}
if (!is_numeric($peso) || $peso <= 0) {
$erros[] = "Peso deve ser um número positivo!";
}
if (empty($alt)) {
$erros[] = "Informe a altura!";
}
if (!is_numeric($alt) || $alt <= 0) {
$erros[] = "Altura deve ser um número positivo!";
}
if (!empty($erros)) {
echo "<script>alert('ATENÇÃO! " . implode("\\n", $erros) . "');</script>";
} else {
$sql_code = "INSERT INTO guia(id_posto, status_guia, id_paciente, id_tipo, id_atend, peso_guia, alt_guia, urg_guia, dt_cadastro_guia, id_esp) VALUES(:posto, :status, :paciente, :tipo_atend, :atend, :peso, :alt, :urg, :dt_cadastro, :esp)";
$stmt = $conn->prepare($sql_code);
$stmt->bindParam(':posto', $posto);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':paciente', $id);
$stmt->bindParam(':tipo_atend', $tipo_atend);
$stmt->bindParam(':atend', $atend);
$stmt->bindParam(':peso', $peso);
$stmt->bindParam(':alt', $alt);
$stmt->bindParam(':urg', $urg);
$stmt->bindParam(':dt_cadastro', $data_hora_formatada);
$stmt->bindParam(':esp', $esp);
$deu_certo = $stmt->execute();
if ($deu_certo) {
echo "<script>
alert('Guia cadastrada com sucesso!!');
window.location.href = 'buscaGuias.php?id_paciente=" . htmlspecialchars($id) . "';
</script>";
unset($_POST);
}
}
}
$stmt = $conn->prepare("SELECT * FROM paciente WHERE id_paciente = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$pac = $stmt->fetch(PDO::FETCH_ASSOC);
?>
```html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="../../assets/css/addGuia.css">
<title>Cadastro de Guias</title>
</head>
<body>
<div class="container" id="contcadGuia">
<br>
<div class="row">
<h3><?php echo "" . $pac['nome_paciente'] . ""?></h3>
<div class="form col-sm-2" id="btnVoltar">
<a href="buscaGuias.php?id_paciente=<?php echo htmlspecialchars($id); ?>" class="form-control btn btn-primary">Voltar</a>
</div>
</div>
<p class="destaque" style="margin-left:60px;">*Campo Obrigatório</p>
<form class="form-control-sm" method="post" id="form_addGuia" class="form_addGuia" name="form_addGuia" action="">
<br>
<div class="row">
<div hidden class="form col-sm-2" id="divStatus">
<label>Status<span class="destaque">*</span></label>
<input class="form-control form-control-sm inputs" name="status" id="status" type="hidden" maxlength="10" value="Ativa" readonly>
</div>
<div class="form col-sm-2" id="divPosto">
<label>Posto Solicitante<span class="destaque">*</span></label>
<input type="hidden" name="id" maxlength="150" value="<?php echo $id;?>">
<select name="posto" id="posto" required>
<option value="">Selecione..</option>
<?php
$query = $conn->query("SELECT id_posto, apelido_posto FROM posto ORDER BY apelido_posto ASC");
$registros = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($registros as $option) {
?>
<option value="<?php echo $option['id_posto']?>"><?php echo $option['apelido_posto']?></option>
<?php
}
?>
</select>
</div>
<div class="form col-sm-2" id="divEsp">
<label>Especialista Solicitante<span class="destaque">*</span></label>
<select name="esp" id="esp" required>
<option value="">Selecione..</option>
<?php
$query = $conn->query("SELECT id_esp, nome_esp FROM especialista ORDER BY nome_esp ASC");
$registros = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($registros as $option) {
?>
<option value="<?php echo $option['id_esp']?>"><?php echo $option['nome_esp']?></option>
<?php
}
?>
</select>
</div>
<div class="form col-sm-3" id="divTipo">
<label>Tipo de Especialidade<span class="destaque">*</span></label>
<select name="tipo_atend" id="tipo_atend" required>
<option value="">Selecione..</option>
<?php
$query = $conn->query("SELECT * FROM tipo_atend ORDER BY nome_tipo ASC");
$registros = $query->fetchAll(PDO::FETCH_ASSOC);
foreach($registros as $option) {
?>
<option value="<?php echo $option['id_tipo']?>"><?php echo $option['nome_tipo']?></option>
<?php
}
?>
</select>
</div>
<div class="form col-sm-2" id="divAtend">
<label>Especialidade<span class="destaque">*</span></label>
<select name="atend" id="atend" required>
<option value="">Selecione..</option>
</select>
</div>
<div class="form col-sm-1" id="divPeso">
<label>Peso<span class="destaque">*</span></label>
<input class="form-control form-control-sm inputs" name="peso" id="peso" type="text" maxlength="10" value="<?php if(isset($_POST['peso'])) echo $_POST['peso'];?>">
</div>
<div class="form col-sm-1" id="divAlt">
<label>Altura<span class="destaque">*</span></label>
<input class="form-control form-control-sm inputs" name="alt" id="alt" type="text" maxlength="10" value="<?php if(isset($_POST['alt'])) echo $_POST['alt'];?>">
</div>
<div class="container" id="contUrg">
<div class="form col-sm-1 checkbox-item" id="divUrg">
<label>
Urgente<input type="checkbox" name="urg" id="urg" value="Sim">
<span class="custom-checkbox"></span>
</label>
</div>
</div>
<div class="form col-sm-1" id="divBtnInserir">
<input class="form-control btn btn-primary" id="btnInserir" name="salvar" type="submit" value="Inserir">
</div>
</div>
</form>
</div>
<script type="text/javascript" defer src="../../assets/js/addGuias.js"></script>
</body>
</html>
Esqueci de avisar que o código está validando mesmo quando os campos estão vazios!
Pergunta
Lucimara Moquenco Canhiato
Olá!
Pessoal, meu problema é o seguinte:
Tenho uma tabela para cadastrar guias com os campos:
id_guia; status_guia; dt_cadastro_guia, id_posto, id_paciente, id_tipo(tipo de atendimento), id_atend(atendimento), peso_guia, alt_guia, urg_guia, id_esp(especialista).
Na minha tabela atend(atendimento) tenho os campos:
id_atend, id_tipo, nome_atend, obs_atend, idade_ini_atend, idade_fim_atend.
Vou inserir na tabela atend, idade que aquele atendimento atende, exemplo de 0 a 17 anos.
Alguns atendimentos não terão nenhuma informação nestes campos.
Preciso que ao inserir guias caso haja a informação nestes campos, faça uma verificação da idade do paciente e diga que a especialidade não atende caso esteja fora deste intervalo.
PS: Eu sei que os nomes dos campos das tabelas não precisam ter _guia ou _atend, mas preferi colocar mesmo sabendo que é redundante pois como sou muito iniciante estava tendo dificuldades para me organizar, ok?
Esqueci de avisar que o código está validando mesmo quando os campos estão vazios!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.