Tenho um formulário referente a reserva de veículos da empresa, ele passa por 4 validações para garantir que o veículo está disponível na data e hora definidos. Caso veículo esteja disponível, ele grava o registro e caso não esteja, ele gera um aviso e não grava o registro da reserva.
No ambiente de desenvolvimento do Scriptcase ele está funcionando normalmente, não só executando como a validação também funciona, mas quando exportado para o ambiente de produção, durante validação ele apresenta o erro “Undefined variable: category”.
A variável "category é utilizada na validação, mas o estranho é que antes das últimas alterações a aplicação no ambiente de desenvolvimento não apresentava esse erro, e já utilizava essa variável.
Segue o código da validação:
// Captura dados do formulário
$dh_start = {start_date}. ' '. {start_time};
$dh_end = {end_date} . ' '. {end_time};
$key = {id};
$id = {id};
$start_time = {start_time};
$end_time = {end_time};
$category = {category};
//Se chave(id) for vazia, é um registro novo, e assume -1
if (empty($key)) {
$key = '-1';
}
// Estrutura do Sql pra verificação
//VALIDAÇÃO 1
$sql = "select category from reserva_veiculo
where id != '".$key."'
and category = '".$category."'
and (( '".$dh_start."' >= concat(start_date, ' ', start_time)
and '".$dh_start."' < concat(end_date , ' ', end_time))
or ('".$dh_end."' >= concat(end_date , ' ', end_time)
and '".$dh_end."' < concat(start_date, ' ', start_time)))";
//Executa o $sql, e retorno na variavel ret
sc_select(ret, $sql);
// captura dados
$existe = $ret->fields['category'];
// se existir dados, acusar erro e não salva
if (!empty($existe)) {
sc_error_message('Esse veículo não está disponível.');
}
//VALIDAÇÃO 2
$sql = "select category from reserva_veiculo
where id != '".$key."'
and category = '".$category."'
and (('".$dh_start."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time) or
'".$dh_end."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time))
or ('".$dh_start."' < concat(start_date,' ', start_time)
and ('".$dh_end."' > concat(end_date ,' ', end_time )
or '".$dh_end."' < concat(end_date, ' ', end_time))))";
//Executa o $sql, e retorno na variavel ret
sc_select(ret, $sql);
// captura dados
$existe = $ret->fields['category'];
// se existir dados, acusar erro e não salva
if (!empty($existe)) {
sc_error_message('Esse veículo não está disponível.');
}
//VALIDAÇÃO 3
$sql = "select category from reserva_veiculo
where id != '".$key."'
and category = '".$category."'
and (('".$dh_start."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time) or '".$dh_end."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time))
or ('".$dh_start."' < concat(start_date, ' ', start_time) and ('".$dh_end."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time)))
or ('".$dh_end."'> concat(end_date, ' ', end_time) and ('".$dh_start."' between concat(start_date, ' ', start_time) and concat(end_date, ' ', end_time))))";
//Executa o $sql, e retorno na variavel ret
sc_select(ret, $sql);
// captura dados
$existe = $ret->fields['category'];
// se existir dados, acusar erro e não salva
if (!empty($existe)) {
sc_error_message('Esse veículo não está disponível.');
}
//VALIDAÇÃO 4
$sql = "SELECT category FROM reserva_veiculo
WHERE id != '".$id."'
AND category = '".$category."'
AND end_date = '".$end_date."'
AND (start_time = '".$start_time."'
OR end_time = '".$start_time."'
OR end_time = '".$end_time."'
OR start_time = '".$end_time."'
OR ('".$start_time."' BETWEEN start_time AND end_time)
OR ('".$end_time."' BETWEEN start_time AND end_time))";
//Executa o $sql, e retorno na variavel ret
sc_select(ret, $sql);
// captura dados
//$existe = $ret->fields['category'];
// se existir dados, acusar erro e não salva
if (!empty($ret)) {
sc_error_message('Esse veículo não está disponível.');
}