Ir para conteúdo

POWERED BY:

Omar~

Members
  • Total de itens

    1339
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    Limitar Caracteres digitado de um input

    Tente algo como isso.... <p>De qualquer forma os input só vão aceitar 20 caracters</p> <input maxlength="20" type="text" class="basic-usage" name="input-a" /> <input maxlength="20" type="text" class="basic-usage" name="input-b" /> <script> // Armazenamos todos elementos, teremos que pecorrer eles 2 vezes var input = document.querySelectorAll('input'); // Quantidade de caracteres atuais var total_de_caracteres = 0; // Total de caracteres que podem co-existir var caracteres_permitidos = 10; // De acordo com seu tópico aqui seria 20, deixamos em 10 para exemplo // Percorremos os elementos para adicionar o evento neles for (var i = 0; i < input.length; i++) { input[i].addEventListener('keyup', digitar, false); } // Função que é executada através do ouvinte de eventos keyup function digitar(e) { // Começamos definindo que o total de caracteres é do input alvo total_de_caracteres = this.value.length; // Percorrendo os elementos novamente então for (var j = 0; j < input.length; j++) { // Se a volta atual do loop não for o input alvo aumentamos // o total de caracteres inseridos com o valor dos demais // inputs que existirem if (input[j] !== this) { total_de_caracteres += input[j].value.length; } } // Então se o total for maior que o permitido // Redefinimos o valor do input alvo if (total_de_caracteres > caracteres_permitidos) { // Substituir tudo que é depois da quantidade permitida this.value = this.value.substring(0, caracteres_permitidos); } } </script>
  2. Omar~

    unset em variável melhora desempenho?

    Na verdade você está consumindo mais por eliminar. Não diria na seguinte situação dentre outras no contexto similar: Tenho um array onde executo loop nele para redenir valores. Só que novamente tenho que percorrer esse array em alguma parte futura do código e muitos dos índices não serão usados mais. Nesse caso eliminar os índices já no primeiro laço de repetição posso chegar a ganhar em desempenho ou não, dependendo do que vai ser eliminado. unset seria mais indicado se de acordo com o programa uma coisa não possa ser o esperado, podemos eliminar, e se mais tarde não existir, retornar a situação de erro de forma controlada. Para completar isso (não que seja algo errado): Não reutilize, a menos que seja realmente necessário. Isso pode chegar a dar dor de cabeça em manutenções futuras e ter que ficar relendo várias vezes o código para saber o que realmente $callback está armazenando. Uma situação onde a gama de dados são registros que podem ultrapassar de 1000 e o loop deve ser excetuado duas vezes no segundo querys são lançadas. Eliminar os índices no primeiro loop poupa recursos que seriam usados novamente:
  3. Omar~

    Travar Barra de Rolagem

    <a href="#">Vai para o topo</a> <a>Não vai para o topo</a> <button>Não vai para o topo</button> O caractere # é um bookmak, como ele não específica um elemento id seu endereço é o início da tag body <a href="#exemplo">Vai para exemplo</a> <a href="#">Vai para topo</a> <div id="exemplo"></div>
  4. Omar~

    pesquisar conteudo de array multidimencional

    $array = [ 0 => ['id' => 1, 'nome' => 'Texto: a'], 1 => ['id' => 2, 'nome' => 'Texto: b'], 2 => ['id' => 3, 'nome' => 'Texto: c'], 3 => ['id' => 4, 'nome' => 'Texto: d'], 4 => ['id' => 5, 'nome' => 'Texto: e'] ]; if ($array[2]['nome'] === 'Texto: c') { echo("O \"Texto: c\" está na chave 2"); }
  5. Omar~

    melhor bd para grandes volumes

    A questão mais é: Saber programar a aplicação e as querys em geral para o menor consumo da máquina é o que se deve se preocupar e não com o tamanho do banco de dados. Se não tem uma vasta capacidade de escrever código não importa qual tipo de banco de dados e seu tamanho a coisa sempre vai ter um retorno ruim. Faço também minhas essas palavras:
  6. Omar~

    Converter imagens em webp

    https://www.php.net/manual/pt_BR/function.imagewebp.php
  7. Omar~

    mostrar e esconder div

    Tem jeito melhor e mais eficaz de fazer isso acontecer, mas dessa forma fica mais simples de se entender. <style> * {margin: 0; padding: 0} #azul { max-width: 31.25rem; margin: auto; height: 6.25rem; background-color: blue } #azul.acao {visibility: hidden} #verde { max-width: 31.25rem; margin: auto; background-color:green; top: 0; position: sticky; visibility: hidden } #verde.acao {visibility: visible} .espaco {height: 312.5rem} </style> <div id="azul"> Azul </div> <div id="verde"> verde </div> <p id="p2">teste</p> <div class="espaco"></div> <script> var azul = document.getElementById('azul'), verde = document.getElementById('verde'); document.addEventListener('scroll', function (evento) { if (window.scrollY >= azul.offsetHeight) { // Quando a rolagem for maior ou igual a altura do azul azul.classList.add('acao'); verde.classList.add('acao'); } else { azul.classList.remove('acao'); verde.classList.remove('acao'); } }, false); </script>
  8. Omar~

    Erro em arquivos do tipo woff, tff

    Se são os arquivos estão diretamente no mesmo diretório do website e não possui restrição de acesso a eles deveria está tudo bem. Isso geralmente acontece quando se requisita arquivos de outra url o que pode acontecer de algum tipo de restrição. Bem, o que posso lhe dar alguma coisa a se observar. Verifique o cache, acesse o inspetor do navegador e veja se o arquivo css da fonte é mesmo como deveria ser e os arquivos .ttf etc estão mesmo como deveria ser. Verifique o case-sentitive letras minúsculas e maiúsculas. Porque 404 é erro de não encontrado
  9. Omar~

    Erro em arquivos do tipo woff, tff

    Mas a requisição dos arquivos de fonte estão no diretório do website ou são puxados de outro lugar?
  10. Além do ajax que é o mais comum de uso existe outra possibilidade. Carregar os dados que deseja no carregamento do documento. Dessa forma não se precisa enviar nova requisição toda vez que algum produto é selecionado. Qual melhor alternativa? R: Ambas, pois depende do resultado a obter e da proposta da função. Veja nesse exemplo onde simulo um resultado da query quando se acessa a página, assim uso esse resultado para criar um json com todos registros. Com o json uso ele para criar um seletor de produtos, que ao ser alterado busco novamente no json os dados e informo mais conteúdos. <?php // SELECT produto_id, produto_nome, produto_preco FROM tabela_produtos $exemplo_do_resultado = [ // 'id' => produto_id, 'nome' => produto_nome, 'preco' => produto_preco ['id' => 0, 'nome' => 'Maçã', 'preco' => '11'], ['id' => 1, 'nome' => 'Banana', 'preco' => '22'], ['id' => 2, 'nome' => 'Laranja', 'preco' => '33'], ['id' => 3, 'nome' => 'Melancia', 'preco' => '44'], ['id' => 4, 'nome' => 'Melão', 'preco' => '55'] ]; ?> <div id="local_do_seletor"></div> <div id="local_para_mostrar"> <p>Selecione um produto</p> </div> <script> var selecionar = document.getElementById('local_do_seletor'); var mostrar = document.getElementById('local_para_mostrar'); var produtos = JSON.parse('<?= json_encode($exemplo_do_resultado) ?>'); // ou dependendo de como está trazendo o array do banco de dados // var produtos = '<?= json_encode($exemplo_do_resultado) ?>'; function carregarLista() { var seletor = document.createElement('select'), opcao = {}; window.produtos.forEach(function (coluna, indice) { opcao = document.createElement('option'); opcao.value = coluna.id; opcao.innerText = coluna.nome; seletor.appendChild(opcao); }); selecionar.addEventListener('change', verProduto, false); selecionar.appendChild(seletor); } function verProduto(evento) { var idAlvo = parseInt(evento.target.value), texto = ''; window.produtos.forEach(function (coluna, indice) { if (coluna.id === idAlvo) { texto = 'Você selecionou o produto ID (' + coluna.id + ') '; texto += 'de nome (' + coluna.nome + ') '; texto += 'e seu valor é (' + coluna.preco + ') '; } }); if (texto.length > 1) { mostrar.children[0].innerText = texto; } } carregarLista(); // Cria o seletor com as opções </script> Prós: Não é necessária uma nova requisição sempre que selecionar algum produto. Contras: Quanto mais registros existirem mais lento a página é carregada. (Depende mais do hardware do usuário e sua conexão)
  11. Dessa forma não é possível. Veja o javascript é executado do lado do usuário ou seja na máquina dele. Enquanto que o php é executado no lado do servidor, ou seja se o usuário já interage ou acessa o conteúdo o php já foi executado e não tem seus dados alterados mais. Em resumo digamos isso: <?php $exemplo = 'console.log(`Olá mundo`)'; ?> <script> function exemplo() { console.log('Dizer:'); <?php echo $exemplo ?> } </script> Na verdade o que é: <script> function exemplo() { console.log('Dizer:'); console.log(`Olá mundo`); } </script> Então não é o php que é executado dentro do script, o script já está pronto e foi escrito pelo php antes do hardware do usuário terminar o download do mesmo. A coisa que se pode fazer é se você quer alguma informação do usuário obrigatoriamente essa informação deve ser enviada para o servidor. Uma vez a informação lá você renderiza novo conteúdo html para o usuário. Ainda em sua lógica.... Escrever PHP dentro de tag's javascript de forma que seu conteúdo seja alterado conforme o php modificar é meter os pés pelas mão mesmo que em muitos casos isso possa até funcionar você está criando uma carga de armazenamento demais para os usuários. Fora a questão da manutenção que vai virar o verdadeiro inferno. Não se deve alterar funções javascript com escrita do php. O cache é uma coisa que se deve pensar, se escreve todo ou alguma parte de um escopo de função do javascript no php ao solicitar a mesma função novamente o cache ainda está ativo e caso a função agora seja diferente a uma infinidade de erros que podem ocorrer. No caso crie a função a mesma só irá trabalhar com dados vindo de parâmetros, então se desejar re-executar a função basta então apenas charmar-la novamente enviando outra informação como parâmetro. // JavaScript function exemplo(parametro) { console.log('Função executada com a informação:\n' + parametro); } <?php $a = "João e Maria foram a padaria"; $b = "E joão queria comprar bolachas"; $c = "Mas Maria só queria pão"; $d = "E ambos só tinham dinheiro para uma coisa"; ?> <script> exemplo(`<?= $a ?>`); exemplo(`<?= $b ?>`); exemplo(`<?= $c ?>`); exemplo(`<?= $d ?>`); </script>
  12. Omar~

    [Resolvido] quebra de linha do php para o javascript

    @joao b silva Se você posta algo abstrato as pessoas tem que adivinhar o que você está tentando fazer, daí sai respostas incoerentes como a pergunta. Seja objetivo e claro para que a pessoa possa ter certeza do seu problema. php não insere javascript, php é o texto que o servidor interpreta, o usuário final só recebe aquilo que o php já renderizou, no caso sempre será uma marcação html. Explique como a string que corresponde do suposto javascript é criado e como será usado, que do contrário é usar uma quebra de linha "pressionando ENTER" ou um codec que representa uma quebra de linha no caso um contra-barra + N $texto = "var primeiraLinha = 'olá', \n segundaLina = 'mundo';"; No mais um colega aqui bem disse, ficar fazendo rodeios para coisa inútil é coisa inútil. Deixe de preferência o php fazer o trabalho de php e html fazer trabalho de html. É só escapar as aspas echo "<input type=\"{$type}\" />";
  13. Omar~

    for

    Crie as opções em um array no php. Dentro da tag <select> 1 e 2 faça um loop percorrendo o array usando o comando echo para compor cada tag <option> em ambos seletores.
  14. Omar~

    macro de substituicao

    Por acaso não seria isso? $array = [ 'Índice 1' => 'Valor 1', 'Índice 2' => 'Valor 2', 'Índice 3' => 'Valor 3', ]; foreach ($array as $chave => $valor) { echo "<p>Chave: {$chave}<p><p>Valor: {$valor}<p><hr />"; }
  15. Omar~

    Cobrança por hora

    <select id="calculo" onchange="calcular()"> <option value="" selected="">Selecione o tempo de uso</option> <option value="1">1 minuto</option> <option value="10">10 minutos</option> <option value="60">60 minutos</option> <option value="213">213 minutos</option> </select> <script> var seletor = document.getElementById('calculo'); // apenas para fins de exemplo seletor.selectedIndex = 0; // apenas para fins de exemplo var saldoAtual = parseFloat(21.90); var valorHora = parseFloat(0.0304); // 60 minutos é 1 hora, então sabemos quanto vale um minuto var valorMinuto = parseFloat(valorHora / 60); console.log( 'Saldo atual: (' + saldoAtual + ')\n', 'Valor por hora: (' + valorHora + ')\n', 'Valor por minuto: (' + valorMinuto + ')\n' ); function calcular() { var minutosUsados = parseInt(seletor.value); var valorUsado = parseFloat(minutosUsados * valorMinuto); // Retirando do saldo atual saldoAtual = parseFloat(saldoAtual - valorUsado); console.log( 'Minutos usados: (' + minutosUsados + ')\n', 'Valor usado: (' + valorUsado + ')\n', 'Saldo atual: (' + saldoAtual + ')\n' ); console.log( 'Ainda te restam: ' + saldoAtual.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'}) + ' de saldo disponível' ); } </script> <?php function parseFloat($parametro) { return (float) $parametro; } $saldoAtual = parseFloat(21.90); $valorHora = parseFloat(0.0304); $valorMinuto = parseFloat($valorHora / 60); $minutosUsados = 60; // usou 60 minutos $valorUsado = parseFloat($minutosUsados * $valorMinuto); $saldoAtual = parseFloat($saldoAtual - $valorUsado); var_dump($saldoAtual);
  16. Omar~

    criar e remover input

    A mesma coisa dessa resposta: https://forum.imasters.com.br/topic/588389-criar-apenas-uma-vez/?tab=comments#comment-2292712 Então você usa isso: https://developer.mozilla.org/en-US/docs/Web/API/Node/removeChild
  17. Omar~

    ocultar primeiro registro

    SELECT * FROM tabela LIMIT 100 OFFSET 2
  18. Omar~

    Cobrança por hora

    A forma de calculo já disse como proceder, agora se for questão de recalcular a data em base do tempo de uso, o php já possui isso a mão pronto para uso: $periodoA = date('Y-m-d H:i:s', strtotime('-1 minute')); var_dump( $periodoA ); // resultado = sua data atual menos 1 minuto echo "<hr />"; $periodoB = new DateTime('2022-12-27 17:55:00'); $periodoB->modify('-1 minute'); var_dump( $periodoB->format('Y-m-d H:i:s') ); // resultado = 2022-12-27 17:54:00
  19. Omar~

    Cobrança por hora

    E qual a dúvida? Bom, tudo questão de matemática, concentrando-se apenas nos cálculos do tempo de uso: Valor atual menos valor da hora usada = resultado a atualizar em um banco de dados. Valor atual é menor que tempo atual = fim do acesso a atualizar em um banco de dados. O prazo de validade é simples data de adesão ao plano + 30 dias. Acesso fora do prazo de validade conta como vencido. 21,90 / 0,0304 = se minha matemática de cabeça está correta é cerca de 720 horas o que equivale a 24 horas dia durante 30 dias. Então não sei se acertei digamos 0,0304 / 60 = 0,00506 por minuto & 0,00506 / 60 = 0,000843 por segundo. E é isso é melhor usar o sistema para calcular precisamente lembrando que aqui fiz de cabeça, então para cada segundo ou minuto ou hora que o usuário usar você desconta esse valor no total atual que ele possui seja 21,90 ou 10,00 ou 5,99 etc... Você pode está usando o php para realizar os cálculos e atualizar os registros, porém em hora de uso você deve detectar esse tempo de atividade, se fosse eu optaria pelo https://socket.io/ para está constantemente realizando o cálculo no servidor e atualizando os descontos no crédito. Você pode até adicionar um intervalo em que o socket irá se comunicar caso esse sistema possa conter milhares de usuários simultaneamente, assim poupa estresse do servidor porém os registros podem ficar imprecisos caso o usuário saia antes da comunicação ser executada.
  20. Omar~

    Não consegui usar o comando for do JavaScript

    Não precisa ficar replicando a mesma coisa.... No caso esses montes de innerHTML aí Então vamos parar um loop quando ele deve parar em uma determinada situação. Primeiro tenha certeza que a variável j é mesmo um numero inteiro. Você pode chamar a função passando o valor como integer exemplo: show(j); Exemplo básico: var j = '13'; show( parseInt(j) ); function show(contar) { var parar = (contar + 10); // o valor do parâmeto mais 10 para que o loop seja executado 10 vezes for (; contar < parar; contar++) { // enquanto a contagem for menor que o valor de parada console.log('Contagem executada: ' + contar); } } Algumas ponderações: A variável de parada não é ideal ficar dento da função show se essa função for chamada dentro de um loop haverá uma sobrecarga de calculo desnecessário que só deveria ser executado uma vez, somente usei dentro do escopo da função como exemplo. As tags <options> devem corresponder exatamente a quantidade de voltas que o loop vai executar a partir do início. Rever a arquitetura da lógica você poderá executar tudo mais facilmente sem a necessidade de múltiplos loops, bastando um único loop você captura os dados compõe e checa as opções reduzindo o consumo de memória para algo tão simples. Qualquer tag pode conter um dataset seja ele data-id/ data-qualquer/ data-fulano <div id="exemplo" data-pessoa="joaquin"></div> <script> console.log( document.getElementById('exemplo').dataset.pessoa ); </script>
  21. Omar~

    Base Pesquisa Eleitoral 2022

    Não sei se é realmente o que procura, mas tente um canal oficial para afins: https://www.tse.jus.br/eleicoes/pesquisa-eleitorais/consulta-as-pesquisas-registradas No entanto é de se saber que quaisquer pesquisas eleitorais registradas ou não tiveram dados manipulados para servir de influência ao voto.
  22. Omar~

    Executar função via marcação de um elemento [RESOLVIDO]

    Você então pode está usando mais de um atributo data exemplo: <div data-funcao="idade" data-parametro="2"> Daí é só jogar para alguma função os valores obtidos pelo dataset funcao e parametro. Essa função checa o valor e executa a função: function executaOutra(NomeDaFuncao, Param) { switch(NomeDaFuncao) { case 'sexo': Sexo(Param); break; case 'idade': Idade(Param); break; } } Se bem que se a coisa for bem estruturada, basta apenas executar a função de acordo com o conteúdo, ao invés de consultar posteriormente para saber o que fazer.
  23. Omar~

    colunas e linhas

    Não em um textarea mas sim em outro tipo de tag editável: https://html.spec.whatwg.org/multipage/interaction.html#contenteditable
  24. Omar~

    Executar função via marcação de um elemento [RESOLVIDO]

    Não existe algo como isso. Qualquer data-????? é um atributo dataset que não possui vínculos de comando a ele, o que se usa muito é para fins de manipulação de conteúdo aos quais são mais práticos de encontrar no documento. Bom, para clicar em determinado elemento você pode usar onclick="funcaoOla" E para executar a função pós ajax você pode está usando o ouvinte de evento readystatechange para monitorar a resposta, quando ela estiver pronta para ser escrita você apenas chama a função que deseja. https://github.com/Spell-Master/sm-web/blob/master/javascript/jsd/js-default.js#L501 Outra forma quando por exemplo houver uma tag javascript no resultado da resposta e você precisa que o script seja executado mesmo que esse resultado seja mostrada por innerHTML. Nesse caso você deve varrer o texto do resultado obtendo somente o texto contido dentro da tag, então você cria uma nova tag javascript e escreve o script que extraiu anteriormente e substitui a tag não funcional pela nova criada que a coisa vai funcionar. https://github.com/Spell-Master/sm-web/blob/master/javascript/jsd/js-default.js#L501 Por fim exec se tornou obsoleto e já foi avisado que futuras versões dos navegadores não irão mais reconhecer essa função.
  25. Omar~

    Paginação com nível de acesso

    A questão é bem simples, como já mencionado deve haver alguma clausula na query ao identifique qual conteúdo determinado usuário pode acessar. Hora que uma paginação para que funcione corretamente são necessárias duas querys, uma determinará o limite de resultados a outra os resultados de acordo com o offset do índice acessado. A primeira query irá buscar quantos resultados existem essa irá dizer o limite, ao qual deve haver a quantidade de páginas a exibir. Ex.: SELECT id FROM alunos where idAlunoUnidade = '2' A segunda query irá usar o resultado da primeira query para exibir cada resultado conforme a página acessada. Ex.: SELECT * FROM alunos where idAlunoUnidade = '2' LIMIT {$quantidade_de_registros_da_primeira_query} OFFSET {$pagina_atual_acessada} Esse procedimento se repete a cada mudança de página, sempre exigindo alguma clausula que indique qual conteúdo o usuário pode acessar. Em outro caso é possível fazer uma única query trazer todos os resultados e através de um javascript criar a paginação onde esse não irá mudar a página apenas mostrar ou esconder os elementos de acordo com cada página acessada. Para não reinventar a roda aqui, eu já desenvolvi um script para essa finalidade: https://github.com/Spell-Master/sm-web/tree/master/javascript/Paginator
×

Informação importante

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