Kleyber,
O erro ocorre com o seguinte script (com a condição $_SESSION[‘update_delete’] == “update” e {escolha_update} == ‘2’):
O engraçado é que isso só ocorre pra determinada modificação (quando vou retirar a recorrência), pras demais atualizações funciona tranquilo.
//Definição dos campos com as variáveis de sessão
{id} = $_SESSION['id'];
{id_colaborador} = $_SESSION['id_colaborador'];
{id_servico} = $_SESSION['id_servico'];
{id_subtipo_servico} = $_SESSION['id_subtipo_servico'];
{id_cliente} = $_SESSION['id_cliente'];
{id_grupo} = $_SESSION['id_grupo'];
{id_sala} = $_SESSION['id_sala'];
{data_inicio} = $_SESSION['data_inicio'];
{hora_inicio} = $_SESSION['hora_inicio'];
{data_fim} = $_SESSION['data_fim'];
{hora_fim} = $_SESSION['hora_fim'];
{nota} = $_SESSION['nota'];
{id_repetir} = $_SESSION['id_repetir'];
{tipo_repetir} = $_SESSION['tipo_repetir'];
{freq_repetir} = $_SESSION['freq_repetir'];
{data_fim_repetir} = $_SESSION['data_fim_repetir'];
//Botão delete
if ($_SESSION['update_delete'] == "delete") {
if ({escolha_delete} == '1') {
sc_exec_sql("DELETE FROM eventos WHERE id = '" . {id} . "'");
}
elseif ({escolha_delete} == '2') {
sc_exec_sql("DELETE FROM eventos WHERE id_repetir = '" . {id_repetir} . "' and data_inicio >= '" . {data_inicio} . "'");
}
elseif ({escolha_delete} == '3') {
sc_exec_sql("DELETE FROM eventos WHERE id_repetir = '" . {id_repetir} . "'");
}
}//Fim: Botão delete
//Botão update
elseif ($_SESSION['update_delete'] == "update") {
if ({escolha_update} == '1') {
//Variáveis iniciais
$data_1 = {data_inicio};
$data_hora_1 = $data_1 . " " . {hora_inicio};
$data_2 = {data_fim};
$data_hora_2 = $data_2 . " " . {hora_fim};
$data_3 = {data_fim_repetir};
//Verificação disponibilidade
if ({id_sala} != 'evento externo') {
$check_sql = "SELECT id, id_repetir, id_sala, timestamp(data_inicio, hora_inicio) as inicio, timestamp(data_fim, hora_fim) as fim FROM eventos_agenda where id_sala = '" . {id_sala} . "' and not id = '" . {id} . "' and ((timestamp(data_inicio, hora_inicio) <= '" . $data_hora_1 . "' and timestamp(data_fim, hora_fim) > '" . $data_hora_1 . "') or (timestamp(data_inicio, hora_inicio) < '" . $data_hora_2 . "' and timestamp(data_fim, hora_fim) >= '" . $data_hora_2 . "') or (timestamp(data_inicio, hora_inicio) >= '" . $data_hora_1 . "' and timestamp(data_fim, hora_fim) <= '" . $data_hora_2 . "'))";
sc_select(dataset, $check_sql);
if (!{dataset}->EOF) {
[retorno] = true;
sc_error_message("Já existe agendamento para a sala e horário");
}
}
if (![retorno]) {
//Delete do registro antigo
sc_exec_sql("DELETE FROM eventos WHERE id = '" . {id} . "'");
//Insert do novo registro
if ({id_cliente} == ''){
$cliente = '0';
}
else{
$cliente = "'" . {id_cliente} . "'";
}
if ({id_grupo} == ''){
$grupo = '0';
}
else{
$grupo = "'" . {id_grupo} . "'";
}
sc_exec_sql("INSERT INTO eventos (id_colaborador, id_servico, id_subtipo_servico, id_cliente, id_grupo, id_sala, nota, data_inicio, hora_inicio, data_fim, hora_fim) VALUES ('" . {id_colaborador} . "', '" . {id_servico} . "', '" . {id_subtipo_servico} . "', " . $cliente . ", " . $grupo . ", '" . {id_sala} . "', '" . {nota} . "', '" . $data_1 . "', '" . {hora_inicio} . "', '" . $data_2 . "', '" . {hora_fim} . "')");
}
}
elseif ({escolha_update} == '2') {
//Variáveis iniciais
$data_1 = {data_inicio};
$data_hora_1 = $data_1 . " " . {hora_inicio};
$data_2 = {data_fim};
$data_hora_2 = $data_2 . " " . {hora_fim};
$data_3 = {data_fim_repetir};
//Verificação disponibilidade
if ({id_sala} != 'evento externo') {
sc_select(rs, "SELECT id FROM eventos_agenda where id_repetir = '" . {id_repetir} . "';");
while($data_2 <= $data_3) {
$id = $rs->fields[0];
$check_sql = "SELECT id, id_repetir, id_sala, timestamp(data_inicio, hora_inicio) as inicio, timestamp(data_fim, hora_fim) as fim FROM eventos_agenda where id_sala = '" . {id_sala} . "' and not id = '" . $id . "' and ((timestamp(data_inicio, hora_inicio) <= '" . $data_hora_1 . "' and timestamp(data_fim, hora_fim) > '" . $data_hora_1 . "') or (timestamp(data_inicio, hora_inicio) < '" . $data_hora_2 . "' and timestamp(data_fim, hora_fim) >= '" . $data_hora_2 . "') or (timestamp(data_inicio, hora_inicio) >= '" . $data_hora_1 . "' and timestamp(data_fim, hora_fim) <= '" . $data_hora_2 . "'))";
sc_select(dataset, $check_sql);
$rs->MoveNext();
if (!{dataset}->EOF) {
[retorno] = true;
sc_error_message("Já existe agendamento para a sala e horário");
}
if ({tipo_repetir} == '1') {
$dias = 1 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_hora_1 = $data_1 . " " . {hora_inicio};
$data_hora_2 = $data_2 . " " . {hora_fim};
}
elseif ({tipo_repetir} == '2') {
$dias = 7 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_hora_1 = $data_1 . " " . {hora_inicio};
$data_hora_2 = $data_2 . " " . {hora_fim};
}
elseif ({tipo_repetir} == '3') {
$meses = 1 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', 0, $meses, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', 0, $meses, 0);
$data_hora_1 = $data_1 . " " . {hora_inicio};
$data_hora_2 = $data_2 . " " . {hora_fim};
}
}
$rs->Close();
}
if (![retorno]) {
//Delete dos registros antigos
sc_exec_sql("DELETE FROM eventos WHERE id_repetir = '" . {id_repetir} . "' and data_inicio >= '" . {data_inicio} . "'");
//Insert do primeiro novo registro
//Variáveis iniciais
$data_1 = {data_inicio};
$data_2 = {data_fim};
$data_3 = {data_fim_repetir};
//Insert dos novos registro
if ({id_cliente} == ''){
$cliente = '0';
}
else{
$cliente = "'" . {id_cliente} . "'";
}
if ({id_grupo} == ''){
$grupo = '0';
}
else{
$grupo = "'" . {id_grupo} . "'";
}
sc_exec_sql("INSERT INTO eventos (id_colaborador, id_servico, id_subtipo_servico, id_cliente, id_grupo, id_sala, nota, data_inicio, hora_inicio, data_fim, hora_fim, tipo_repetir, freq_repetir, data_fim_repetir) VALUES ('" . {id_colaborador} . "', '" . {id_servico} . "', '" . {id_subtipo_servico} . "', " . $cliente . ", " . $grupo . ", '" . {id_sala} . "', '" . {nota} . "', '" . $data_1 . "', '" . {hora_inicio} . "', '" . $data_2 . "', '" . {hora_fim} . "', '" . {tipo_repetir} . "', '" . {freq_repetir} . "', '" . {data_fim_repetir} . "')");
//Ultimo ID inserido na sessão
sc_lookup(rs, "SELECT LAST_INSERT_ID()");
$ult_id = {rs[0][0]};
//Registro do id_repetir
sc_exec_sql("UPDATE eventos SET id_repetir = '" . $ult_id . "' WHERE id= '" . $ult_id . "'");
while($data_2 <= $data_3) {
if ({tipo_repetir} == 1) {
$dias = 1 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', $dias, 0, 0);
}
elseif ({tipo_repetir} == 2) {
$dias = 7 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', $dias, 0, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', $dias, 0, 0);
}
elseif ({tipo_repetir} == 3) {
$meses = 1 * {freq_repetir};
$data_1 = sc_date($data_1, 'yyyy-mm-dd', '+', 0, $meses, 0);
$data_2 = sc_date($data_2, 'yyyy-mm-dd', '+', 0, $meses, 0);
}
if ($data_2 <= $data_3) {
sc_exec_sql("INSERT INTO eventos (id_colaborador, id_servico, id_subtipo_servico, id_cliente, id_grupo, id_sala, data_inicio, hora_inicio, data_fim, hora_fim, id_repetir, tipo_repetir, freq_repetir, data_fim_repetir) VALUES ('" . {id_colaborador} . "', '" . {id_servico} . "', '" . {id_subtipo_servico} . "', " . $cliente . ", " . $grupo . ", '" . {id_sala} . "', '" . $data_1 . "', '" . {hora_inicio} . "', '" . $data_2 . "', '" . {hora_fim} . "', '" . $ult_id . "', '" . {tipo_repetir} . "', '" . {freq_repetir} . "', '" . {data_fim_repetir} . "')");
}
}
}
}
}//Fim: Botão update