Jump to content

Omar~

Members
  • Content count

    979
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Omar~


  1. Eu particularmente acho desnecessário uma ferramenta para tal finalidade.

    Durante o desenvolvimento costumo fazer algo como isso:

    <div id="resolucao" style="position: fixed; bottom: 0; left: 10px; padding: 10px 20px; background: black; color: white;"></div>
    <script>
      var res = document.getElementById('resolucao');
      res.innerText = window.innerWidth;
      window.onresize = function () {
        res.innerText = window.innerWidth;
      };
    </script>

    Assim sendo, bastando arrastar o tamanho da janela do browser que a qualquer momento eu terei as dimensões da resolução.

    Depois da aplicação pronta é só apagar isso e entregar para o cliente.

     

    3 horas atrás, Biel. disse:

    não uso o recurso que tem no firefox, porque é absurdamente lento

    Não mesmo, essa ferramenta do firefox é muito eficaz o problema deve ser seu layout ou mesmo sua aplicação que usa recursos desnecessários e desorientados por isso a lentidão.


  2. Como eu disse:

    - De onde vem a informação da sub-categoria e como isso é obtido?

    Pois bem, independente dessa minha pergunta, qualquer dados deve está presente o javascript para que quando alterar o valor de categoria temos algo para preencher as subcategorias.

    Optei por um JSON com os dados para subcategoria, onde apenas tenho um índice para saber que sub-categoria pertence a cada categoria.

    Usei o PHP, para criar o json, mas a abordagem fica só com o javascript mesmo.

    No mais o exemplo eu escrevi em cada linha o que é feito (espero que seja algo como isso)

    Spoiler
    
    <?php
    $categorias = [
        ['id' => 1, 'nome' => 'Categoria 1'],
        ['id' => 2, 'nome' => 'Categoria 2'],
        ['id' => 3, 'nome' => 'Categoria 3'],
        ['id' => 4, 'nome' => 'Categoria 4']
    ];
    $subcategoria = [
        ['id' => 1, 'relacao' => 1, 'nome' => 'Sub-Categoria 1'],
        ['id' => 2, 'relacao' => 1, 'nome' => 'Sub-Categoria 2'],
        ['id' => 3, 'relacao' => 2, 'nome' => 'Sub-Categoria 3'],
        ['id' => 4, 'relacao' => 2, 'nome' => 'Sub-Categoria 4'],
        ['id' => 5, 'relacao' => 3, 'nome' => 'Sub-Categoria 5'],
        ['id' => 6, 'relacao' => 3, 'nome' => 'Sub-Categoria 6'],
        ['id' => 7, 'relacao' => 4, 'nome' => 'Sub-Categoria 7'],
        ['id' => 8, 'relacao' => 4, 'nome' => 'Sub-Categoria 8'],
        ['id' => 9, 'relacao' => 4, 'nome' => 'Sub-Categoria 9'],
        ['id' => 10, 'relacao' => 4, 'nome' => 'Sub-Categoria 10']
    ];
    $dados = json_encode($subcategoria);
    ?>
    
    <select name="categoria" id="categoria">
        <option value="">Selecione a Categoria...</option>
        <?php
        foreach ($categorias as $value) {
            echo ("<option value=\"{$value['id']}\">{$value['nome']}</option>");
        }
        ?>
    </select>
    
    <select name="subcategoria" id="subcategoria"></select>
    
    <script>
        var valoresEmJson = JSON.parse('<?= $dados ?>'), // Então aqui eu tenho o JSON com todas sub-categorias
            categoria = document.getElementById('categoria'),
            subcategoria = document.getElementById('subcategoria');
    
        function subValor(e) {
            var valor = e.target.value; // Obtenho o valor da "categoria"
            if (valor) { // Vejo se "categoria" tem mesmo algum valor
                removeOpcao(); // Primeiro limpar todas opções inseridas
                valoresEmJson.forEach(function (indice) { // Pecorro o JSON
                    if (indice.relacao == valor) { // Quando a relação dos índices em "subcategoria" for igual ao valor selecionado
                        // Mando criar novas opções em "subcategoria"
                        // Enviando como parâmetro o id e o nome, no índice do JSON
                        criarOpcao(indice.id, indice.nome);
                    }
                });
            }
        }
    
        function removeOpcao() { // Apenas limpa as opções do seletor "subcategoria"
            while (subcategoria.childNodes.length) {
                subcategoria.removeChild(subcategoria.firstChild);
            }
        }
    
        function criarOpcao(id, nome) {
            var novoOption = document.createElement('option'); // Crio a tag <option>
            novoOption.value = id; // Seu valor é o "id" do índice obtido por parâmetro
            novoOption.innerText = nome; // O texto é o nome do índice obtido por parâmetro
            subcategoria.appendChild(novoOption); // Anexo a opção dentro do seletor subcategoria
        }
    
        categoria.addEventListener('change', subValor, false); // Quando o seletor categoria é alterado
    
        if (categoria.selectedIndex) { // Se algum valor no seletor "categoria" estiver como a propriedade "selected"
            var evento = new Event('change'); // Crio o evento "change"
            categoria.dispatchEvent(evento); // Despacho o evento sem mesmo o usuário alterar o seletor
        }
    </script>

     

    Note que a categoria 4 possui 4 sub categorias e as demais somente 2, pois o que interessa é saber a relação, pois é isso de determina a qual categoria um sub pertence.


  3. Deixa eu ver se entendi....

    O seletor "categoria"  tem lá suas opções, mas o seletor "subcategoria" não.

    Ao alterar "categoria" obtemos seu value, então "subcategoria" terá as opções correspondentes ao atributo "data"

    Resumo: "seletor" no valor for 1, as opções  de "subcategoria" só vão existir as que forem data-option="1"

    É isso?

     

    Se for, de onde e como vão ser as opções do segundo seletor?

    Porque essas opções devem ser criadas e injetadas dentro do segundo seletor, mas criar-las com qual informação?


  4.  

    Use uma variável global para identificar o audio em execução.

    Toda vez que um novo audio é tocado pegue a informação da var global e dar pause no que estiver tocando e play na atual.

    Vejamos um exemplo:

    Spoiler
    
    <button class="tocar_audio" data-alvo="exemplo_a">Tocar Audio A</button>
    <button class="tocar_audio" data-alvo="exemplo_b">Tocar Audio B</button>
    
    <audio id="exemplo_a">
        <source src="audio_a.mp3" type="audio/mpeg">
    </audio>
    
    <audio id="exemplo_b">
        <source src="audio_b.mp3" type="audio/mpeg">
    </audio>
    
    <script>
        var variavelGlobal = null;
    
        document.querySelectorAll('.tocar_audio').forEach(function (e) {
            e.addEventListener('click', tocarAudio, false);
        });
    
        function tocarAudio(e) {
            var alvo = (e.target).dataset.alvo;
            if (variavelGlobal) {
                document.getElementById(variavelGlobal).pause();
            }
            document.getElementById(alvo).play();
            variavelGlobal = alvo;
        }
    </script>

     

     

    Fica meio esquisito pois se a pessoa clicar novamente no audio anterior ela vai continuar ouvindo de onde parou pois o HTML5 não tem recurso para parar uma mídia.

    Porém isso é possível fazer criando a tag <audio> dinamicamente, e quando tocar outro áudio é só apagar o html a tag anterior assim você "mata" a execução substituindo por outro.


  5. Acho que saquei a situação.

    Você não possui a lista de bairros e será cadastrado por um usuário ou por você periodicamente.

     

    Primeiramente a tabela de bairros deve receber uma nova coluna também para identificar o estado

    Pois a consulta deve ser estado + cidade + bairro. Pois existem milhares de bairros com nome repetidos em vários estados.

     

    E como puxar o bairro?

    O primeiro seletor vai carregar o estado onde traremos o ID's dos estados.

    SELECT * FROM estados

    Compomos o html com as informações

    <form method="POST">
      <select name="carregar_cidades">
        <option value="">Selecionar Estado...</option>
        <?php foreach($resultado_do_banco as $value) { ?>
            <option value="<?= $value['id_estado'] ?>"><?= $value['estado'] ?></option>
        <?php } ?>
      </select>
    </form>

    Ao alterar o valor de carregar_cidades, pegamos o ID do estado e buscamos as cidades com essa informação:

    SELECT * FROM cidades WHERE id_estado = '{$id_do_estado}'

    Compomos o html do novo seletor com as informações:

    <form method="POST">
      <input type="hidden" name="id_estado" value="<?= $id_do_estado ?>" />
      <select name="carregar_bairros">
        <option value="">Selecionar Cidades...</option>
        <?php foreach($resultado_do_banco as $value) { ?>
            <option value="<?= $value['id_cidade'] ?>"><?= $value['cidade'] ?></option>
        <?php } ?>
      </select>
    </form>

    Ao alterar carregar_bairros vamos buscar os bairros usando a informação do estado e da cidade

    SELECT * FROM bairros WHERE id_cidade = '{$id_da_cidade}' AND id_estado = '{$id_do_estado}'
    -- lebrando que a coluna "id_estado" é a coluna nova que identifica o estado

     

    Bom, a estrutura HTML já deu para perceber como deve ser feita não é?

     

    Uma questão boa de se abordar aqui é:

    Se a pessoa carregar a query de bairros e não retornar nenhum valor é porque não tem bairro algum cadastrado para aquela cidade.

    Então seria interessante definir a estrutura de um input text para que ela possa manualmente escrever seu bairro.

    O mesmo valeria em criar um option no seletor caso haja resultado, mas não o bairro que ela procura.

    Ao selecionar essa opção uma caixa de texto é inserida no html para ela manualmente escrever o bairro.

     


  6. Atá, entendi...

    Bom o que vai fazer é tentativa e erro.

    Vamos usar um divisor pai e vários filhos dentro desse pai.

    O divisor pai fica fixo na parte inferior da tela.

    Mais ou menos assim:

    <div class="pai">
      <div class="filho">1</div>
      <div class="filho">2</div>
      <!-- quantos filhos forem necessários -->
    </div>

    No pai damos as seguintes propriedades de CSS:

    .pai {
      z-index: 1;
      position: fixed;
      width: 100%; 
      bottom: 0;
      left: 0;
      text-align: center
    }

     

    Os filhos é que fazemos a coisa acontecer, use uma calculadora para poder calcular sua largura dividindo 100 pela quantidade de filhos.

    .filho {
      width: 12.5%; /* 12% já basta? */
      display: inline-block; /* Alinhando um ao lado do outro */
      padding: 1rem /* "1rem = 16px" quanto de espaçamento interno ? */
    }

    Por isso tentativa e erro, pois sua largura deve ser o suficiente para abrigar os demais componentes internos ao filho e ainda permiti-los que caibam em uma linha do divisor pai.

     

    Agora a questão:

    Em 21/09/2020 at 10:52, lezão disse:

    no celular gostaria que a div desses quadrados aparecessem  de 3 em 3 itens

    Use o media-query para redefinir a largura de cada filho de acordo com a resolução da tela.

    Nesse caso aqui quando a resolução máxima não ultrapassar 600 pixels digo que a largura do filho passa a ser outra.

    @media (max-width: 600px) {
      .filho {
        width: 6.25rem; /* 6.25rem = 100px */
      }
    }

     


  7. O problema dos bairro é que temos mais de 5k de cidades no território brasileiro. Quantos bairros em cada cidade?

    É facilmente chegamos a um array com mais de 1/2/3/4...... milhão de índices que teria de ser feito na mão, fora o trabalho de consulta individual de cada.

     

    Confesso que faria facilmente isso, mas levaria pelo menos uns 2 meses para catalogar cada bairro em cada cidade e preparar o script para ficar operacional.


  8.  

    1 hora atrás, lezão disse:

    como fazer essas imagens ficar a frente do slideshow

    Que imagens?

     

    1 hora atrás, lezão disse:

    qnd responsivo aparecer de 3 em 3

    Qual resolução?

    Quando que aparece em 3 em 3?

    O que aparece em 3 em 3?

     

    Faltou você apresentar um código, explicar de forma coesa seu problema e se possível uma imagem demostrando o resultado final.

     

    Tente o "z-index" pois isso define a importância  de um elemento no documento.


  9. Olha esse termo de selecionar um estado e já carregar cidades nem precisa de um apelo pelo servidor pode ser feito através somente do javascript.

    Existe esse maravilhoso script para essa finalidade https://github.com/robertocr/cidades-estados-js

     

    Agora o caso do bairro e tal até que daria para fazer um upgrade, mas seria um trabalho minucioso e teria que consultar o senso pra ter uma relação dos bairros de cada cidade. Ou seja daria trabalho pra caramba....


  10. De onde vem e quais os requisitos para uso do horário de término?

     

    Deduzo que seja algo dinâmico sem intervenção humana e só por display mesmo, então nesse caso veja:

    $resultado_do_banco = date('H:i:s'); // Isso pode ser o horário obtido através da query
    $termino = date('H:i:s', strtotime("{$resultado_do_banco} +1 hour")); // Obtem a hora atual e almenta 1 hora a mais em relação com o horário vindo da query.
    
    var_dump($termino);

     


  11. Primeiro: Faça correções na estrutura do HTML "está com erro", de cara vejo isso, mas pode haver mais outros tipos se levar isso em consideração.

    23 horas atrás, Leonel57 disse:

    <nav class = menulateral>

     

    Segundo: Cuidado com definições levianas no CSS

    23 horas atrás, Leonel57 disse:

    p { text-align:center; }

     

    Enfim, se eu entendi você que as imagens uma ao lado da outra certo?

    Nesse caso esqueça das imagens olhe para a estrutura HTML como ela é! Blocos dentro de blocos etc, esse é o segredo de fazer qualquer layout com facilidade...

    Citar

    Então devo ter um bloco pai que abriga blocos filhos alinhados uns ao lado do outro.

    Assim sendo posso adicionar o que quiser dentro dos filhos que esses herdarão a arquitetura de seus parentes.

     

    <style>
        * {margin: 0; padding: 0; box-sizing: border-box}
    
        .lugar_das_images {
            text-align: center
        }
        .imagem_aqui {
            display: inline-block
        }
        .imagem_aqui > img {
            width: 100%;
            max-height: 250px /* Qual é altura máxima que a imagem pode ter? Isso influenciará em sua largura */
        }
    </style>
    
    <div class="lugar_das_images">
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
        <div class="imagem_aqui">
            <img src="????????.???" alt="Exemplo" />
            <p>Imagem em linha</p>
        </div>
    </div>

     


  12. Fazendo uma leitura qualquer na tal tabela.

    Se der erro é porque a tabela não existe.

    Com mysqli não sei dizer como proceder com o erro porque não uso, entretanto com PDO você tem o PDOException para tratamento de erros.


  13. Você pode está usando só HTML e CSS para algo tão simples

    Veja:

    Spoiler
    
    <style>
        /* Só por questão estética do exemplo */
        input[type=text]{padding:.75rem;width: 49%}
        .botao_selecionar{padding:.5rem 1rem;color:#fff;background-color:#ccc;cursor:pointer}
        
        /* Esconde os inputs e os divisores */
        #fisica, #juridica,
        #dados-fisica, #dados-juridica {
            display: none
        }
        /* Quando marcado algum input mostra o seu correpondente */
        #fisica:checked ~ #dados-fisica,
        #juridica:checked ~ #dados-juridica {
            display: block
        }
    </style>
    
    <input type="radio" name="tipo" value="1" id="fisica" checked="" />
    <input type="radio" name="tipo" value="2" id="juridica" />
    
    <p>Cadastrar que tipo?</p>
    <label for="fisica" class="botao_selecionar">Pessoa Física</label> |
    <label for="juridica" class="botao_selecionar">Pessoa Jurídica</label>
    
    <hr />
    
    <div id="dados-fisica">
        <p>Aqui você coloca todos inputs para pessoa física</p>
        <input type="text" name="exemplo_a" placeholder="algum dado para pesso física"/>
        <input type="text" name="exemplo_a_b" placeholder="algum dado para pesso física"/>
    </div>
    
    <div id="dados-juridica">
        <p>Aqui você coloca todos inputs para pessoa juridica</p>
        <input type="text" name="exemplo_b" placeholder="algum dado para pesso jurídica"/>
        <input type="text" name="exemplo_b_b" placeholder="algum dado para pesso jurídica"/>
    </div>

     

     

    Agora ao caso do php...

    Perceba que a tag <input> radio possui o name['tipo'] então esse dado deve se verificado quando o formulário for submetido.

    Quando o tipo for 1 você só irá processar dados de post contido na tag <div> que foi mostrada ignorando os dados de input da outra, fazendo o mesmo mais ao inverso quando o tipo for 2.

     

    Pois quando o formulário for submetido todos os dados serão enviados, mas usando esse truque você pode saber qual foi o modelo da postagem.


  14. ...No caso quando vazio fazer o update limpando a coluna na tabela?

    Ou ao está vazio não fazer update desse campo? Nesse caso:

    <form method="POST" action="">
        <input type="text" name="alguma_coisa_a" placeholder="alguma coisa a" />
        <input type="text" name="alguma_coisa_b" placeholder="alguma coisa b" />
        <input type="text" name="alguma_coisa_c" placeholder="alguma coisa c" />
        <input type="text" name="alguma_coisa_d" placeholder="alguma coisa d" />
        <input type="text" name="alguma_coisa_e" placeholder="alguma coisa e" />
        <input type="hidden" name="alguma_coisa_f" value="valor oculto" />
        <input type="checkbox" name="alguma_coisa_g" value="1" checked="" />
        <input type="checkbox" name="alguma_coisa_h" />
        <button>Executar Exemplo</button>
    </form>
    
    <?php
    $post = filter_input_array(INPUT_POST, FILTER_DEFAULT);
    if ($post) {
        $naoVazios = [];
        foreach ($post as $key => $value) {
            if (!empty($value) && $value != '0') {
                $naoVazios[$key] = $value;
            }
        }
        if (count($naoVazios)) {
            echo ("<pre>");
            var_dump($naoVazios);
            echo ("</pre>");
        }
        
        /* Não sei se se vai funfar, pois não uso a "jossa do sqli" a uns 10 anos ou mais */
        // UPDATE clientes SET " . implode(', ', $naoVazios). " WHERE id_cliente = " .$_POST['id'];
    }

     

    Atenção ao valor de $_POST['id'] se esse valor for -1 ou um type_script seu banco de dados corre sérios riscos.

    De qualquer forma todos os dados devem ser analisados, checados,  filtrados, limpos, re-checados só então podem ser inseridos em uma query...


  15. Uma forma seria através de uma variável global.

    Cada botão tem um valor que é comparado com a global quando um botão de valor maior que a VAR é clicado avisa que tem que clicar no anterior primeiro, se esse foi clicado a VAR global passa ter o valor do botão exemplo:

    Spoiler
    
    Obs.::::! Não testei apenas escrevi aqui, mas funciona a lógica
    
    <button onclick="checagemGlobal(1)">Click para prosseguir A</button>
    <button onclick="checagemGlobal(2)">Click para prosseguir B</button>
    <button onclick="checagemGlobal(3)">Finalizar</button>
    <div id="avisar"></div>
    
    <script>
      var variavelGlobal = 0;
      var resposta = document.getElementById('avisar');
    
      function checagemGlobal(entrada) {
        if (entrada === 2 && variavelGlobal < 1) {
          resposta.innerHTML = '<p>Você tem que clicar no botão A primeiro</p>';
        } else if (entrada === 3 && variavelGlobal < 2) {
          resposta.innerHTML = '<p>Você tem que clicar no botão B primeiro</p>';
        } else {
          switch (entrada) {
            case 1:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando o botão A for clicado');
              break;
            case 2:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando o botão B for clicado');
              break;
            case 3:
              resposta.innerHTML = null;
              console.log('Fazer alguma coisa quando Finalizar for clicado');
              break;
          }
          variavelGlobal = entrada;
        }
      }
    </script>

     

     

     

    Você pode também está criando os botões seguintes assim que uma tarefa é concluída, para isso você vai precisar de:

     


  16. Mas @wanderval ele pode usar o atributo "data" e obter quantos dados quiser....

    Só que como você mesmo diz (é mais lento para processar):

    4 horas atrás, wanderval disse:

    Isso que você quer tem um preço

     

    <div
        id="algum"
        data-a="alguma_coisa_1"
        data-b="alguma_coisa_2"
        data-c="alguma_coisa_3"
        data-d="alguma_coisa_4">
      ... e por aí vai...
    </div>
    <script>
        console.log(document.getElementById('algum').dataset);
    </script>

     


  17. Isso não é possível só dessa forma.

    Uma vez acessado um endereço o servidor irá enviar a estrutura HTML do documento para o browser da pessoa.

    O browser de pessoa "X" uma vez preenchido um input ficará salvo no diretório temporário de arquivos dessa pessoa. Portanto pessoa "Y" não tem acesso a isso porque não está na máquina dele.

     

    No entanto sim, é possível roubar essas informações, seja dados de input, session ou cookies etc.., mas isso é questão de 99% vulnerabilidade por parte da pessoa e 1% da aplicação ao qual pode-se prever através de segurança do servidor, evitando XSS e trabalhando com criptografia de dados. Assim sendo se esses dados vazam é por insegurança da máquina do usuário.

     

    Tenha em mente que qualquer HTML, CSS e JavaScript é entregue ao(s) usuário(s) e não dados inter-serve ou back-end.


    • CP_ADMIN > Customization > Themes > Edit HTML and CSS > Templates
    • Localize o conteúdo no editor dos elementos correspondentes.
    • Na tag <li> onde fica a imagem adicione um classificador qualquer.

     

    • CP_ADMIN > Customization > Themes > Edit HTML and CSS > Css
    • Crie o classificador adicionado anteriormente com as dimensões que você quer para a tag <li> onde fica a imagem

     

    Entretanto desconfio que esteja com uma versão "pirata" do IPB, pois se pagou pelo software você terá todo e qualquer suporte do mesmo diretamente pela invision community.

     


  18. Você pode está fazendo a consulta no carregamento da página, então pegar todos índices de e-mail cadastrados por exemplo codificar em JSON e criar um array no javascript com esses índices, então ao submeter o form o valor do input será comparado com cada valor do array. Se existir o script retorna falso não submetendo o form.

    Exemplo:

    Spoiler
    
    <?php
    $resultado_do_banco = [
        ['mail' => 'aaa@aaa.com'],
        ['mail' => 'bbb@bbb.com'],
        ['mail' => 'ccc@ccc.com']
    ];
    $json = json_encode($resultado_do_banco);
    ?>
    
    <div id="resultado"></div>
    <form method="POST" action="" onsubmit="return salvarForm();">
        <input
            type="text"
            name="mail"
            id="identificador"
            placeholder="Digite um endereço de e-mail"
            pattern="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{3})"
            required=""
        />
    
        <button>Submeter formulário</button>
    </form>
    
    <script>
        var arr = JSON.parse('<?= $json ?>');
        var resultado = document.getElementById('resultado');
        var input = document.getElementById('identificador');
    
        function salvarForm() {
            var valor = (window.input).value.trim();
            var retorno = null;
            if (!valor) {
                resultado.innerText = 'Digite o e-mail';
                retorno = true;
            } else {
                window.arr.forEach(function (e) {
                    if (e.mail == valor) {
                        resultado.innerText = 'O endereço de e-mail "' + valor + '" existe no array';
                        retorno = true;
                    }
                });
            }
            
            if (retorno) {
                return (false);
            }
        }
    </script>

     

     

    Porém também deverá fazer essa verificação por back-end também pós submetido, porque qualquer um pode acessar o javascript e apagar ou editar o array de dados.

     

    Uma alternativa também é submeter o form por ajax, então você faz a comparação do valor com o resultado do banco sem redirecionar a página.

    Veja isso:

    https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest

     

     

    Enfim, independente você sempre terá que comparar os valores antes de registrar novos dados no banco.

     


  19. Para tal afim você vai depender do "Asynchronous JavaScript and XML"

    Bom, você pode está usando esse script de desenvolvimento meu mesmo:

    https://github.com/Spell-Master/sm-web/tree/master/min/AjaxRequest

     

    var objeto = new AjaxRequest();
    var alvo = "#ID de uma tag <div> ao qual será exibido";
    var carregar = "arquivo ou um endereço https://";
    
    // Metódos
    
    objeto.open(alvo, carregar);
    // ou
    objeto.send(alvo, carregar, false);
    // ou
    objeto.pop(alvo, carregar, false);

     

    A documentação sobre o uso e exemplo de cada método pode ser vista no arquivo de produção:

    https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest


  20. Se quer algo automatizado sem intervenção humana você precisará de executar um cron job no servidor que automaticamente executará a query de tempos em tempos.

    Acho desnecessário e complexo para coisas simples como essa que você propõe.

     

    Então vou fixar em algo mais simples como dito antes.

    Bem com a coluna para registro de data uma coluna par definir "ativo" torna-se obsoleta pois só com a "data" dar para fazer esse gerenciamento, mas..... mas então usar uma coluna "ativo".

     

    Quando o usuário executa o login e senha login/mail estão corretos, antes de fato as sessões/cookies serem criados você deve está armazenando os dados do login em um array ou em variáveis certo?

    Então dentro dessa condição:

    if (strtotime(DATA_NA_COLUNA) < strtotime(date('Y-m-d'))) {
        // A data expirou
    }

    Passamos outra condição

    if (strtotime(DATA_NA_COLUNA) < strtotime(date('Y-m-d'))) {
        // A data expirou
        if ($valor_da_coluna_ativo_do_usuario == '1') {
            // Aqui você faz o "updade" da tabela no índice desse usuário que tentou logar e já expirou sua data
        }
    } else {
      // Iniciar session's cookie's (LOGAR)
    }

    Então ao ele logar se da data dele expirou verifica-se o valor da coluna "ativo" se for 1, uma query será executada atualizando os dados do usuário pois seu acesso expirou, mas o valor da sua coluna "ativo" ainda está em 1.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.