Preciso de uma forma de que o ScriptCase fique verificando este select
SELECT id, titulo_para_pesquisa FROM PESQUISA_PAIMAE_OK WHERE usuario = ?
se tiver retorno aparecer na tela o titulo_para_pesquisa e em seguida excluir o registro do id do select
Onde deve aparecer a mensagem?
No menu?
Em uma formulário específico?
um alerta ou notificação ou popup
Onde quer essa mensagem?
No menu, em uma aplicação específica?
Aparecer no menu da aplicação
O menu novo já não tem
Sistema de notificação?
Não, meu scriptcase e versão anterior a com notificação
Qual versão é seu SCRIPTCASE?
9.12.013(8)
Então seu problema é construir um sistema de notificação em uma versão mais antiga do SC.
Já pensou se não vale a pena pagar a atualização para ter tudo isso nativo da própria ferramenta?
Não estou negando em ajudar, apenas dar uma solução mais plausível.
desculpa a ignorância, pensei que seria fácil, porque pensei que daria apenas para colocar um timer de X em X minutos verificando um select.
Bom dia.
Como disse , precisa de conhecimento avançado.
@MetroScience,
Não costumo postar código, mas acabei usando sua dúvida como exercício, acho justo compartilhar.
Coloca o código abaixo no onLoad do teu menu e faz as alterações necessárias pra teu ambiente.
-
Troque o nome da aplicação pelo nome que vc tem aí. Eu só gerei uma aplicação de menu com nome aleatório pra testar, pq não uso o menu do SC.
Na linha: xhr.open(‘POST’, ‘menu_teste.php’, true); -
Muda a query pra sua necessidade.
-
Muda o tempo do timer: setInterval(executarQuery, 10000);
Até fiz um exemplo com alert() puro, mas ele trava o navegador inteiro até vc clicar em ok.
Se jogar numa IA dá pra ir lapidando e aproveitando pra aprender sobre requisições ajax. Neste código, a primeira parte (o endpoint) faz a consulta e retorna o código JS a ser executado. A segunda parte (o script JS) faz a requisição pro endpoint de acordo com o timer definido e executa o JS retornado, quando há retorno. Se o select não retornar dados, nada é executado.
Espero que sirva como um ponto de partida. Creio que funcione normalmente com a sua release do SC.
Aqui tem as possibilidades do sweetalert: https://sweetalert2.github.io/
[vg_meu_id] = 65;
if(isset($_POST['action']) && $_POST['action'] == 'executar_query') {
$sql = "SELECT DATE_FORMAT(datahora, '%d/%m/%Y') FROM erro WHERE erro = " . [vg_meu_id];
sc_lookup(rs, $sql);
if(!{rs} === false && isset({rs[0][0]})) {
$valor = {rs[0][0]};
// Retornar apenas o código JavaScript (sem tags script)
$alert_js = "
if (typeof Swal !== 'undefined') {
Swal.fire({
title: 'Atenção!',
html: '<div style=\"font-size: 16px; color: #2c3e50;\"><span style=\"color: #e74c3c; font-weight: bold;\">Atenção!<br>" . addslashes($valor) . "</span></div>',
timer: 4000,
showConfirmButton: false,
confirmButtonText: 'OK',
confirmButtonColor: '#3085d6',
position: 'top-end',
toast: true,
background: '#fff',
customClass: {
popup: 'text-left-popup',
title: 'text-center-title',
htmlContainer: 'text-left-content'
}
});
}";
header('Content-Type: application/json');
echo json_encode(['success' => true, 'alert_js' => $alert_js]);
exit;
} else {
header('Content-Type: application/json');
echo json_encode(['success' => false]);
exit;
}
}
?>
<script>
function executarQuery() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'menu_31072026.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if(response && response.success === true && response.alert_js) {
eval(response.alert_js); // Executa o JavaScript retornado pelo endpoint
}
}
catch(e) {
console.log('Erro ao processar resposta:', e);
}
}
};
xhr.send('action=executar_query');
}
setInterval(executarQuery, 10000); // Executar a função a cada 10 segundos
executarQuery(); // Dá o start na execução
</script>
<?php
Obrigado, vou testar
Não consegui com seu exemplo, mas aqui deu certo desta forma a seguir:
No evento OnLoad do Menu foi colocado isso:
?>
<script>
setInterval(function(){
$.post("../menu_ajax/", { userLogin : '[usr_login]' })
.done(function( data ) {
const obj = data;
//console.log(obj);
if (data != "")
{
let params = {type: 'warning', timer: '7000', toast: true, showConfirmButton :false, position : 'center'};
scJs_alert(data, params);
}
});
}, 60000);
</script>
<?php
foi criado uma Blank (menu_ajax) e no onExecute foi colocado isso:
$usuario = [usr_login];
$sql = "SELECT id, titulo_para_pesquisa FROM PESQUISA_PAIMAE_OK WHERE (usuario = '$usuario');";
sc_lookup(rs, $sql);
if({rs} !== false && isset({rs[0][0]}))
{
$valor = {rs[0][1]};
$sql_delete = "DELETE FROM PESQUISA_PAIMAE_OK WHERE id = " . intval({rs[0][0]});
sc_exec_sql($sql_delete);
echo "Concluída pesquisa por paternidade: " . $valor;
}
no meu caso eu apago o registro que é apresentado, porque não preciso mais dessa informação.
Fabiano, coloque código entre [code]
[/code]
Assim fica melhor visualizado.
Apresente também o código js do evento onload.
Parabéns por ter resolvido.
Boa tarde, fiz o ajuste, mais uma vez muito obrigado pela dica e por ter me ajudado a resolver.