Jump to content

Omar~

Members
  • Content count

    1026
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Omar~

    PHP - Orientação com Mensagem de Sucesso

    Acontece que seu caso não tem nada haver com PHP e sim com HTML/Javascript que se trata da parte do usuário e não do servidor. O que vai ter que fazer é: Ao submeter o formulário que terá de ser por AJAX algum elemento surge cobrindo a página assim sendo qualquer click será nesse elemento. Esse ou outro elemento mostra alguma indicação enquanto os dados não são enviados. O que você procura é feito nesse exemplo: https://github.com/Spell-Master/sm-web/tree/master/exemplos/modal%26ajax
  2. Omar~

    CSS @font-face

    /* font-family: Algum nome para representar-la no CSS. É aconselhavel que use o nome mesmo da fonte src: Local de armazenamento do arquivo. É aconselhavel que use somente arquivos ".ttf" */ @font-face {font-family: 'NOME_REPRESENTATIVO'; src: url('../fonts/ARQUIVO_DE_FONTE.ttf')} .fonte_personalizada { font-family: 'NOME_REPRESENTATIVO' /* tudo que que tiver esse classificador será com a fonte anexada */ } <h1 class="fonte_personalizada">Olá mundo</h1>
  3. Omar~

    Tratar caracteres acentuados

    Acho que a questão aqui possa ser: Não reinventar a roda.... var string = '%C3%A0,%C3%A1'; console.log( decodeURI(string) ); var outraString = 'Á é Í ó Ú'; console.log( encodeURI(outraString) );
  4. Omar~

    Comparação de horarios

    Acontece uma coisa o PHP só pode entregar dados já prontos para o usuário. Ou seja depois que ele renderizou o conteúdo ele não interage com o usuário (aliás nunca o php interage com o usuário). Nesse entendimento será necessário que o usuário recarregue o conteúdo para que o php possa processar novos dados e renderizar para o usuário. Assim sendo pode fazer assim no PHP <?php $horaAtual = "13:30:00"; // use date('H:m:s') $horaAnterior = "13:19:00"; // Não sei como vai obter isso... $minutoAtual = (int) explode(':', $horaAtual)[1]; $minutoAnterior = (int) explode(':', $horaAnterior)[1]; $meioTempo = ($minutoAtual - $minutoAnterior); if ($meioTempo <= 10) { // fica na página } else { // redireciona } Lembrando que pode também simplificar usando um COOKIE de 10 minutos de duração. Se você quiser que o redirecionamento aconteça de forma altomática, você tem que usar um script que funcione no software do usuário. setTimeout(function () { window.location.href = "https://endereco_qualquer"; }, 600000);
  5. Omar~

    Paginação com filtro

    No básico você terá que levar a informação da busca por GET teste.php <input type="text" name="pesquisar" /> request_teste.php /* Se houver na url "pesquisar" executa ele caso não, use dados do post É extremamente crucial que faça um tratamento dessa var porque contantemente ela vai se usada na query */ $busca = (isset($_GET['pesquisar']) ? urldecode($_GET['pesquisar']): $_POST['pesquisar']); /* Se houver na url "pag" use, caso não, use 1 */ $offset = (isset($_GET['pag']) ? $_GET['pag'] : 1); $query = "SELECT * FROM tabela WHERE coluna LIKE %{$busca}% LIMIT 100 OFFSET {$offset}"; Então os links de paginação ficam <a href="principal.php?link=teste.php&pesquisar=<?= urlencode($busca) ?>&pag=2">Página 2</a> <a href="principal.php?link=teste.php&pesquisar=<?= urlencode($busca) ?>&pag=3">Página 3</a> etc... Ou seja nada mais é que ao recarregar a página por algum link a informação do input é mantida sendo constantemente enviada pelo protocolo GET. Requer muito cuidado pois isso pode ser um tiro no pé se não fazer o correto tratamento dos dados, além que softwares através de um hardware bem potente+conexão extremante alta pode derrubar sua aplicação através de centenas de acessos por segundo. Então uma outra alternativa é você fazer paginação sem trocar de página fazendo somente uma requisição. Para essa finalidade desenvolvi um script para paginação se interessar veja: Outra forma também é usando JSON e localstorage que nada mais é que fazer a query armazenar os resultados em storage e quando mudar de página ao invés de fazer outra query compor o HTML com os dados armazenados.
  6. De qualquer forma vai precisar usar algumas regras de media. Então de uma estudada nesses artigos: https://developer.mozilla.org/pt-BR/docs/Web/API/Window/resize_event https://developer.mozilla.org/pt-BR/docs/Web/API/HTMLElement/offsetWidth https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth
  7. Omar~

    Transition Height não funciona em UL

    Algumas incoerências: 1 - No CSS a tag <ul> é transcrita depois do classificador secao-toggle mesmo em uma re-escrita o browser irá ignorar usar usando o que é de substituição no caso somente dados da <ul>. 2 - O classificador cnt-filtro-body já possui uma altura fixa, qualquer filho terá sua altura máxima herdada de seu pai, a não ser que o elemento pai possua alguma regra de overflow. 3 - Suspeito que queira uma espécie de animação de slide-dow/up o browser não executa o esperado você precisará do atributo transform. Obs.: Evite maximizar intervenções em tag's pre estipulando pois qualquer outra tag igual assumirá as mesmas características dificultando manutenção e updates futuros. É possível obter o efeito através de clonagem de elementos pois é assim que jquery executa sem interver no CSS, porém isso consome uma memória elevada demais, termos de MBs para executar algo que simplesmente com CSS em Bits você faz. Veja se é isso que pretende: HTML <button onclick="myFunction()">Clique aqui</button> <div class="cnt-filtro-body"> <ul> <li>a</li> <li>b</li> <li>c</li> </ul> </div> CSS .cnt-filtro-body { position: relative; overflow: hidden; height: 0; transition: .5s all ease-out } .cnt-filtro-body ul { list-style: none; pointer-events: none; position: absolute; z-index: 1; top: 0; left: 0; height: 160px; transform: translateY(-160px); transition: .5s all ease-out } .cnt-filtro-body.secao-toggle { height: 160px } .cnt-filtro-body.secao-toggle ul { pointer-events: auto; transform: translateY(0) } JAVASCRIPT function myFunction() { var element = document.querySelector('div.cnt-filtro-body'); element.classList.toggle('secao-toggle'); }
  8. Omar~

    [Resolvido] Problema com __autoload

    Remova o __autoload e nomeie sua função Então use a função spl_autoload_register enviando o nome da sua nova função como parâmetro. Exemplo: <?php function AutoLoad($Class) { // código do seu auto load aqui } spl_autoload_register('AutoLoad');
  9. Omar~

    executar function dentro de function

    Qual seria a situação? Por não vejo motivos disso acontecer. Se acontecer podemos entrar em loop infinito o que vai fazer com que não só software do usuário trave como pode levar a danos no hardware do mesmo. Se explicar melhor com certeza a um jeito melhor para proceder.
  10. Houve um equívoco meu, ao ler rápido: Mau interpretei pois validacao_usuarios é um método e não uma classe. Então certifique-se que a classe que tenha validacao_usuarios como método seja filha da classe DBModels.
  11. Bom não mecho com mysqli, mas olhando a classe validacao_usuarios que na verdade deveria ser nomeada como ValidacaoUsuarios, o erro mesmo está nessa linha: O método newConnection não pertence ao escopo da classe e sim no escopo da outra classe DBModels. O que você pode está fazendo é renomear corretamente a classe validacao_usuarios e declarar-la como sendo filha de DBModels, assim ela herda tudo que é protegido ou publico da classe mãe. class ValidacaoUsuarios extends newConnection { Não sei se vai dar certo porque como disse não mecho com msqli meu negócio é só PDO, mas o erro referido no título é porque algum objeto não pode chamar alguma função, justamente pelo que mencionei acima.
  12. Omar~

    Horário PHP

    A primeira coisa que veio em minha mente foi: Buscar o horário atual Usar a função explode para pegar a hora Se for maior que 23 ou 00 usando a função strtotime aumentar mair uma hora, assim prevendo para que não aconteça erros de data caso seja último dia de cada mês ou ano. Caso não seja 23 ou 00 usar a mesma data atual. Exemplo: <?php $hora = (int) explode(':', date('H:i:s'))[0]; if ($hora >= 23 || $hora < 1) { $novaData = date('Y-m-d H:i:s', strtotime('+1 hour')); } else { $novaData = date('Y-m-d H:i:s'); } var_dump($novaData);
  13. Omar~

    Regex para validação

    Não sei qual o senário aí, mas se for saber se uma string possui ou não caracteres especiais é só passar por combinação, para isso usamos a função match. Já para a quantidade de caracteres usamos o protótipo length. var stringA = "CaracteresComuns"; var stringB = "ãÉíÓú"; var stringC = "'\"\"@#$%¨&*()´+-=_[]{}º~^^?"; verificar(stringA); verificar(stringB); verificar(stringC); quantidade(stringA); quantidade(stringB); quantidade(stringC); function verificar(str) { if (str.match(/^([a-zÀ-ú]+)$/gmi)) { console.log('[' + str + '] Não tem caractere expecial'); } else { console.log('[' + str + '] Tem caractere expecial'); } } function quantidade(str) { var chars = str.length; console.log('[' + str + '] Possui [' + chars + '] de caracteres'); } Pessoalmente acho desnecessário qualquer tipo de filtro em senha do usuário, para que o ele possa usar letras/números/caracteres especiais de forma a garantir a segurança da sua senha conforme ele mesmo achar mais conveniente. Como sempre em um POST recebemos os valores por encodeURI o recebimento da mesma é seguro então logo antes de usar o valor da super global POST do valor do input uso a função htmlentities no PHP assim não sendo possível quebrar meu código PHP caso o valor do input tenha essa finalidade. Até impedindo um sql-inject só com o htmlentities, mesmo também sempre salvo senhas por password_hash. Bom se existe alguma forma de quebrar o código PHP antes da execução nunca vi nem ouvi falar.
  14. Omar~

    Relacionar resultados na busca

    Primeiro a situação porque é difícil de explicar: Preciso realizar uma query em duas tabelas uma de pergunta (tabela_A) outra de resposta (tabela_B) usando o operador LIKE Ambas possuem uma coluna para o conteúdo, a tabela_A possui também uma coluna para título. A tabela_b é possui uma coluna para se relacionar com a tabela_A. Então digamos que na tabela_A tenho a seguinte questão: tabela_A Título: João foi ao mercado? Conteúdo (pergunta): Alguém sabe se ele comprou arroz? tabela_B Conteúdo (resposta): Eu vi que joão comprou feijão. A consulta então seria pela palavra chave joão que poderia está presente nas 2 tabelas e em 3 colunas. Tentei da seguinte forma montar a query: SELECT tabela_A.id, tabela_A.titulo, tabela_A.pergunta, tabela_B.relacao, tabela_B.resposta FROM tabela_A INNER JOIN tabela_B ON tabela_A.id = tabela_B.relacao WHERE tabela_B.resposta LIKE '%joão%' OR ( tabela_A.titulo LIKE '%joão%' OR tabela_A.pergunta LIKE '%joão%' ) Os problemas são se eu passar o comando ON para relacionar a resposta com a pergunta: A query não retorna se não houver dados na tabela_B. A query só retorna resultado se for buscado dados pela coluna resposta (mesmo existindo a palavra chave nas colunas citadas da tabela_A). A questão é: Como eu realizaria essa consulta? Se a palavra chave for encontrado na coluna titulo, pergunta ou resposta, de forma a que eu irei listar a coluna_A. Exemplo: Pesquisou por Maria, no título não tem, na pegunta não tem, na resposta tem. Pesquisou por Luiz, no título tem, na pegunta não tem, na resposta não tem. Ou seja em qualquer um dos campos de ambas colunas que houver a chave de consulta deve retornar dados da coluna_A, mesmo que seja uma resposta na coluna_B. A forma que estou procedendo mesmo dando o resultado esperado não acho adequado acredito que uma query bastaria. Consultar tabela_A pelos campos tilulo e pergunta. Consultar tabela_B pelo campo resposta. Usar a função no PHP array_merge para unir ambos resultados em um único array. Remover os índices duplicados do array unificado.
  15. Omar~

    Javascript - Impedir de voltar a página anterior

    Acontece que isso não é possível, uma vez que você teria que está alterando o comportamento do software que o usuários estivesse usando. No máximo que pode está fazendo é armazenar uma sessão que se ele avançou ao acessar a página anterior novamente esbarraria numa checagem da sessão, porém isso não é válido se selecionar o botão return do browser porque ele teria que recarregar o conteúdo. Dependendo do seu cenário aí dar para simular isso sem nem mesmo redirecionar usando os recursos: https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHTTPRequest https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState
  16. Omar~

    console.log

    Na verdade exitem sim maneiras de fazer guardar dados como esse por código, porém não passa de "gabiarra" para realizar algo que não faz sentido algum fazer.
  17. Omar~

    [Resolvido] imprimir em php valor javascript

    É que você quer meter os pés pelas mãos complicando algo muito simples. Não precisa se desdobrar para extrair com o PHP alguma informação do javascript porque isso é impossível. Nem o PHP pode extrair alguma informação do javascript . Pense da seguinte forma: 1º - PHP (serve-side) processa e renderiza o DOM. 2º - Usuário (user-side) recebe o DOM renderizado pelo (serve-side). Ou seja quando no javascript (user-side) queremos algo do PHP (serve-side) apenas pedimos que o PHP renderize a informação/conteúdo que queremos. No contexto geral então quando você vai enviar algo de uma página para outra você envia a informação para o (user-side) e se algo precisa ser usado com essa informação ela é re-enviada para o (serve-side). Lógico que (serve-side) para trabalhar sozinho com os dados e entregar para o (user-side) as informações renderizadas assim como disse antes. Preparei 4 exemplos diferentes aqui para você ver qual a melhor alternativa. https://drive.google.com/file/d/1nE7cHow4FivW63JEZdGie6GygHXEe_HG/view?usp=sharing
  18. Omar~

    [Resolvido] imprimir em php valor javascript

    Tenta assim: <a href="link1.php" class="link-da-funcao">link1</a> <a href="link2.php" class="link-da-funcao">link2</a> <a href="link3.php" class="link-da-funcao">link3</a> <script> var links = document.querySelectorAll('a.link-da-funcao'); links.forEach(function (e) { e.setAttribute('data-link', e.href); // Adiciona o atributo "data" na tag com o valor do atributo "href" e.removeAttribute('href'); // Remove o atributo "href" impedirá de redirecionar e.addEventListener('click', func_1, false); // Adiciona o evento click na tag }); function func_1(e) { // Obtem o link pelo atributo "data" e rediceciona para ele enviando a informação por GET window.location.href = (e.target).dataset.link + '?informacao=' + 300; } </script>
  19. Omar~

    [Resolvido] imprimir em php valor javascript

    Primeiro que a tag <a> deve ser manipulada para que ela não redirecione de imediato. A função é quem deve fazer isso. O que pode fazer é passar essa informação por protocolo GET para o arquivo link1.php <!-- O nome do evento é "onclick" e não "onClick" O atributo "href" não é necessário pois é a função quem vai redirecionar <a href="link1.php" onClick="func_1()">link1 </a> <br> <br> <p id="tete1"></p> Isso se torna inutilizável aqui pois haverá redirecionamento --> <a href="link1.php" onclick="func_1()">link1 </a> <script> function func_1(e) { /* // Caso precise usar o atributo href e.preventDefault(); var link = e.target.href + '?informacao=' + 300; */ var link = 'link1.php?informacao=' + 300; window.location.href = link; return (false); } </script> Em link1.php <?php var_dump($_GET['informacao']);
  20. Omar~

    fazer link exibir seu conteúdo sem refresh

    O jeito mais simples e mais eficaz dependendo das circunstâncias, mas no geral é a melhor opção, veja isso: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest Em outro cenário (requer nível baixo a intermediário em manipulação html e de dados) Página A ou qualquer outro: Exibe link para (Página-B & Página-C) A página A faz leitura de dados compõe o html de página B e C armazena esse conteúdo em localStorage passando o html da página como string em JSON pelo javascript Ao clicar no link o armazenamento em json será acionado e o javascript ao invés de recarregar a página pega a informação e re-escreve o html com os dados armazenados anteriormente. A vantagem desse segundo método é a agilidade na questão que o usuário acessar o link novamente o conteúdo não precisa ser processado pois ele já foi agora é só reutilizar. A desvantagem que mesmo sem acessar o conteúdo extra ele deve ser carregado sem necessidade. Lembrando que é possível combinar ambos métodos, o ajax carrega o conteúdo, armazena, que ao clicar novamente é reaproveitado os dados guardados no localStorage
  21. Omar~

    não consigo utilizar position: sticky como eu queria

    Hã?!!!! Rodapé fixo no topo, mas quando alcança o topo fica no topo? Mas ele já não estaria no topo? Explica direito isso aí A propósito para quê tantas tag's break? "<br />" Não seria mais simples usar "margin-bottom"
  22. Ai sim é uma boa iniciativa.... Só que tem que ver a qualidade do conteúdo....
  23. Omar~

    Retornar o valor do COUNT na variavel

    var_dump Esse é o principal e mais eficiente recurso do PHP para um desenvolvedor. Pois com ele podemos saber se algo existe e como ele é. Se executar no valor do retorno da função sqli saberá se a query houve erro, se não quais são os dados disponíveis e como eles são, assim saberia como percorrer esse array. O que posso ajudar lhe indicar o caminho: <?php $arrayA = [ 'a' => 'Primeiro índice', 'b' => 'Segundo índice' ]; var_dump($arrayA); echo $arrayA['a']; // Resultado: "Primeiro índice" echo $arrayA->a; // Resultado: "Erro" Não é um objeto $arrayB = (object) [ 'a' => 'Primeiro índice', 'b' => 'Segundo índice' ]; var_dump($arrayB); echo $arrayB->a; // Resultado: "Primeiro índice" echo $arrayB['a']; // Resultado: "Erro" Isso não é associativo Deixo para outra pessoa fazer o código para você e postar aqui
  24. Omar~

    accordion

    Independente como é o esquema HTML aí uma coisa sempre será exata, os elementos existem mesmo em redundância. Isso lhe tras um ARRAY NOD-LIST de todos elementos class accordion. Pois bem lhe darei uma dica útil para quem quer manipular HTML use o comando: console.log(); no caso obtendo o log da variável acc que armazena o array. console.log(acc); Se olhar o console do browser verá que o índice [0] é o primeiro elemento o índice [1] o segundo e por aí vai.... Aquele que você quer "mostrar" basta apenas alterar sua propriedade style. acc[0].style.display = 'none'; Ou seja na página que você redirecionou, quer manipular um elemento é só buscar por ele e fazer o que bem entender.
×

Important Information

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