Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    problema ao passar mais de um resultado pelo json_enconde()

    Só completando o que o @Williams Duarte disse, sobre o erro de usar jQuery também você tem uma função sendo requisitada a cada 5 segundos e lançando uma query em seu SQL a cada sincronização. Isso não é o ideal imagina 10 páginas abertas por 1000 usuários. São mais de 100.000 carregamentos e requisições por minuto o suficiente para sufocar seu servidor. Prefira deixar esse recurso sendo manuseado por WebSocket por exemplo
  2. Omar~

    Remover click de elemento

    Acontece que na primeira situação você tem uma função anônima agregando uma outra função e não um evento de disparo. E para você encerrar um evento você tem que ter um evento iniciado. Bom nesse caso, você pode ter uma função que ouvirá o evento, assim sendo podemos remover-lo uma vez que alguém está ouvindo. Outra coisa é que ficou confuso sobre como esse evento deve ser encerrado, uma vez que você tem o objeto elem ao qual dispara o evento, e você tem um DOM#ID waapTel1 que não sei se é elem. elem.addEventListener('click', ouvirEvento, false); function ouvirEvento(e) { openWhatsApp(b, apelido); // Talvez seja necessário a composisão de objetos ou prototipos para chegar em "b, apelido" elem.removeEventListener('click', ouvirEvento); }
  3. Se eu entendi direito, seria como se o administrador pudesse ordenar quais "empresas" seriam priorizadas como ordem de exibição Nesse caso particularmente faria uma adição na tabela para ordenar isso, ou criaria outra para tal afim, e como nosso amigo @marsolim disse é o recurso eficiente. E não usaria um "espaço" e sim um input ou um select para tal coisa, seguindo o conceito que haveria uma coluna ou tabela onde poderia armazenar esse dado. No mais é até um upgrade simples dependendo da arquitetura do sistema. Porque "não é possível de se fazer" uma vez que o cliente/empresa pode alterar o campo onde fica gravado o nome. Se nós tentarmos pegar os espaços não dar certo pois por exemplo podemos ter um nome composto com "espaços" tipo " Loja de roupa" . Mesmo que tenhamos um espaço no início temos também espaços no decorrer da string, mesmo que possamos fazer uma expressão regular para tal afim acho que não daria certo. Veja essa questão dos espaços: <?php $stringAnterior = " anterior"; var_dump($stringAnterior); $totalDeEspacos = substr_count($stringAnterior, ' '); $espacos = " "; $novaString = str_repeat($espacos, $totalDeEspacos) . "substituir"; echo ("<br />"); var_dump($novaString);
  4. Omar~

    Texto na imagem

    Simples sua tag <a> deve está dentro de uma tag <div> essa recebe a propriedade "relative". A tag <a> vai dentro da <div> relativa A tag <a> recebe a propiedade "block" A imagem vai dentro da tag <a> O elemento de "LIKE" dentro da taga <div> relativa fora da tag <a>. O elemento de "LIKE" recebe a propriedade "abusolute" No mais o resto é posicionar o elemento do "LIKE" usando left e top
  5. Omar~

    PHP - Ler atributo da classe

    Acho que só meu exemplo já explica, mas qualquer dúvida é só perguntar. <?php $test = new classeTeste; echo "Valor inicial \"{$test->myVar}\" <br />"; // 1000 $test->alterar_myVar(); echo "myVar após chamada do método: \"{$test->myVar}\" <br />"; // Continua sendo 1000 $test->myVar = 2000; echo "Atributo público pode ser manipulado diretamente \"{$test->myVar}\" <br />"; // 2000 echo "<hr />"; echo "Valor inicial do atributo myVarB \"{$test->verMyVar()}\" <br />"; // 1000 $test->alterarMyVar(); echo "Valor do atributo myVarB depois de alterado \"{$test->verMyVar()}\" <br />"; // 20000 //$test->myVarB = 2000; /* ERRO Não se pode acessar atributo protegido */ class classeTeste { public $myVar = 1000; // Isso aqui é um atributo (público) private $myVarB = 1000; public function alterar_myVar() { $myVar = 20000; // Isso aqui é uma variável e não o atributo } /* * Nome de métodos não devem conter _ "underline" só letras minusculas e maiúsculas * Isso não é regra e sim boa prática */ public function alterarMyVar() { $this->myVarB = 20000; } public function verMyVar() { return ($this->myVarB); } }
  6. Omar~

    Cadastro de usuário + validação

    É muito simples, eu seu formulário de login, você deve ter um campo input para nome de login e senha (eu sempre uso só e-mail e senha), enfim não importa. A questão é ter um campo ao qual poderemos localizar os dados do usuário no banco, pois nesse caso a senha não serve para localizar e sim para autenticar. Digamos então que o usuário digitou seu e-mail e sua senha, basta fazer uma busca no banco de dados por aquele e-mail, se existir podemos armazenar a senha do usuário em uma $var e fazer a autenticação: // Aqui estamos no contexto que o e-mail do usuário que está tentando logar existe if (password_verify($senha_digitada_pelo_usuario, $senha_criptograda_no_banco)) { // Podemos logar tanto o e-mail existe quanto a senha é do usuário } else { // a senha não confere de acordo com o SALT (Ou seja aqui ele errou a senha) } Só para completar o coluna na tabela que vai armazenar a senha deve ser VARCHAR de pelo menos 255 caracteres, ou pode se um TEXT.
  7. Omar~

    Cadastro de usuário + validação

    Hora?? Para que tanta "moda"?! Se a intenção é cadastrar e já logar, basta que ao completar o registro inicie os índices de session que forem cabíveis ao usuário logado, então redirecione para a página inicial por exemplo. Uns detalhes: Nisso aqui para começar Você tem um input name "usuario" blz não é?! Mas por causa do ofuscador @ que colocou alí, um malandro pode manipular o html removendo-o ou modificando-o, o PHP irá aceitar mesmo sendo inválido, ou seja a PDO vai inserir um valor nulo. Outra coisa não confie na função strip_tags ela pode ser facilmente burlada, use um filter_var para cada valor pois isso sim é seguro. Outra me parece que você deve ter um input que define o nível de acesso, isso não é seguro, algo assim só pode ser manipulado no back-end. Veja um exemplo de otimização que fiz:
  8. Omar~

    validar cadastro por email

    Eu sempre opto em ter uma tabela de confirmação outra de cadastro. Quando o usuário faz seu cadastro, armazeno todos os dados que ele inseriu na tabela de confirmação, mas também adiciono um código randômico em uma coluna, esse que por sua vez passo como link ao e-mail da pessoa exemplo: https://siteurl/confirmar_cadastro?chave=Hj1e5s1kauk4654KJa1mn2sa1lss423712146 Então ao clicar em seu e-mail o usuário vai para a página de confirmação informando sua chave de ativação, ao qual faço a leitura da tabela, se a chave existe, pego todos os dados da dele inserido anteriormente e armazeno na tabela de cadastro, logo após então apago o registro da tabela de confirmação.
  9. Omar~

    [ Resolvido ] Falha ao retornar dados com PDO

    @Matheus B. Siqueira tente esse script meu: https://github.com/Spell-Master/sm-web/tree/master/javascript/FileTransfer Basta informar local, nome do arquivo com sua extensão assim como eu transcrevi no exemplo: No caso fora do laço de repetição do while if (file_exists($local_arquivo)) { ?> <script> file = new FileTransfer(); file.download('<?= $local_arquivo ?>', true); </script> <?php }
  10. Isso é uma API já inclusa no javascript. https://developer.mozilla.org/en-US/docs/Web/API/Clipboard Obs.: Requer protocolo https para funcionar
  11. Omar~

    Java Script - DOM

    Han?! Como assim está mostrando o alerta sendo que temos o erro aqui: getElementByName Essa função não existe, a não ser que esteja usando algum tipo de biblioteca que subtrai essa função. Enfim que seja, para podermos chegar a algum elemento temos que localizar-lo, nesse caso o input pode receber por exemplo um atributo name/id/class/data etc... ou mesmo chegar até ele através de sua tag. <input type="number" name="nome_do_input" onclick="teste()"> <script> function teste() { //var number = document.getElementByName('input', 'number').values; // Errado não existe "getElementByName" / não existe "values" //alert('seu numero', +number); // Errado você não pode concatenar e somar um valor inexistente var number = document.getElementsByName('nome_do_input')[0].value; // Ou var number = document.getElementsByTagName('input')[0].value; console.log('seu numero ' + number); // Ou console.log('seu numero %s', number); } </script>
  12. Omar~

    problema com return (array em arquivo) para array

    Tentou usar o https://www.php.net/manual/pt_BR/function.array-merge.php ?
  13. Omar~

    Javascript - Carregar variável para efetuar soma

    Tipo isso? var unitario = document.getElementById('input_a').value, devolver = document.getElementById('input_b').value, total = document.getElementById('input_c'), calcular; if (unitario && devolver) { calcular = parseFloat(unitario) * parseFloat(devolver); } total.value = calcular;
  14. Não seria mais simples não depender de um banco de dados? Dar uma olhada nisso: https://github.com/robertocr/cidades-estados-js
  15. Omar~

    Como faço UL LI responsivo?

    Simples use float / inline-block / flex em cada item <li>. Quando não houver espaço para caber o elemento ao lado ele quebra para baixo. Defina uma largura por padrão se for necessário, e se também for necessário você pode está alterando com @media essas larguras conforme a resolução. Exemplo: <ul class="list-none"> <li class="line-block box-x-250 bg-red">Item</li> <li class="line-block box-x-250 bg-green">Item</li> <li class="line-block box-x-250 bg-blue">Item</li> </ul> Usos: list-none line-block
  16. Omar~

    Paginação de resultados como implementar?

    Vamos lá, você especificar o LIMIT que define quantos resultados por página e o OFFSET que será a partir de qual índice os resultados devem ser mostrados. Mais detalhes leia: https://www.mysqltutorial.org/mysql-limit.aspx Ou seja se você passa o limite de 10 o OFFSET inicial será 1. Na página deve existir um link que informe a aplicação que o usuário mudou de página avançando ou retrocedendo. Exemplo: <a href="./pagina=2">Página 2</a> Ou seja terei um $_GET['pagina'] com o valor 2 então agora o offset passa a ser 10 mostrando resultados a partir do décimo. Agora uma dica, se sua paginação não constar com inúmeros resultados você pode fazer tudo pelo javascript, o que é mais "rápido de ser processado" (depende da quantidade) Um exemplo está nesse script que fiz justamente para usar em paginação cujo os resultados fiquem em torno de 100, mais que isso ou já com isso a página começará apresentar lentidão de carregamento (isso dependendo de como é estruturado seu HTML e como você usa scripts client-side). https://github.com/Spell-Master/sm-web/tree/master/javascript/Paginator Enfim com isso você vai fazer usa leitura do DB normalmente assim como está aí, vai fazer o loop como você mesmo fez aí, e só irá aplicar o script.
  17. Omar~

    Como trocar o filtro do select mysql apos um click no checkbox

    @Jefferson andre Pelo que eu entendi você está trazendo ambos os resultados em uma query: E ao selecionar um check box o menu suspendo "<select>" deve ser alterado conforme estiver marcado ou não. Em resumo atualizar o seletor...... É meu caro muitos também não fazem a mínima ideia como fazer isso também. Principalmente para quem não sabe nada de javascript. Então no caso para isso ser viável uma vez que você trás os dados em array do php e tem que processar-los no javascript, mais específico nessa situação podemos nos usar o JSON. Pois bem simulei aqui um array de resultados do banco de dados: A primeira coisa é codificar esse array em json para podemos lançar-lo no javascript: <?php $arr = []; foreach ($db as $value) { $arr[] = $value; } $json = json_encode($arr); E assim normalmente podemos ter o html inicial aquele que será composto no carregamento da página. <input type="checkbox" id="filtro" /> <select id="seletor"> <?php foreach ($db as $value) { if ($value['tipo_do_cadastro'] == '1') { // Ao carregar a página só terão usuários tipo 1 ?> <option value ="<?= $value['id'] ?>"><?= $value['razao']; ?> </option> <?php } } ?> </select> Como pode ver tenho um menu suspenso <select> que será modificado quando o "checkbox" é marcado ou não Agora entramos no Javascript que vai fazer a manipulação. Bom fiz o script no esquema de orientação a objeto por ser mais prático de informar dados entre as funções. Mas o segredo mesmo é varrer o array que vamos passar pelo php. Verificar a checagem do checkbox e se ele condiz com o valor 0 ou 1 de acordo com os dados do array. No mais é algo muito simples de se fazer: Então está aqui o javascript necessário, cabe você agora adaptar ou modificar conforme for necessário aí: E para executar criamos o objeto da classe JS e adicionamos um evento ao checkbox chamando o método da classe: <script> var objeto = new myFuntion('<?= $json ?>'); // $json o array do php document.getElementById('filtro').addEventListener('change', objeto.filtro, false); </script> Por fim vale a dica se a coluna que trás o tipo de usuário 1?0 for INTEGER, converta esse valor para STRING pois o numero zero em um condição javascript quer dizer false, e não o número zero. Então por exemplo isso: $this.checkBox.checked && e.tipo_do_cadastro == 0 O objeto tem está marcado e evento tipo deve ser falso para a condição valer.
  18. Omar~

    $(this).val() versus this.value

    Isso depende do contexto que ISSO "this" se refere. Acredito que esteja usando jQuery Só por isso então você perde em performance, jquery nada mais que irá fazer N'coisas antes de acionar o javascript. Imagina a situação: Uma pessoa vai a uma rua onde sabe que mora tal pessoa, antes disso ele pergunta a dezenas de pessoas se aquela pessoa mora alí, se está em casa. Não seria mais rápido e fácil simplesmente tocar a campainha da casa? Por isso a questão do contexto, se this veio do escopo do javascript nativo ele é mais rápido, se this está na cápsula do jQuery é mais lento.
  19. Omar~

    Pesquisa simples para PHP e SQL

    Nossa!!! Já está mastigado isso aqui: https://www.w3schools.com/sql/sql_like.asp SELECT coluna_a_para_pesquisar, coluna_b_para_pesquisar FROM nome_da_sua_tabela WHERE coluna_a_para_pesquisar LIKE %O que pesquisar% OR coluna_b_para_pesquisar LIKE %O que pesquisar% Lembrando o operador LIKE faz uma varredura na(s) colunas que contenham por completo ou parcialmente o pattern da pesquisa
  20. Omar~

    Recuperar dados do banco e trazer para o formulário

    Pela serve-side o que fazemos nada mais é que consultar dados se existem fazemos as coisas acontecerem, lógica básica. Ou seja cada input envia uma informação com essa informação você apresenta/compila o html para o client com cada informação. if (isset(ALGUMA_COISA)) { // Faça algo se existir } O mesmo serve para o javascript, onde cada botão clicado executa uma coisa, com essa questão cada função irá habilitar/desabilitar ou criar/remover. <form method="POST" action="banco_de_dados/create.php" id="formulario"> <input type="text" name="blablabla" id="obter_isso" /> </form> <button onclick="pegarInfo();">Pegar informação do form sem submeter</button> <button onclick="salvarForm();">Submeter o formulário</button> <script> function pegarInfo() { var informacao = document.getElementById('obter_isso').value; // A função acionada foi pegar a informação // Então podemos habilitar ou desabilitar elementos no html if (informacao) { /* * Aqui executaria uma AJAX passando por exemplo um get para o arquivo * : 'diretorio/arquivo.php?info=' + informacao * Ou seja em arquivo.php teremos $_GET['info'] com o valor do input * para fazer a consulta no banco de dados */ } } function salvarForm() { document.getElementById('formulario').submit(); } </script>
  21. Omar~

    Recuperar dados do banco e trazer para o formulário

    Olha amigo você pode fazer de duas maneiras. 1 - Submeter o formulário no mesmo arquivo no caso: action="banco_de_dados/create.php" <<<< Esse aquivo de envio deve ser o mesmo em que está o form. Assim sendo ao pesquisar você irá consultar o valor do input que submeteu que no contexto é value="Pesquisar" Com essa informação você faz a consulta no banco e preenche os values que forem necessários de acordo com as informação. 2 - Usar um sincronização através de "asynchronous javascript and xml (AJAX)" onde cada botão de submeter executa uma determinada função. No caso então de pesquisar você estaria requisitando um arquivo e esse faria a consulta e o mesmo executaria um javascript acrescentando os values necessários aos inputs em questão. Acontece que esse método pode ser falho. Pensando nessa falha precária do AJAX entre outras coisas desenvolvi esse script para ter muita facilidade nesse tipo de operação: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest
  22. Omar~

    JavaScript "parseFloat" para exibir resultado... não quer funcionar

    https://pt.wikipedia.org/wiki/Linguagem_server-side https://pt.wikipedia.org/wiki/Linguagem_client-side A versão do PHP não tem nada haver com isso....
  23. <div id="resultado"></div> <input type="text" id="campo-a" /> <input type="text" id="campo-b" /> <select id="tipo"> <option value="">Selecione o tipo de calculo</option> <option value="subtracao">Subtração</option> <option value="adicao">Adição</option> <option value="multiplicacao">Multiplicação</option> <option value="divicao">Divisão</option> </select> <button onclick="calcular()">Calcular</button> <script> var campoA = document.getElementById('campo-a'), campoB = document.getElementById('campo-b'), resultado = document.getElementById('resultado'), tipo = document.getElementById('tipo'); function calcular() { var valorA = campoA.value, valorB = campoB.value, calculo = tipo.value, calcularA = parseFloat(valorA), calcularB = parseFloat(valorB); if (isNaN(valorA) || isNaN(valorB)) { resultado.innerText = 'Espera aí, isso aqui é uma calculadora! Use somente números'; } switch (calculo) { case 'subtracao': resultado.innerText = calcularA - calcularB; break; case 'adicao': resultado.innerText = calcularA + calcularB; break; case 'multiplicacao': resultado.innerText = calcularA * calcularB; break; case 'divicao': resultado.innerText = calcularA / calcularB; break; default : resultado.innerText = 'Ei!! Selecione que tipo de calculo vai fazer'; break; } } </script> Não testei, apenas escrevi aqui, mas funciona.
  24. var count = document.getElementById("lineCount").innerHTML; /* Mas esse elemento "#lineCount" deve existir no DOM */ Lembrando que noComments.split('\n').length; é um integer com a quantidade de itens referentes a quebra de linha de uma instância. Hahah... congratulations é um prototype do objeto BlocklyDialogs
  25. Omar~

    Remover texto com Javascript

    ?? Viajei em pensar no que isso seria útil??? Mas enfim: <div id="social" class="social section"> <li><a href='http://instagram.com'>Facebook</a></li> <li><a href='http://facebook.com'>Facebook</a></li> </div> <script> var social = document.getElementById('social'); var links = social.querySelectorAll('a'); links.forEach(function (e) { e.innerText = null; }); </script>
×

Informação importante

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