Ir para conteúdo

Omar~

Members
  • Total de itens

    1327
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. 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 />"; }
  2. 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);
  3. 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
  4. Omar~

    ocultar primeiro registro

    SELECT * FROM tabela LIMIT 100 OFFSET 2
  5. 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
  6. 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.
  7. 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>
  8. 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.
  9. 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.
  10. 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
  11. 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.
  12. 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
  13. Omar~

    abrir modal na pagina seguinte

    Como assim? Você quer carregar a pagina2 dentro do modal? R: Basta apenas chamar uma requisição ajax e carregar a resposta no elemento do modal. Você quer, clicar na imagem na pagina1, ir para a pagina2 ao chegar o modal aparece? R: Use LocalStorage para armazenar algo e em pagina2 você confere se existe o que armazenou, se existir o modal é mostrado.
  14. Omar~

    Submeter formulario ao clicar em um button fora do form

    Mas vale ressaltar o uso do javascript para criar uma integração com usuário. Assim pode-se controlar o que o usuário pode fazer antes de enviar dados para o servidor, poupa tempo dele e do servidor também.... "se for o caso" var formulario = document.getElementById('buscar'), texto = ''; function exemplo() { texto = formulario.elements[0].value.trim(); if (!texto) { // nada digitado no primeiro campo do formulário } else if (texto.length < 3) { // o primeiro campo do formulário DEVE possuir pelo menos 3 caracteres } else if (texto.length > 10) { // o primeiro campo do formulário NÃO DEVE mais de 10 caracteres } else if (!texto.match(/^([a-zA-Z À-ú]+)$/i)) { // o primeiro campo do formulário só pode ser usado letras } else { formulario.submit(); // pode validar } } Lógico que tudo apresentado pelo script acima pode ser manipulado pelos atributos do input. Mas a questão é criar um personalização, seja lá qual for.
  15. Omar~

    Submeter formulario ao clicar em um button fora do form

    Basta apenas que o botão externo execute uma função que manda o formulário submeter. function exemplo() { document.getElementById('buscar').submit(); } Além do mais caso queira adicionar tag <button> sem que esse submeta o formulário você tem que dizer qual o tipo de ação que esse botão realizará, por padrão qualquer navegador já interpreta essa tag como submit quando dentro de um formulário, então basta apenas mudar assim você não precisa de uma função controlando isso <button type="button">Executa</button> <- Não executa o formulário.
  16. Omar~

    Reorganizar thumbs do preview com javascript puro

    Ao meu ver o problema principal é um único input para tudo. Para cada imagem/arquivo um input deveria ser criado para tal.
  17. Omar~

    Combobox estados e cidades PHP MYSQL

    Podemos sim, mas poste mais informações para sabermos qual é o seu real problema Se for o caso mete isso no google: cidades estados github Verás um infinidade de projetos que nem depende de um banco de dados no girhub
  18. Omar~

    Remover arquivo do input file

    Marcar uma aula ou indicar outra não sou capaz... Uma vez que "todas aulas/cursos que fiz" nenhum era melhor que eu que aprendi na "raça". Mas sempre quando tenho alguma dúvida consulto aqui: https://developer.mozilla.org/ Obs.: Sou um dos colaboradores
  19. Omar~

    Remover arquivo do input file

    Para fazer isso você vai ter que redefinir todos os arquivos que estejam no input. O segredo é obter o nome ou qualquer informação da imagem que possa ser comparado com o objeto FileList do input.files. Então você compara se essa informação não condiz com as demais, adicionando o atual aquivo "que não seja o que vai ser removido" e o adiciona a um objeto que seja capaz de interpretara-lo. Para esse afim você pode está usando a API nativa DataTransfer. Por fim você redefine o [input].files com todos arquivos. Exemplo: <input type="file" multiple="" /> <button onclick="exemplo()">Remover</button> <button onclick="ver()">Ver Arquivos</button> <script> var input = document.querySelector('input'); function exemplo() { var dataT = new DataTransfer(); for (var i = 0; i < input.files.length; i++) { // No caso se o nome do arquivo que está não input for imagem.jpg if (input.files[i].name !== 'imagem.jpg') { dataT.items.add(input.files[i]); } } input.files = dataT.files; } function ver() { console.log(input.files); } </script>
  20. Omar~

    validar formulário

    Apesar de ser um recurso utilizar múltiplos em uma tag <select> não é recomendado porque ela pode causar confusão para um usuário saber interagir corretamente, para fins de múltipla seleção prefira usar tags <input type="checkbox" /> . E para solucionar se um valor pode ser um número ou não nem precisa usar expressões regulares basta apenas usar essa função: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/isNaN
  21. Omar~

    Criando arquivo de Imagem do canvas e submetendo no form

    Me parece que a API DataTransfer não servirá para essa finalidade. Acredito que croppedCanvas.toDataURL() seja um base64 da imagem cortada. Verifique no console do navegador usando: console.log( croppedCanvas.toDataURL() ); Se for então adicione esse código ao valor de um textarea, esse textarea você o mantém escondido no form, então no back-end você usa a informação do textarea para criar uma imagem. É esse método que uso para salvar imagens usando meu script para corte de imagens: https://github.com/Spell-Master/sm-web/tree/master/javascript/ImageCut
  22. Omar~

    Background Áudio

    Como disse é possível, mas terá que repensar algumas coisas. Sugiro que dê uma lida nesses artigos, então terá uma noção melhor sobre o assunto, só então decidir se vale a pena ou não: https://developer.chrome.com/blog/media-updates-in-chrome-73/#autoplay-pwa https://developer.chrome.com/blog/autoplay/
  23. Omar~

    Background Áudio

    É possível sim, porém desencorajo a você optar por isso. Além de consumir dados móveis do usuário (SEM AUTORIZAÇÃO) terá algo que não irá funcionar de imediato, uma vez que o conteúdo deve ser baixado (mesmo sendo um vídeo do youtube)/ processado só então a coisa começaria a funcionar. Atrasando assim o carregamento do website violando as boas práticas de acessibilidade.
  24. Omar~

    Erro nas configurações do iframe

    Fica difícil ajudar só com a explicação sem ver o que está acontecendo. Mas se fosse comigo partiria do princípio que algo não carregou ou carregou de forma errônea. Pois já me esbarrei algumas vezes em algo similar e forma que usei para encontrar a raiz do problema foi usar o inspetor do navegador e analisar coisa a coisa. Digo a você que abra o inspetor e vá logo na aba console e tente sanar eventuais erros e alertas ali apresentado. Veja também através do inspetor os arquivos fonte, se os css e os javascripts estão todos alí com seu código original, veja se a estrutura html está correta e por aí vai....
  25. Omar~

    foreach help

    Como assim?! O que tem haver $credito com o resultado a obter? Como é o array $shows? De onde vem isso? De onde vem isso? Especulando seria usar condicionais dentro do laço de repetição, mas como não dar para saber corretamente a dúvida a resposta não seria coesa.
×

Informação importante

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