Ir para conteúdo

Todas as Novidades

Atualizada automaticamente     

  1. Yesterday
  2. Matheus Tavares

    Tem como JS executar/chamar um programa externo?

    Olá. Se você estiver no Node.js (executando JS no desktop) sim, é possível. Pra isso você utilizaria Child process. Exemplo: import { spawn } from 'node:child_process'; spawn( 'C:\\windows\\notepad.exe', [ 'C:/Users/SEU_USUARIO/Documents/seu_arquivo_txt.txt' ] ); Não estou no Windows pra testar, mas acho que seria isso. A documentação cita mais exemplos e tem detalhes sobre o funcionamento do spawn: https://nodejs.org/api/child_process.html#child_processspawncommand-args-options Caso você esteja falando de JS no navegador, então não é possível executar um exe via JS por questões de segurança.
  3. Tem como executar arquivo EXE, BAT....usando JavaScript? Ex.: Abrir o notepad
  4. Última semana
  5. violin101

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Amigo Williams, saudações. Grato por sua orientação e explicação. Apenas reforçando, conforme suas orientações, já tenho implementado as regras acima no meu Sistema. Em relação a Sistema de Cotações/Compras, os Pedidos de Compra somente serão GERADO, após as negociações e finalização entre Cliente x Fornecedor. Pode acontecer por algum motivo: 1 - Fornecedor Desistir/Cancelar a resposta da Cotação. 2 - Fornecedor Cancelar algum item cotado. 3 - Fornecedor não conseguir atender as necessidades do Cliente em relação a Condição Pagamento ou Entrega. 4 - etc, etc, etc... Isso faz com que o Comprador remaneja os itens para outros Fornecedores ==> antes de Encerrar a Cotação Total e somente após isso, o Sistema gera os pedidos. Atenciosamente, Cesar
  6. Williams Duarte

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Entendi, porém, sugiro algumas melhorias que podem tornar seu sistema ainda mais robusto, so terá que codificar mais: 1 - Implementar um sistema de comparação automática entre o que foi pedido e o que foi comprado. Assim, quando Compras registrar um item com especificação diferente (como o saco P6 ao invés do P8), o sistema já alertaria automaticamente. 2 - Adicionar um sistema de rastreabilidade onde cada operação (pedido do Almoxarifado e compra do setor de Compras) fique registrada com data, hora e responsável. Isso evita o "disse-me-disse" e deixa claro quem tomou cada decisão. 3 - Criar relatórios que mostrem claramente as divergências entre pedidos e compras, facilitando a gestão e resolução de problemas. 4 - Implementar notificações automáticas quando houver divergências, assim o Almoxarifado seria avisado imediatamente se Compras registrar um produto com especificação diferente da solicitada. Dessa forma, você mantém a separação que deseja (que faz sentido para seu caso), mas adiciona camadas de controle que tornam o processo mais seguro e transparente.
  7. violin101

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Caros amigos, saudações. Amigo Williams, entendi sua explicação e concordo. Vou te explicar para o amigo não achar que estou copiar de copiar. Na verdade no meu sistema deixei um Módulo somente para Cotação, onde esse módulo atende as necessidades de uma Pequena Empresa até a uma Prefeitura se for o caso. Quando o Almoxarifado/Logística fizer uma Lista de produtos com estoque baixo, ou seja, solicitação/pedido de compra, preferi separa as Tabelas e assim o Setor de Almoxarifado quanto fez a solicitação, terá um registro do que solicitou. Caso o Compras realizar a aquisição de algum produto ERRADO, o Almoxarifado terá como cobrar. ==>Exemplo de compra que gera confusão: Material de Limpeza. o Almoxarifado pediu para comprar: Saco de Lixo P8 - espessura igual a 0,08mm mas o Compras por algum motivo comprou: Saco de Lixo P6 - espessura igual a 0,06mm ==>Obs.: para algum setor pode até atender, mas para outros é fraco. Entendi sua lógica acima, evita muita codificação e altera chaves de pedido para cotação. Mas já trabalhei com ambas pessoas tanto de Estoque quanto de Compras, que promovia confusão em relação a pedido e compras. Grato, Cesar
  8. Williams Duarte

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Duplicando dados, nada mais que isto! Correto é como @tetsuo disse, referencie uma chave, que pode ser pedido_id CREATE TABLE lancamentos ( id INT PRIMARY KEY, pedido_id INT, data_lancamento DATETIME, FOREIGN KEY (pedido_id) REFERENCES pedidos(id) ); na model: class LancamentoModel extends CI_Model { public function criarLancamento($pedido_id) { $dados = [ 'pedido_id' => $pedido_id, 'data_lancamento' => date('Y-m-d H:i:s') ]; $this->db->insert('lancamentos', $dados); } } Se precisar visualizar dados consolidados, crie uma view CREATE VIEW view_lancamentos AS SELECT l.id as lancamento_id, p.codigoProduto, p.quantidade, p.valorUnitario, l.data_lancamento FROM lancamentos l JOIN pedidos p ON l.pedido_id = p.id; para obter o id na view public function buscarPorProduto($codigo_produto) { $this->db->from('view_lancamentos'); $this->db->where('codigoProduto', $codigo_produto); return $this->db->get()->result_array(); } E ao inves de fazer todo este processo de importação, faça o automaticamente. class PedidoModel extends CI_Model { public function cadastrar($dados) { // Inicia a transaction $this->db->trans_start(); try { // Insere na tabela de pedidos $this->db->insert('pedidos', [ 'codigoProduto' => $dados['codigoProduto'], 'quantidade' => $dados['quantidade'], 'valorUnitario' => $dados['valorUnitario'], 'status' => 'novo' ]); $pedido_id = $this->db->insert_id(); // Insere na tabela de lançamentos $this->db->insert('lancamentos', [ 'pedido_id' => $pedido_id, 'data_lancamento' => date('Y-m-d H:i:s') ]); // Commit da transaction $this->db->trans_complete(); return $pedido_id; } catch (Exception $e) { // Rollback em caso de erro $this->db->trans_rollback(); log_message('error', 'Erro ao cadastrar pedido: ' . $e->getMessage()); return false; } } }
  9. violin101

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Caros amigos, saudações. Com ajuda do amigo Albano membro do forum e com algumas pesquisas, foi solucionado a minha dúvida referente a Importação de Dados. Abaixo deixo os Código, para quem precisar e tiver a mesma dúvida que eu tive. Pasta CONTROLLER: function importaItens(){ //Recebe os dados via POST do formulário $idSgst = $this->input->post('idPedidos'); //ID idPedidoitens $idCtas = $this->input->post('idEntrada'); //ID idEntrada $idNmbr = $this->input->post('cotaNumero'); //Numero Entrada //Função Chama o Importar $this->importar($idSgst,$idCtas,$idNmbr); } //Salvar os Itens da Entrada protected function importar($idSgst,$idCtas,$idNmbr){ $itensImport = $this->pasta_model->get_SeuBD($idSgst); $data = []; foreach($itensImport as $item ){ $data[] = array( 'codProd' => $item->idProduto, 'cotaQtde' => $item->quantidade, 'cotaNumero' => $idNumero, 'entrada_idEntradas' => $idCtas, ); } //Quebra em 100 $chunks = array_chunk($data, 100); //Para cada grupo de até 100 registros foreach ($chunks as $chunk) { //Faça um insert na tabela $this->db->insert_batch('entradasItens', $chunk); } if ($itensImport) { $this->session->set_flashdata('success', '<h4>Entrada de Produtos nº.'.str_pad($idSugst,'5','0', STR_PAD_LEFT).' - Importado com Sucesso!</h4>'); redirect(base_url() . 'caminho/pasta/sua_view/'.$idPasta); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>'; } } Pasta MODELS: //Faz uma Busca por ID de cada ITEM para Importar public function get_SeuBD($idSgst){ $this->db->where("Campo_que_deseja_buscar",$idSgst); $resultado = $this->db->get("sua_tabela"); return $resultado->result(); } //Salva os Itens Importados public function importes($data){ $this->db->insert("sua_tabela_para_importar",$data); } Atenciosamente, Cesar
  10. tetsuo

    PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql

    Saudações! Não faz sentido apenas "copiar" dados de uma tabela para outra. Talvez sua lógica precise ser revisada. Talvez, fosse suficiente apenas alterar o status, ou se precisar mesmo de outra tabela, apenas referenciar a chave estrangeira.
  11. Caros amigos, saudações. Por favor, peço desculpa em recorrer a ajuda dos amigos referente uma dúvida. Tenho um Sistema que estou escrevendo em PHP + Codeigniter e a minha dúvida em Codeigniter é: Obs.: as tabela são em MySql => como faço para IMPORTAR o dado de uma Tabela para outra, as tabela são: ___________________Tabela de Pedido =========== para ==========> Tabela de Entrada de Lançamentos itens: codigoProduto | quantidade | valorUnitario === importar===> itens: codigoProduto | quantidade | valorUnitario Estou tentando de várias formas, mas não estou conseguindo. Por favor, alguém pode me dar uma ajuda, explicação ou orientação. Grato, Cesar
  12. Mais antigo
  13. Felipe Guedes Coutinho

    editor quill configuração

    Fala Belann, tudo bem? Para ajustar o comportamento da tecla Enter no editor Quill, você pode personalizar a função do handler e garantir que ele esteja executando o comando correto para criar uma nova linha. Vou sugerir uma modificação para o código que pode resolver o problema. Tente este código: var quill = new Quill('#editor', { modules: { syntax: true, toolbar: '#toolbar-container', keyboard: { bindings: { enter: { key: 13, // Código da tecla "Enter" handler: function(range, context) { if (!context.collapsed) { quill.deleteText(range.index, range.length); } quill.insertText(range.index, '\n', Quill.sources.USER); quill.setSelection(range.index + 1, Quill.sources.SILENT); } } } } }, theme: 'snow' }); Nesse ajuste: Quando a tecla Enter é pressionada, o código insere uma nova linha (\n) no local atual do cursor. O cursor é movido para a próxima linha com quill.setSelection(). Certifique-se de que o seletor #editor corresponda ao elemento onde você está inicializando o Quill e que a configuração do toolbar também esteja correta.
  14. Felipe Guedes Coutinho

    PHP - Orientação com UPDATE

    @violin101, tudo bem com você? Para eu conseguir te ajudar eu preciso de mais informações. O que de fato essa tela que você está construindo deve fazer? Você tem aparentemente um formulário onde aparece uma lista de Peças e Equipamentos e para cada Peças e Equipamentos você escolhe um Veículo, é isso? Após selecionar o Veículo para cada Peças e Equipamentos o que você quer fazer? Salvar apenas o comentário? A funcionalidade da sua tela não faz sentido do jeito que você descreveu sua dúvida, mas o que me vem na cabeça é o seguinte, caso você queira APENAS pegar o INPUT Comentário e atualizar uma informação na tabela, você pode primeiro fazer primeiro no seu arquivo backend que faz a tratativa dos dados uma pequena validação, exemplo: Você pode verificar para cada INPUT de comentário se ele está preenchido fazendo a pergunta ISSET e EMPTY, vou te dar um código abaixo para te ajudar: if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Aqui você valida o método de envio do seu formulário // Verificar se o campo "comentario" existe if (isset($_POST['comentario']) && is_array($_POST['comentario'])) { // Verificar se o campo de comentário da peça específica está preenchido foreach ($_POST['comentario'] as $codigo_peca => $comentario) { // !EMPTY é a pergunta para TEM INFORMAÇÃO? O comando TRIM remove os espaços a esquerda e direita if (!empty(trim($comentario))) { // O campo está preenchido, processa o comentário // Aqui você pode fazer o UPDATE na tabela que você deseja echo "Comentário para a peça $codigo_peca: $comentario <br>"; // O ELSE só vai ser necessário caso você queira fazer algo QUANDO o comentário estiver vazio // Caso contrário basta remover o ELSE. } else { // O campo está vazio echo "Comentário para a peça $codigo_peca está vazio <br>"; } } // O ELSE só vai ser necessário caso você queira fazer algo QUANDO o comentário estiver vazio // Caso contrário basta remover o ELSE. } else { echo "Nenhum campo de comentário foi enviado."; } } Bom eu não consegui entender muito a sua dúvida, mas acho que esse código vai te ajudar de alguma forma, caso precise de mais informações de mais detalhes sobre o que você quer fazer. Atenciosamente. Felipe Guedes Coutinho Hashimoto
  15. violin101

    PHP - Orientação com UPDATE

    Caros amigos, saudações. Estou com uma pequena dúvida que não estou conseguindo resolver. Tenho 2 Tabelas, a 1ª.principal e a 2ª.secundária. Exemplo: Dados da 1ª Tabela - Peças e Equipamentos Dados da 2ª Tabela - Veículos. Seria isso: 0010 - Pneu Aro 20 [x] 001 - Corsa [_] 002 - Fusca [_] 003 - Palio Comentário:________________ 0100 - Óleo para Motor [x] 002 - Fusca [_] 003 - Palio Comentário:________________ 1030 - Lubrificante [_] 001 - Corsa [x] 003 - Palio Comentário:________________ O meu problema está sendo quando preciso SALVAR/ATERAR o campo COMENTÁRIO, pois trata-se da 1ª.tabela. Gostaria salvar o COMENTÁRIO sem interferir nas seleção da 2ª. tabela. Grato, Cesar
  16. Williams Duarte

    BelogsTo do laravel

    Certifique-se de que o relacionamento studentRelation está definido corretamente no modelo StudentDisciplineClassroom. Deve ser algo assim: public function studentRelation() { return $this->belongsTo(Student::class, 'ra', 'academic_registration'); } ao usar select('student'), você está limitando as colunas retornadas apenas para 'student'. Isso pode estar causando problemas no carregamento do relacionamento. Tente remover o select ou incluir a coluna 'ra': $all = $sdc::with('studentRelation') ->where('classroom', $request->classroom) ->distinct('student') ->get(); Uso do distinct: O distinct('student') pode estar interferindo no carregamento do relacionamento. Tente remover o distinct ou use groupBy em vez disso: $all = $sdc::with('studentRelation') ->where('classroom', $request->classroom) ->groupBy('student') ->get(); E certifique-se de que existem registros correspondentes na tabela students para os valores de 'ra' na tabela StudentDisciplineClassroom. Se você quiser carregar apenas alguns campos específicos do relacionamento, pode usar o carregamento ávido (eager loading) com restrições: $all = $sdc::with(['studentRelation:id,academic_registration,nome']) ->where('classroom', $request->classroom) ->get(); E por fim, para entender melhor o que está acontecendo, você pode usar o método toSql() para ver a consulta SQL gerada: $query = $sdc::with('studentRelation') ->where('classroom', $request->classroom); dd($query->toSql(), $query->getBindings()); Isso mostrará a consulta SQL e os parâmetros vinculados, o que pode ajudar a identificar problemas na consulta.
  17. belann

    editor quill configuração

    Olá! Estou usando o editor quill em uma página html, sem fazer a instalação com npm, mas usando as api´s via internet com http, no entanto não consigo fazer a tecla enter funcionar para mudança de linha, tentei essa configuração abaixo, mas não funcionou. modules: { syntax: true, toolbar: '#toolbar-container', keyboard: { bindings: { enter: { key: 13, handler: function(range, context) { quill.formatLine(range.index, range.length, { 'align': '' }); } }
  18. Carcleo

    BelogsTo do laravel

    Estou começando no Laravel 11 e me deparei com um problema de belongsTo public function listOfClass(Request $request, StudentDisciplineClassroom $sdc) : ?string { $all = $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get(); dd($all->toArray()); $students = []; foreach ($all as $student) { $students[] =$student; } return response()->json($students)->getContent(); } isso Em studentRelation temos na tabela StudentDisciplineClassroom com os campos id(chave primaria) ra (chave estrangera que referencia o campo academic_registration na tabela de students) e a tabela student tem os campos id (chave primária) academic_registration (que vai ser refeenciada na tabela StudentDisciplineClassroom Mas na hora de fazer $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get(); O studentRelation retorna nulo Onde eu posso estar errando?
  19. Felipe Guedes Coutinho

    PHP - Tecla de Atalhos para salvar

    Você pode criar um atalho para CTRL + S em HTML e JavaScript, capturando o evento de pressionar as teclas e enviando os dados para um arquivo PHP via requisição POST. Vou te mostrar um exemplo básico: HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Salvar com CTRL + S</title> <script src="script.js"></script> </head> <body> <form id="myForm"> <label for="info">Digite algo:</label> <input type="text" id="info" name="info" placeholder="Digite aqui..."> </form> <div id="status"></div> </body> </html> JavaScript (script.js) document.addEventListener("keydown", function (e) { // Verifica se as teclas CTRL + S foram pressionadas if (e.ctrlKey && e.key === 's') { e.preventDefault(); // Evita o comportamento padrão de salvar a página salvarDados(); } }); function salvarDados() { const form = document.getElementById('myForm'); const formData = new FormData(form); fetch('salvar_dados.php', { method: 'POST', body: formData }) .then(response => response.text()) .then(data => { document.getElementById('status').innerText = 'Dados salvos com sucesso!'; }) .catch(error => { document.getElementById('status').innerText = 'Erro ao salvar os dados.'; console.error('Erro:', error); }); } PHP (salvar_dados.php) <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $info = $_POST['info']; // Aqui você pode salvar os dados no banco de dados ou em outro local // Exemplo de salvar em um arquivo de texto file_put_contents('dados.txt', $info . PHP_EOL, FILE_APPEND); echo 'Sucesso!'; } else { echo 'Método inválido!'; } ?> Explicação: Quando o usuário pressiona CTRL + S, o evento é interceptado e o comportamento padrão de salvar a página é evitado. A função salvarDados() coleta os dados do formulário e os envia via fetch para o PHP (salvar_dados.php). O PHP processa os dados e retorna uma resposta, que é exibida no elemento com id status. Esse código pode ser ajustado conforme suas necessidades, como manipular mais campos ou salvar em um banco de dados. Esse é um exemplo prático e simples que montei para você, a partir dai você pode começar a brincar, salve os 3 arquivos dentro de uma pasta e teste. Você terá uma página com um "formulário" a ser preenchido a função espera que você use o CTRL + S para salvar o "input" informado, e a função PHP que eu gerei ai grava um arquivo.txt com o texto criado, lembrando que na função PHP você pode fazer o que quiser, desde uma validação simples e um retorno, gerar um arquivo como no exemplo ou até mesmo realizar um INSERT em uma tabela do Banco de Dados, basta você programar o que quer. Já a função JavaScript te dei uma função com CTRL + S mas você pode programar outros comandos para outros conjuntos de teclas para atalho no seu sistema Web. Espero ter ajudado, qualquer coisa só me marcar.
  20. Felipe Guedes Coutinho

    PHP - Atualizar INPUT com função moeda

    Olá @violin101, tudo bem com você? Vamos ser práticos, aqui está um código para você utilizar ai de forma rápida e inteligente. // Função JavaScript para formatar de forma automática o INPUT no padrão Moeda BRL (R$ 0,00). function moedaBRL(input) { // Remove caracteres não numéricos e mantém apenas números let valor = input.value.replace(/[^0-9]/g, ''); // Verifica se há valor numérico if (valor === '') { valor = '0'; } // Converte o valor para número let valorNumerico = parseFloat(valor) / 100; // Formata o valor como moeda BRL let valorFormatado = valorNumerico.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }); // Adiciona o símbolo de moeda input.value = valorFormatado; } A única coisa que você precisa fazer é chamar essa função no seu INPUT usando o evento onKeyUp passando como parâmetro THIS, THIS significa passar todos os atributos do INPUT em questão. Exemplo de uma chamada: <input type="text" id="inputValor" name="inputValor" value="R$ 0,00" onkeyup="moedaBRL(this)" required> Então a cada número digitado o valor sera automativamente formatado no padrão R$ 0,00 com o R$ na frente. Espero ter ajudado, caso tenha alguma dúvida só me marcar.
  21. Omar~

    PHP - Tecla de Atalhos para salvar

    Ações do usuário são feitas pelo lado dele exemplo usando o javascript.. Ações do php é realizado no lado do servidor. O php não consegue manipular o usuário nem o usuário pode manipular O php apenas entrega renderizado ao usuário toda parte gráfica processado no servidor e não interage com ele 2 métodos a mesma coisa Usuário diz oi > javascript leva pro servidor essa mensagem > servidor pensa e diz olá > Usuário deve recarregar o conteúdo para saber qual foi a mensagem Usuário diz oi > javascript leva pro servidor essa mensagem > servidor pensa e diz olá > javascript retorna com a mensagem para o usuário..
  22. Omar~

    PHP - Atualizar INPUT com função moeda

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
  23. Felipe Guedes Coutinho

    Javascript - Arredondar Valor para cima

    Caro @violin101 (Cesar) Para resolver o problema de arredondamento e evitar valores muito pequenos no cálculo, você pode usar a função Math.ceil() para arredondar para cima. No caso do seu código, basta aplicar isso ao resultado da multiplicação. Aqui está como você pode ajustar sua função calcProd: function calcProd() { // Obter valor digitado do produto (quantidade) var prod_qtde = document.getElementById("qtde").value; // Remover ponto e trocar a vírgula por ponto prod_qtde = prod_qtde.replace(/\./g, '').replace(',', '.'); // Obter valor digitado do produto (valor unitário) var valor_unit = document.getElementById("vlrunit").value; // Remover ponto e trocar a vírgula por ponto valor_unit = valor_unit.replace(/\./g, '').replace(',', '.'); // Calcula o valor total if (valor_unit > 0 && prod_qtde > 0) { var calc_total_produto = parseFloat(valor_unit) * parseFloat(prod_qtde); // Arredonda para cima, se necessário calc_total_produto = Math.ceil(calc_total_produto * 100) / 100; // Formatação para exibir com separador de milhar e vírgula decimal var numero = calc_total_produto.toFixed(2).split('.'); numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("vlrtotal").value = numero.join(','); } else { if (valor_unit > 0) { document.getElementById("vlrtotal").value = document.getElementById("vlrunit").value; } else { document.getElementById("vlrtotal").value = "0,00"; } } } Desta forma, o valor será arredondado para cima em casos como 0,01 x 0,01, evitando resultados com precisão exagerada como 0,0001. O Math.ceil() garante que o valor final seja sempre o valor arredondado para cima com duas casas decimais.
  24. Felipe Guedes Coutinho

    JAVASCRIPT - Comparar Data Digitada com Data Atual

    Ola @violin101 O problema parece estar relacionado com à forma como a verificação do valor do campo de data está sendo feita. No seu código, o valor do campo de data pode não ser interpretado corretamente na verificação do JavaScript, especialmente se o usuário selecionar a data usando o seletor, já que o valor pode não ser considerado como vazio mas sim como "" ou null. Para solucionar isso, vamos ajustar a função de verificação para garantir que a data seja tratada corretamente. Aqui está uma versão corrigida do seu código: <div class="card-body"> <div class="row"> <div class="col-md-3"> <div class="form-group"> <label for="cotaDtainicio">Data de Abertura<span class="required">*</span></label> <div class="controls"> <input type="date" id="cotaDtainicio" name="cotaDtainicio" class="form-control" style="width:100%;" value="" /> </div> </div> </div> </div> </div> <script type="text/javascript"> // Função para definir a data mínima como a data atual function definirDataMinima() { const hoje = new Date(); const ano = hoje.getFullYear(); const mes = String(hoje.getMonth() + 1).padStart(2, '0'); // Janeiro é 0, então +1 const dia = String(hoje.getDate()).padStart(2, '0'); // Definir a data mínima no campo de input no formato YYYY-MM-DD const dataAtual = `${ano}-${mes}-${dia}`; document.getElementById("cotaDtainicio").setAttribute("min", dataAtual); } function verificarData() { const dataDigitada = document.getElementById("cotaDtainicio").value; // Verificar se o valor está vazio ou é inválido if (!dataDigitada || new Date(dataDigitada) < new Date(document.getElementById("cotaDtainicio").getAttribute("min"))) { $("#modal_msgdata").modal(); return false; // Impedir o envio do formulário } return true; // Continuar o envio do formulário } // Função para bloquear a digitação no campo de data function bloquearDigitacao(event) { event.preventDefault(); } // Chamar a função para definir a data mínima assim que a página carrega window.onload = function() { definirDataMinima(); // Impedir que o usuário digite diretamente no campo de data const cotaDtainicio = document.getElementById("cotaDtainicio"); cotaDtainicio.addEventListener('keydown', bloquearDigitacao); }; </script> Mudanças feitas no seu código: Correção na verificação da data: Agora, o código verifica se a data está vazia ou é anterior à data mínima definida, exibindo o modal corretamente caso seja inválida. Retorno da função verificarData: Se a data for inválida ou estiver vazia, a função retorna false, impedindo o envio do formulário. Ajustes na lógica de verificação: Ajustado a comparação para que ela seja feita corretamente usando o comando new Date(dataDigitada) e new Date() para comparação de datas válidas. Isso deve resolver o problema de o campo ser considerado vazio quando há uma data válida selecionada.
  25. Felipe Guedes Coutinho

    problema ao tentar enviar email

    Esse erro geralmente indica que o PHPMailer não está conseguindo autenticar com o servidor SMTP do Hotmail. Isso pode ocorrer por vários motivos, como credenciais incorretas, configurações de autenticação de dois fatores, ou mudanças nas políticas de segurança do Hotmail. Aqui estão algumas sugestões para resolver o problema: 1. Verifique as credenciais Certifique-se de que o e-mail e a senha do Hotmail usados no código estão corretos. Confirme que o nome de usuário do SMTP é o seu e-mail completo (ex: seuemail@hotmail.com). 2. Habilite a autenticação em dois fatores Se você tiver a autenticação em dois fatores ativada, talvez seja necessário gerar uma senha de app no Hotmail/Outlook. Use essa senha no lugar da senha normal na configuração do PHPMailer. 3. Atualize as configurações do PHPMailer Garanta que as configurações SMTP no seu código PHP estejam corretas para o Hotmail: php $mail = new PHPMailer(true); // Configurações do SMTP $mail->isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->SMTPAuth = true; $mail->Username = 'seuemail@hotmail.com'; // Seu e-mail completo $mail->Password = 'suasenha'; // Sua senha ou senha de app $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // TLS $mail->Port = 587; // Porta do SMTP para TLS 4. Permitir aplicativos menos seguros Em alguns casos, Hotmail/Outlook pode bloquear conexões que considera "menos seguras". Verifique se há alguma configuração no Hotmail relacionada à segurança de login e permita que aplicativos menos seguros acessem a conta. 5. Verifique se sua conta foi bloqueada Se você tentou autenticar muitas vezes com credenciais incorretas, o Hotmail pode ter temporariamente bloqueado o acesso via SMTP. Nesse caso, tente acessar diretamente a conta via web e verifique se há algum aviso de segurança. 6. Depuração do PHPMailer Ative o modo de depuração do PHPMailer para obter mais detalhes sobre o que está causando o erro de autenticação: php $mail->SMTPDebug = 2; // Exibe detalhes sobre a conexão SMTP no output Esses passos devem te ajudar a identificar o problema exato com a autenticação do PHPMailer ao Hotmail.
  26. joao b silva

    problema ao tentar enviar email

    Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails e apresenta a seguinte mensagem de erro: Error PHPMailer: SMTP Error: Could not authenticate. Faço uso de um hotmail para a configuração do PHPMAILER.
  27. violin101

    JAVASCRIPT - Comparar Data Digitada com Data Atual

    Caro amigo, Wanderval. Saudações. Após realizar a alteração no meu sistema conforme sua orientação, está apresentando um erro que não entendo. Quando o usuário selecione uma Data Válida, o Sistema acusa campo vazio e não grava, abaixo posto o código caso o amigo, possa me ajudar. <div class="card-body"> <div class="row"> <div class="col-md-3"> <div class="form-group"> <label for="cotaDtainicio">Data de Abertura<span class="required">*</span></label> <div class="controls"> <input type="date" id="cotaDtainicio" name="cotaDtainicio" class="form-control" style="width:100%;" value="" /> </div> </div> </div> </div> </div> <script type="text/javascript"> // Função para definir a data mínima como a data atual function definirDataMinima() { const hoje = new Date(); const ano = hoje.getFullYear(); const mes = String(hoje.getMonth() + 1).padStart(2, '0'); // Janeiro é 0, então +1 const dia = String(hoje.getDate()).padStart(2, '0'); // Definir a data mínima no campo de input no formato YYYY-MM-DD const dataAtual = `${ano}-${mes}-${dia}`; document.getElementById("cotaDtainicio").setAttribute("min", dataAtual); } function verificarData() { const dataDigitada = document.getElementById("cotaDtainicio").value; if (!dataDigitada) { $("#modal_msgdata").modal(); } else { //continua digitando } } // Função para bloquear a digitação no campo de data function bloquearDigitacao(event) { event.preventDefault(); } // Chamar a função para definir a data mínima assim que a página carrega window.onload = function() { definirDataMinima(); //Impedir que o usuário digite diretamente no campo de data const cotaDtainicio = document.getElementById("cotaDtainicio"); cotaDtainicio.addEventListener('keydown', bloquearDigitacao); }; </script> O que ocorre que o sistema acusa vazio o campo ? Grato, Cesar
  1. Mais Resultados
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.