Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, bom dia.
tenho um problema que é mais ou menos assim
Um condominio com 200 pessoas um campo de futebol e uma sala de ping pong.
Para usar, tem ed reservar, e o sistema que desenvolveram realmente agenda, mas com um problema.
ele agenda varios compromissos na mesma hora.
Dai se pode imaginar 6 times de futebol, 3 bolas, 66 homens, seis cores de camisa disputando o exiguo campo.
Não dá e me pediram para eu tentar uama solução e eu pensei num trigger, que é masi ou menos assim:
DELIMITER &&
CREATE TRIGGER agenda BEFORE INSERT ON reserva_araealazer
FOR EACH ROW
BEGIN
SET @data = NEW.data;
IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin) THEN
SET 'aqui eu nao sei mais'
END IF;
END &&
DELIMITER ;
Neste ponto em que eu nao sei mais, queria devolver uma mensagem na tela para o funcionario dizendo que o horário esta ocupado por outro bando de festeiros.]Alguém pode me ajudar
eu sei que estudei isso, ms nao consigo lembrar o que é. obrigado.
Depois que eu postei ja vi um erro. O trigger é assim:
DELIMITER &&
CREATE TRIGGER agenda BEFORE INSERT ON reserva_araealazer
FOR EACH ROW
BEGIN
SET @data = NEW.data;
SET @hora_inicio = NEW.hora_ini;
SET @hora_fin = @NEW.hora_fin;
IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin) THEN
SET 'aqui eu nao sei mais'
END IF;
END &&
DELIMITER ;
Cláudio
Sou eu de novo, revendo erros para tentar ajudr quem pode me ajudar
eu tentei rodar e dei de cara com um acesso negado pq nao sou super usaer na base.
Mas isso, em tese, é um bom sinal...
DELIMITER &&
CREATE TRIGGER agenda BEFORE INSERT ON reserva_arealazer
FOR EACH ROW
BEGIN
SET @data = NEW.data;
SET @hora_inicio = NEW.hora_ini;
SET @hora_fin = @NEW.hora_fin;
IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin)
THEN
SET @NEW.data = NULL;
SET @NEW.hora_ini = NULL;
SET @NEW.hora_fin = NUll;
END IF;
END &&
DELIMITER ;
Preciso sabr como devolver a resposta
Bom, eu peguei a madrugada e fiz alguma coisa.
deu nisso aqui, mas estou sem acesso à aplicação para testar
submeto aos que sabem muito mais que eu, que nao sei nada, para avaliar se a logica esta correta.
é um evento OnBeforUpdate
desde já obrigado
/**
* Check for an existing record
*/
// SQL statement parameters
$check_table = 'reserva_arealazer', 'data' , 'hora_inicio', 'hora_fin'; // Table name
$check_where = "field = 'condition'"; // Where clause
// Check for record
$check_sql = 'SELECT *'
. ' FROM ' . $check_table
. ' WHERE ' . $check_where;
sc_select(dataset, $check_sql);
if (false == {dataset})
Claudio pra criar trigger tem que ter super como privilegio.
Porém,
Existe um evento cadastrado da hora X até a hora Y
e você quer cadastrar um evento da hora A até a hora B
entao:
A não pode estar entre X e Y
B não pode estar entre X e Y
X não pode estar entre A e B
Y não pode estar entre A e B
ou seja, eh bastante facil de implementar via programaçao.