Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    start e stop

    Variável intervalo não pode ser acessada em func2 porque é privada da func1, lá que criou só lá que pode ser usada. Variável intervalo não é um prototype window portanto não pode se limpo com clearInterval. Esperimente assim: var executa, intervalo = 1000, element = document.getElementById('idggg'); function func1() { executa = setInterval(function () { element.innerHTML += ' Hello '; }, intervalo); } function func2() { clearInterval(executa); }
  2. Além do mais não dar para usar duas abas, a não ser que desenvolva o próprio browser para isso, o crie um extensão para algum já existente. Isso envolve segurança pessoal e nenhum navegador dá suporte nativo a manipulação de abas, por causa das arbtrariedades nocivas dessa ação. Em outro contexto como disse no mesmo tópico sobre a mesma questão elvantada pelo mesmo usuário, a coisa pode ser feita em um único formulário. Hora que se em form 1 definine dados >>>> envia os mesmos dados para form 2 que por sua vez envia para form 3 etc... A qualquer parte desse processo os dados do form 1 ou 2 sei lá; podem ser alterados, então para que usar mais de um formulário? Um vez que os dados podem ser substituídos/apagados removendo completamente a lógica de usar mais de um formulário.
  3. Omar~

    buscar através de um form

    Ah sim, bom você pode fazer algo tipo isso: Selecionando alguma das opções no seletor, pegar seu valor e corre a página até o nocal do próximo formulário. Seguindo a ideia que apresentei antes pois com ela você também poderá enviar informações do form-1 para outro dessa forma: Daí teriamos mais no documento: <div data-opcao-1="">Outro formulário aqui...</div> <div data-opcao-2="">Outro formulário aqui...</div> <div data-opcao-3="">Outro formulário aqui...</div> Ou você pode diretamente adicionar um evento change no seletor, que ao altera-lo já rolaria a para o próximo form. Seria intereçante se o(s) próximo(s) fomularios tivessem um "display:none" sendo removido antes de ir até, assim o documento ficaria mais estético. Agora se a situação requerer dados que devem se cerregados de acordo com o primeiro formulário, uma de duas alternativas serão necessárias. - Ao invés de mostrar o próximo formulário um ajax para carregar um outro arquivo que faça uma busca em um banco de dados e que contenha o formulário, então os dados são povoados antes da renderização html. (O ponto ruim que mesmo com poucos dados deve ser recarregado a cara requisição) - Pré carregadar os dados necessários para cada condição, armazena-los em um JSON no javascript, assim sendo o formulário está presente e o javascript se encarrega de mostrar e povoa-lo com os dados. (O ponto ruim é que pesa para processar tudo, e com muitos registro a coisa pode ficar meio lenta). Tirando o caso de ter de acessar um banco de dados eu optaria por deixar tudo em um form, e só mostrar cada campo de acordo com o valor selecionado, fica algo mais prático no uso final. Exemplo: Tenho inputA e inputB, ambos no formulário e ambos ocultos, ao alterar alguma opção seja um seletor ou seja uma caixa de marcação, mostraria o input correspondente aquela opção de resetaria o valor o input que não seria utilizado. Nesse caso com uma caixa de marcação "checkbox/radio" é bem provável que poderia ser feito apenas com CSS, não sei, teria que replicar aqui e testar e não dar para simplesmente escrever o código aqui sem testar se não tenho certesa do resultado.
  4. Omar~

    Indentificar função anônima

    Não é um problema com função anônima e sim como manipular alguma por outra função... Enfim, consegui produzir uma solução concreta, daí me esbarrei em que fazer algo a respeito não trás benefício algum. Além do mais funções anônimas devem ser evitadas, por consumirem muito mais processamento. Mas a aplicação que estou desenvolvendo tem suporte para tais funções, mas não terá suporte a uma manipulação direta a elas.
  5. Omar~

    Indentificar função anônima

    Boas?! Então, venho aqui a pedir ideias sobre como identificar uma função anônima atribuída quando uma segunda função a declara. Basicamente tenho 2 funções: uma é chamada para adicionar o tipo de ação e qual função executar com o evento acionado. outra obtem o tipo e a função para remover o evento no elemento. on: function () { var $type = arguments[0], $listener = arguments[1]; if (!$_.isDefined(this[0].eventListener)) { this[0].eventListener = []; } this[0].eventListener.push({ type: $type, listener: $listener }); this[0].addEventListener($type, $listener, false); }, off: function () { var $type = arguments[0], $listener = arguments[1], $i = 0, $eventData = null; if ($_.isDefined(this[0].eventListener)) { for (; $i < this[0].eventListener.length; $i++) { $eventData = this[0].eventListener[$i]; if ($type == $eventData.type && $listener == $eventData.listener) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } else if ($type == $eventData.type) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } } } } Perceba que para registrar e mais tarde saber qual função foi atribuída ao evento para remover eu armazenei os valores em um array. E para remover apenas identifico se o argumento bate com os dados em algum índice do array. Até então tudo bem..... function adicionar() { elemento.on('click', minhaFuncao); } function remover() { elemento.off('click', minhaFuncao); } O probema está em funções anônimas quando declaradas dentro de outra função como isso: function adicionar() { elemento.on('click', function () { // o que fazer.... }); } Então até dar para identificar qual função a declarou, porém não dar para remover com removeEventListener pois essa função não é a ouvinte do elemento. Obs.: Até poderia apagar a função ou "desaturbir sobre o alvo", no entanto não é viável pois pode haver que mais tarde ou outras condições dependam da função. Até cheguei a solucionar "como quebra-galho": Ao invés de atribuir a função recebida pelo argumento em "on" eu atribuo uma outra função pré definida, e essa função checa do array, se houver um índice onde o objeto é o mesmo tipo de evento e a função requisitada também existe no array, essa pré definida executa a função original. Porém não é uma função real, e mais tarde se a pessoa quiser disparar a função digamos um click não pode a chamar seus atributos diretamente (porque seus atrinbutos não são dela e sim da pré definda), terá que chamar a função pré definida, pois é ela realmente a ouvinte. Tornando alvo inviável para quem tem baixo ou menos intimidade com o javascript Por fim até onde eu sei no javascript não há como manipular funções anônimas, por isso o que eu estou tentando fazer é inventar uma solução para algo que não existe. Nota: Nesse caso funciona pois não há uma outra função intermediária, mesmo que seja algo sem sentido de de fazer exemplo.on('click', function (e) { // o que fazer.... }); exemplo.off('click', function (e) { // o que fazer.... });
  6. Omar~

    buscar através de um form

    Me parece que algo nesse sentido, porém não dar para entender com uma pergunta tão incoerente <form method="post" action="" id="formulario"> <input type="text" name="nome" /> <select name="seletor"> <option value="">Selecione algo</option> <option value="opcao-1">Opção 1</option> <option value="opcao-2">Opção 2</option> <option value="opcao-3">Opção 3</option> </select> <button type="submit">Enviar</button> </form> <div id="resultado"> <p>Aqui vem o valor inserido no input[name="nome"] </p> <div data-nome=""></div> <p>Aqui vem o valor inserido no select[name="seletor"] </p> <div data-seletor=""></div> </div> <script> var formulario = document.getElementById('formulario'), resultado = document.getElementById('resultado'), form = null, mostra = null; formulario.addEventListener('submit', function (e) { e.preventDefault(); form = e.target; mostra = null; for (var i = 0; i < form.elements.length; i++) { if (form.elements[i].value) { mostra = resultado.querySelector('[data-' + form.elements[i].name + ']'); mostra.innerText = form.elements[i].value; } } return false; }, false); </script>
  7. Omar~

    banner

    Também tem isso: https://github.com/Spell-Master/sm-web/tree/master/javascript/SlideCarousel
  8. Omar~

    banner aleatório

    Nem precisa a tanto... <img src="banner-<?= rand(1, 3) ?>.jpg" alt="" /> Daí então é nessesário que exista os arquivos: banner-1.jpg banner-2.jpg banner-3.jpg
  9. Omar~

    Comparação de valores

    Aí não teria como.... teria sim.... No caso se não fosse buscar pelo operador LIKE teria que criar toda um lógica você mesmo onde cada caractere forma um busca real (criar um algorítimo para a situação). Acho desnessesário mediante ao aogoritimo nessessário a se criar buscasse algo viável no banco, o que daria no mesmo que usar o operador LIKE... então substuíndo ele pelo WHERE Na questão se o vamos da busca se for comp e o operador for o LIKE mesmo que seja computador o resultado da busca será indiferentimente. Ou seja mesmo criando uma lógica total o resultado é o mesmo usando o operador LIKE, tornando qualquer manobra para contornar totalmente desnecessário
  10. Omar~

    Agendamento Serviços

    O negócio é se acalmar e pensar nas possibilidades. Já que não se vai utilizar de meses/anos para que a preocupação com isso? Vamos a um exêcicio que criei aqui, é uma das centenas de possibilidades de como proceder com a solução do seu problema: Mostrar qual dia da semana é hoje e uma frase para cada dia, mas que alguns dias se repita a mesma frase. Isso deve acontecer independente do mês ou ano em que o código será executado. <?php date_default_timezone_set('America/Sao_Paulo'); function traduzirDia($diaAtual) { $dias = [ 'Sun' => 'Domingo', 'Mon' => 'Segunda', 'Tue' => 'Terça', 'Wed' => 'Quarta', 'Thu' => 'Quinta', 'Fri' => 'Sexta', 'Sat' => 'Sábado', ]; return (array_key_exists($diaAtual, $dias) ? $dias[$diaAtual] : 'Eu sei lá que dia da semana é hoje?!'); } $hoje = date('D'); echo ('Hoje é ' . traduzirDia($hoje)); switch ($hoje) { case 'Mon': case 'Tue': case 'Wed': case 'Thu': echo ("<p>E estamos dentro da semana...; é o jeito tomar uma cerveja porque a coisa está feia</p>"); break; case 'Fri': echo ("<p>Final de semana chegou! EEEBBBBBAAAAAAA!!! Já não aguentava tomar cerveja dentro da semana!</p>"); break; case 'Sun': case 'Sat': echo ("<p>E é final de semana, bora tomar uma cerveja!</p>"); break; }
  11. Omar~

    Agendamento Serviços

    Uai, é só criar uma tabela com colunas que registram serviço prestado dia da semana (pode ser os dias possíveis ou dias em que o serviço não será prestado) Daí no PHP consulta-se a data atual e compara com o valor do resgistro no banco de dados. Se tiver de acordo o serviço está ábil. Algo relativamente simples, mas um código para dar Ctrl+C & Ctrl+V fica complicado de apresentar porque depende da arquitetura do seu projeto projeto aí. É o mesmo conceito básico $hoje = 2; if ($hoje >= 2 && $hoje < 7) { } Der uma lida nesse artigo pois vai presisar para trabalhar com datas no php: https://www.php.net/manual/pt_BR/function.date.php
  12. Bem observado @washalbano Aqui também não está sendo repassado o valor do input. Somente o valor do seletor. Olhando o cenário vejo periodicidade.php recebendo o ID do alvo então um select é feito para obter esse registro, então talvez por alguma inclusão processa_cadastro.php deve executar o insert Sendo nesse conceito posso presumir as seguintes alterações: Em periodicidade.php armazenar o valor de $row['descarte']; $periodo_doc= $row['descarte']; Então em processa_cadastro.php $tipo_doc = intval(filter_input(INPUT_POST, 'tipo', FILTER_SANITIZE_NUMBER_INT)); //$periodo_doc = intval(filter_input(INPUT_POST, 'descarte', FILTER_SANITIZE_NUMBER_INT)); Só que tem de ver se é por inclusão mesmo que processa_cadastro.php entra na equação.
  13. Olhando aqui não consegui identificar onde está o problema, mas dar para saber onde pode está ocorrendo. - Primeiro clique com o botão direito sobre a tag <select> #tipo e selecione inspecionar, olhe no html processado pelo navegador se as propriedade value desse seletor estão corretas. Se não estiverem o problema está na foma da leitura da tabela tipo_arquivo. - Se os values estão corretos certifique-se que no documento HTML não exista outro elemento com o id #tipo (isso em todo documento processado, até mesmo html carregado por ajax) Na via das dúvidas você pode remover o comando onchange do seletor e adicionar um ouvinte de eventos - Antes de enviar seu ajax verifique no console do navegador como os dados são processados através do comendo console.log( o que analisar ) "clique e inspecionar depois na aba console" - Se em todos os casos não deram a noção onde está o erro pode ser um problema relacionado ao jQuery, mas como não mexo com isso não posso ajudar. Até mesmo pode ser algo que passou despercebido por mim e o problema pode não ter nada haver com o que mencionei
  14. Omar~

    fazer o downoad dos itens com checkbox selecionados

    Como disse pode-se optar pelo javascript, assim você deixa 99,9% a responsabilidade de processamento no hardware do usuário. Um exemplo bem simples aqui: <?php $_POST['arquivos'] = [ 'arquivos/a.jpg', 'arquivos/b.txt', 'arquivos/c.css', 'arquivos/d.js', 'arquivos/e.pdf' ]; $arquivos = json_encode($_POST['arquivos']); ?> <html> <head> <title>Exemplo</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <script> var arquivos = JSON.parse('<?= $arquivos ?>'); var linkarArquivo = []; for (var i in arquivos) { linkarArquivo[i] = document.createElement('a'); // Criamos o link para o arquivo linkarArquivo[i].href = arquivos[i]; // O endereço do arquivo linkarArquivo[i].download = arquivos[i]; // Obrigatório download (do contrário redireciona para ele) document.body.appendChild(linkarArquivo[i]); // Adiciona o link no documento linkarArquivo[i].click(); // Executa o link document.body.removeChild(linkarArquivo[i]); // Remove o link porque não precisa mais dele } </script> </body> </html> Vantagens: - Não precisa criar > compactar > apagar nada no servidor, apenas fornecer o endereço para os arquivos. - Pode-se criar processos de monitoramento do download como cancelar, pausar, progresso usando a API XMLHttpRequest. - Pode-se criar opção de pausar o download e continuar depois, ou falha de conexão continuar de onde parou usando a API FileReader. Também com a FileReader é possível criar um compartilhamento de dados nos moldes do torrent (porém requer autorização simultânea de pelo menos 2 usuários conectados a todo momento) Desvantagens: - O diretório onde estão os arquivos não pode ter nenhuma restrição de acesso, portanto qualquer arquivo nele pode ser acessado por qualquer pessoa, portanto não pode conter nenhum arquivo que alguém não deva ter acesso. - Requer permissão do usuário para que possa realizar mais de uma transferência por vez.
  15. Omar~

    fazer o downoad dos itens com checkbox selecionados

    A melhor alternativa (mais simples) seria copiar os arquivos selecionados para um diretório e então enviar esse diretório. Outra forma seria por ação do javascript ao qual você pode linkar os arquivos enviando-os assim. Eu até tenho esse script aqui: https://github.com/Spell-Master/sm-web/tree/master/javascript/FileTransfer Porém eu não escrevi ele para manusear vários arquivos por vez, mas talvez você possa usar-lo como base para desenvolver um que se enquadre em suas necessidades.
  16. Omar~

    Não consigo encontrar o erro.

    Está faltando fechar com a aspa dupla o argumento de parâmetros Tente modificar para assim: $dsn = 'mysql:host=' . $host . '; dbname=' . $nome; $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8']; $pdo = new PDO($dsn, $usuario, $senha, $options);
  17. Omar~

    Alterar href para impressão

    Tenta usar o comando print no css, então você dispensa alterar um elemento na header. Ele é justamente para personalizar quando a impressão é acionada @media print { /* suas definições */ } Também não sei se vai funcionar no seu caso, mas não custa tentar, ao invés de substituir o css, crie uma nova tag link na header com o javasript e adicione o css desejado então, nesse css contendo as definições personalizadas na teoria irá sobrescrever quaisquer css já carregado.
  18. Omar~

    Buscar um elemento em comum de duas tabelas

    Tenta assim: SELECT cli.idc, cli.nomec, proc.idpr, proc.part, proc.proces FROM cli INNER JOIN proc ON cli.idc = proc.part WHERE cli.idc = :id Traduzindo a query: Entre na tabela cli e depois em proc Selecione os dados "cli.idc, cli.nomec, proc.idpr, proc.part, proc.proces" Cujo o cli.idc tem que ser igual ao proc.part Mas que os resultados de cli.idc sejam apenas o que o statement :id for fornecido.
  19. Omar~

    setitimeout

    https://socket.io/get-started/chat O resto é auto explicativo. Ajudaria mais porém não mexo com jquery.
  20. Omar~

    Contar quantidades de imagem por input file

    Gostei da questão, nunca havia feito nada a respeito disso. Pois sempre limitei o upload a um único arquivo de vez. Enfim fiz algo assim: O usuário pode selecionar vários arquivos, se ele selecionar mais de 3 simplesmente redefino os arquivos selecionados no input, na verdade a função só irá pegar os 3 primeiros arquivos que ele selecionar e vai definir o valor do input com esses. <input id="exemplo" multiple="" type="file" style="display: none" accept="image/*" /> <label for="exemplo">Selecionar Imagens</label> <script> var exemplo = document.getElementById('exemplo'), dataT = new DataTransfer(); exemplo.addEventListener('change', function (e) { var alvo = e.target, selecionados = alvo.files; for (var i = 0; i < selecionados.length; i++) { if (i < 3) { dataT.items.add(selecionados[i]); alvo.nextElementSibling.innerHTML += ' ' + selecionados[i].name + '/'; } } alvo.files = dataT.files; }, false); </script> Acho que não precisaria lembrar, mas é bom... Você também terá que fazer uma verificação no servidor quando o usuário enviar os arquivos. E é muito simples, basta executar um loop com o laço for no array $_FILES do input, tudo índice que for maior que 3 você vai aplicando a função unset neles. De qualquer forma pelo javascript quando estava fazendo esse simples exemplo pude perceber um leque de infinitas possibilidades para a situação, dar para fazer cada coisa bacana a respeito, porém requer scripts mais complexos e detalhados, não sendo viável para um simples post aqui no fórum.
  21. Omar~

    abrir imagem e ou pdf no navegador

    Você terá que abrir o PDF em uma tag iframe, mas mesmo assim se o browser não for capaz de ler a opção de download será acionada. No entanto qualquer browser atual já vem com suporte a pdf nativo. Também é possível carregar e mostrar PDF usando a API nativa XMLHttpRequest.
  22. Tente então algo como isso: O input está alí mas o editor não, ao digitar no input pelo menos 2 caracteres mostramos o local e o editor é inciado. Não sei se essa é a lógica, mas toda vez que alterar algo no input o conteúdo do editor é alterado <input type="text" id="exemplo" value="" /> <div style="display: none"> <textarea id="editor"></textarea> </div> <script> var exemplo = document.getElementById('exemplo'); exemplo.value = null; exemplo.addEventListener('keypress', iniciarEditor, false); function iniciarEditor(e) { var proximoElemento = e.target.nextElementSibling, editor = proximoElemento.children[0].id; if (typeof CKEDITOR.instances[editor] === 'undefined') { proximoElemento.removeAttribute('style'); CKEDITOR.replace(editor); } CKEDITOR.instances[editor].setData( e.target.value ); } </script>
  23. Primeiramente o "ckEditor 4" é o mesmo usando por esse fórum. Enfim, basta que que você crie um elemento qualquer (assim como é usado por esse fórum) assim quando clicar nesse elemento o editor é iniciado. Aí temos as opções de ter já uma textarea pronta para receber o editor, ou criar uma (no caso desse fórum a textarea já existe); independente qual for a iniciativa o elemento ao qual o editor vai iniciar deve ser mostrado pois vai ser uma iFrame. CKEDITOR.replace('iD_DA_TEXTAREA'); Aí vai depender da lógica que vai seguir para ter uma noção melhor de como deve prosseguir... No resto há uma infinidade de documentação espalhada na web sobre como usar essa ferramenta; confesso que nenhuma delas é de muita ajuda, a não ser confundir mais em vez de ir direto a situação real Exemplo você pode criar um elemento editável assim que uma key code é inserida pós clique o elemento alvo o editor seja iniciado..... seguindo os conceitos (ou mostra ou cria) Veja como eu realizei esse processo ao usuário clicar.....: https://github.com/Spell-Master/source-map/blob/master/modules/forum/post-new.php#L7 https://github.com/Spell-Master/source-map/blob/master/lib/javascript/sm-forum.js#L330 > a linha 335 https://github.com/Spell-Master/source-map/blob/master/lib/javascript/sm-editor.js#L28 obs.: Isso é o "rascunho" de um projeto meu portanto posso remover ou modicar tudo no github (serve para leitores futuros desse post)
  24. Tente algo como isso: <?php $array = [ 0 => ['produto' => 'bala', 'valor' => '10,00'], 1 => ['produto' => 'doce', 'valor' => '30,00'], 2 => ['produto' => 'laranja', 'valor' => '14,00'], 3 => ['produto' => 'banana', 'valor' => '16,00'] ]; foreach($array as $chave => $indice){ echo ("<p>Nome do produto: {$indice['produto']} / valor: {$indice['valor']} / chave no array: {$chave}</p>"); } Se não for isso é porque interpretei/adivinhei errado qual é sua dúvida.....
  25. Omar~

    Remover FULLTEXT de um coluna

    Você diz uma coluna em sua tabela no banco de dados sql? Se for execute o comando: ALTER TABLE nome_da_tabela DROP COLUMN nome_da_coluna
×

Informação importante

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