Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    Listar todas palavras usadas em um texto

    Remova os pontos, virgulas etc, esses usando preg_replace antes de criar o array $vetor. Depois de criar o array $vetor execute array_unique para remover índices duplicados.
  2. Omar~

    multiplo cadastro de imagens

    Sim, assim como você brevemente fez use a função count para saber quantos índices existem na super global $_FILES. Além dessa verificação do lado do servidor seria bacana se você também fizesses algo do lado do cliente(usuário) assim poupa processamento do servidor quando algo não está de acordo, basta apenas delimitar os arquivos dentro do input usando o javascript. Mas sempre deve existir filtros do lado do servidor, vai lá saber quem e qual intenção da pessoa que está enviando informação para o servidor! E a propósito leia sobre isso: https://www.php.net/manual/pt_BR/class.finfo.php a última camada de sua proteção depois de 3/4/5/6/7.... verificações que possa executar. Leia aqui também, foi de grande ajuda para mim, e também será para você já que estamos falando de uploads. https://forum.imasters.com.br/topic/587426-até-onde-posso-confiar-na-classe-finfo/ Do lado do cliente se for o caso pode está usando esse script meu: https://github.com/Spell-Master/sm-web/tree/master/javascript/FileTransfer Enfim, se não é o limite que estipulou um loop deve ser usando para salvar os arquivos e registrar eventuais coisas que são necessárias A última coisa e mais importante: Remova esse caractere antes de variável "@" ele ofuscará o erro e qualquer dano para sua aplicação. Eu posso por exemplo enviar outro arquivo dizendo que é uma imagem devido a ofuscação usando o "@" não importa o filtro ou qualquer verificação eu posso dizer que é um png ou jpg ou bmp sei lá, seu php vai aceitar pois qualquer erro está ofuscado e não tem mágica/truque que possa fazer. Na verdade o que estou enviando é um arquivo digamos .php ou .htaccess que me dar total e pleno acesso acesso a sua hospedagem quem sabe até um arquivo .????(ocultei) funcionando obtendo e me repassando qualquer informação que passa pelo seu protocolo http. Não importa o ambiente se é de produção ou entrega esse uso do "@" é para apenas testes de vulnerabilidades e processos de gastos para desenvolvedores contribuintes para aperfeiçoamento da linguagem php. E nunca em hipótese alguma o caractere de ofuscação "@" em junto a uma variável deve ser usado para quem está em aprendizado ou até por profissionais em desenvolver aplicações. Ele existe para um único fim de testes para o próprio código de programação o PHP.
  3. Omar~

    Problema acentuação MySQL

    Me parece que não adianta nada agora tentar corrigir a codificação de caracteres, pois o problema ocorreu quando os dados foram registrados. Vale ressaltar também que a codificação da aplicação também deve ser definida na mesma codificação usada pelo charset. Detalhes como a própria criação da tabela também vão ter grande relevância, exemplo: CREATE TABLE `exemplo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `texto` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; De qualquer forma um simples solução para codificação de caracteres é nunca usar acentuação e sim entidades das mesmas, exemplo: $salvar = htmlentities('João é um menino'); /* No banco de dados fica salvo assim: - João é um menino Mas sempre que for exibido no html não importa qual a codificação será: - João é um menino */ Se fosse meu caso e não ´pudesse reiniciar o banco de dados estaria a criar um mapa de caracteres desses que estão "diferentes". Criaria um programa - que automaticamente faria a leitura > converteria os estranhos para seu estado real > faria a atualização dos registros usando a função htmlentities. Lógico que alteraria a aplicação para que quando algum registro seja inserido ou alterado passe pela função htmlentities. Então nunca mais teria problemas relacionados ao charset seja lá qual for a codificação usada.
  4. Omar~

    Somar checkbox checked

    <!-- Como errar ao escrever HTML ^.^ --> <input id="valorItemExtra" /> <input id="valorItemExtra" /> <input id="#valorItemExtra" /> <input id="#valorItemExtra" /> O atributo ID é único, somente um elemento pode possuir o mesma propriedade. Imagine 1/2/3 ou mais pessoas com o mesmo número de RG ou CPF quem sabe até o mesmo número de telefone, que confusão não seria, no mínimo dizer que isso nunca daria certo. Da mesmo jeito o atributo "ID" deve ser usado, de qualquer forma tanto o javascript quanto o próprio html ou o browser desconsidera isso apenas usando o ultimo ID pois ele sobrescreve os demais porque como dito só pode existir um apenas com a mesma identificação. Resposta para o problema. Remova o erro de usar mais de um ID igual. Busque pelos elementos de input Adicione um ouvinte que detecta quando algum input é alterado. Faça o calculo dentro de um loop pelos elementos quando marcados incrementa o valor.
  5. Omar~

    Mudar script atual de envio de e-mail para usar SMTP.

    Pode está usando essa classe que escrevi para usar junto o PHPMailer: Crie um arquivo que irá guardar os dados necessários para conexão SMTP <?php defined('SITE_NAME') || define('SITE_NAME', 'fulano'); // Nome que será usado para informar quem está enviando defined('MAIL_TYPE') || define('MAIL_TYPE', 'tls'); // Tipo de criptografia usada defined('MAIL_HOST') || define('MAIL_HOST', 'aaa.bbb.com'); // Servidor de envio defined('MAIL_PORT') || define('MAIL_PORT', 300); // Porta de acesso ao servidor defined('MAIL_USER') || define('MAIL_USER', 'fulano@fulano.com'); // E-mail que vai enviar defined('MAIL_PASS') || define('MAIL_PASS', 'senha_do_fulano'); // senha do e-mail que vai enviar Para enviar: <?php $mail = new Mailer(); $mail->setMail( 'recebe@recebe.com', // e-mail de quem vai receber 'Título do envio', 'caminho para o arquivo.html', [ 'AAAA' => 'Alguma coisa', 'BBBB' => 'Pode-se adicionar quantos índices quiser', ] ); Para o caminho para o arquivo.html você cria um arquivo html, nele você pode definir o layout como quiser como se fosse uma página web mesmo sempre usando o atributo style para tal. Nesse arquivo html você pode está incluindo os parâmetros que criou no array quando definiu os dados de envio exemplo: <p style="color:red">{AAAA}</p> <!-- AAAA será o texto de acordo com o mencionado antes: "Alguma coisa" --> Por fim você manda enviar $mail->send();
  6. Omar~

    Paginação

    Eu acho que não dar para fazer, mas posso está enganado. Se fosse para tentar fazer, eu partiria de usar as seguintes aplicações aos quais me vem a cabeça que poderiam ser usadas: https://developer.mozilla.org/pt-BR/docs/Web/API/Window/scroll https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHTTPRequest https://developer.mozilla.org/en-US/docs/Web/API/History/pushState https://developer.mozilla.org/pt-BR/docs/Web/API/Document/createElement https://developer.mozilla.org/pt-BR/docs/Web/API/Node/appendChild https://developer.mozilla.org/pt-BR/docs/Web/API/Node/removeChild Porém não sei se daria certo, pelo fato que não dar para prever quando a pessoa vai clicar em voltar na aba do navegador, porque isso não dar para capturar exceto se criar uma extensão própria para o navegador que comunicaria ao javascript que a ação foi realizada. Ou talvez tenha algum truque para detectar essa ação que nunca ouvir falar. Em uma "gambiarra" eu usaria um setinterval para está constantemente consultado a barra de navegação assim saber quantas páginas devem existir de acordo com a rolagem.
  7. Omar~

    Atualizar Várias Linhas dentro de Um Loop

    As filtragens que pode aplicar é bem variável, pois depende se vai ou não manter ou permitir determinadas entradas. Digamos que eu não queira uso de um caractere de aspa, então eu não executo o restante do código porque tem uma aspa na informação. Mas se eu quero essa aspa eu posso alterar ela de forma que a mesma não chegue a atrapalhar ou quem sabe até dar algum problema. Ou então não quero essa aspa ao invés parar a execução ou converter, simplesmente removo e meu código pode continuar. Isso também remonta a vários outros caracteres também usados no nosso ou em outros idiomas. O ruim de barrar caracteres atualmente são os conhecidos emoticon comuns em aparelhos móveis. Então bloquear determinados caracteres deve-se assegurar que esses caracteres não vão comprometer a exibição desses emoticon que são compostos caracteres unicode. Vou compor uma situação aqui: <?php class exemplo { private static $string; public static function converter($x) { self::$string = (string) $x; self::codificar(); self::aspas(); return (self::$string); } private static function codificar() { self::$string = mb_convert_encoding(htmlentities(self::$string), 'UTF-8', 'ASCII'); } private static function aspas() { $aspas = ['/\'/', '/"/', '/`/']; $entidades = ['&apos;', '&quot;', '&grave;']; self::$string = preg_replace($aspas, $entidades, self::$string); } } // É um texto com "aspas" > e com a mesma 'simples' e invertida `também` $strA = "It'is a text with \"quotes\" > and with the same 'simple' and inverted `also`"; $strB = exemplo::converter($strA); echo ($strB . "<br />"); echo ("<pre>"); var_dump($strB); echo ("</pre>"); Se executar o código $strB mesmo sendo o valor aplicado pela classe é mostrado como o texto original não aparenta que nada foi modificado, até mesmo a função var_dump não monstra nada diferente. Até mesmo se inspecionar o texto pelo navegador não se ver diferença. Isso porque quaisquer caracteres especiais que venha a conter foram substituídos por entidades html então o navegador sempre irá mostrar ele como ele deveria ser exemplo: Mostra " mas na verdade é &quot; Mostra > mas na verdade é &gt; A única forma que existe para que se consiga ver como realmente é o texto é executando ele com algo que não é um interpretador html, PHP é um interpretador html. Podemos usar o javascript: echo ("<script>console.log(\"{$strB}\")</script>"); Então no console do navegador verei como o texto é antes de ser interpretado. Digamos que salvo algum texto no banco de dados, quaisquer eventuais códigos serão salvos no banco sim, mas não como códigos funcionais apenas como uma simples string que nunca será interpretada como função, ou seja nunca sendo executada. Mesmo repassando a mesma eu várias ocasiões. A não ser que eu transforme novamente o texto de entidades a caracteres: echo html_entity_decode(utf8_decode($strB)); // Retorna o código ao estado original Você pode aplicar muito mais conversões usando entidades der uma olhada nisso que achei https://oinam.github.io/entities/ Mas deixo claro que só a função htmlentities já faz um bom trabalho. O ponto forte de se usar entidades é que nunca irá precisar se preocupar com erros de acentuação por causa de codificação da aplicação pois não importa o idioma se é árabe, chinês, inglês ou português, se é utf-8, ANSI ou sei lá, quaisquer problemas relacionados a isso estarão solucionados. João é amigo de maria Jo&atilde;o &eacute; amigo de maria PDO e áspas.... PDO já salva aspas escapadas para evitar justamente a quebra da coluna no banco de dados.
  8. Omar~

    Atualizar Várias Linhas dentro de Um Loop

    Simples dados 1 é substituído por dados 2/ e 3 substitui 2/ 4 substitui 3 etc... etc... etc... Exemplo: $variavel = 'AAA'; $variavel = 'BBB'; $variavel = 'CCC'; var_dump($variavel); // Resultado é (string) CCC pois é a ultima informação igual definida. $variavel = [ 'AAA', 'BBB', 'CCC' ]; var_dump($variavel); // Resultado é (array) AAA,BBB,CCC. Na verdade a substituição já acontece quando o navegador vai enviar as informação, somente enviando a última que substitui todas anteriores. Você pode definir os inputs como um array assim quando chegar ao lado do servidor terá vários dados dentro de uma array na super-global post Exemplo: <input type="text" name="como_array[]" value="A" /> <input type="text" name="como_array[]" value="B" /> <input type="text" name="como_array[]" value="C" /> Então a cada índice você faz o update. Eu não mecho com mysqli, então apenas vou dizer para dar uma lida nisso talvez possa ser útil: https://www.php.net/manual/pt_BR/mysqli.multi-query.php Outra forma é criar cada input individual de acordo com a chave do array de retorno na query Exemplo: $sqlSelect = mysqli_fetch_assoc($result); foreach ($sqlSelect as $chave => $valor) { ?> <input type="text" value="<?= $valor['trackNumero'] ?>" name="trackNumero-<?= $chave ?>"> <?php } Então no lado do servidor os valores serão separados (https://www.php.net/manual/pt_BR/function.substr.php) e indexados em um array. Então percorrer esse array criado e a cada chave idêntica no mesmo índice realizar o update. Ponderações: Filtre melhor os dados que serão processados no servidor, imagine alguém quebrar a sintaxe do php para expor o código fonte que está sendo processado pelo servidor. mysqli_real_escape_string é muito fácil burlar se é que isso funciona mesmo. Nunca passe uma informação vinda do usuário direto dentro de uma query, nunca se sabe o que está sendo executado, injeções de código vem de todo lugar e você não vai querer alguma detonando todo seu baco de dados ou vai? Use query pré preparadas https://www.php.net/manual/pt_BR/mysqli.quickstart.prepared-statements.php Dica pessoal minha: PDO é uma boa (não a melhor) alternativa pois já possui uma pequena proteção em seu mais simples uso. Não é bicho de sete cabeça e mais fácil e seguro de usar que mysqli.
  9. Omar~

    animação ao carregar a página

    Para fins de estudo de caso outros cheguem até aqui. O site sem si fornecido pelo autor do tópico usa como referencia elemento de autua e largura totais, a a propriedade fixed sobre esses elementos para cobrir. Quando uma página é trocada ela não é trocada... Vou explicar apesar de ser um link da tag <a> exite um evento a espera desse click. No momento do click a função responsável troca o conteúdo da tag que irá cobrir ao mesmo tempo que a mostra pois ela está oculta. Os efeitos nada mais é que css de margin, opacity etc... Voltando ao caso do click a função executa Asynchronous JavaScript And XML a um arquivo que irá devolver a resposta como texto html. Durante o processo de comunicação do AJAX, o histórico da url é manipulado. Fazendo pensar que na verdade clicasse em algum link. Quando a resposta está pronta a mesma função altera o html da página com o html da resposta e oculta o elemento que cobre a tela. Etapas: 1 - Obter todos links 2 - Remover comportamento padrão dos links. 3 - Acionar uma requisição ajax quando o link é ativado. 4 - Enviar pedido ao servidor para que forneça o arquivo referente ao link ativado. 5 - Obter solicitar a resposta como text/html. (Etapa 7 inicia aqui.) 6 - Alterar HTML do elemento de animação. 7 - Alterar o histórico da url. 8 - Alterar o HTML do elemento que irá carregar a página. 9 - Alterar o HTML do elemento de animação. O resto é só css simples e básico position/opacity/margin/translate.
  10. Omar~

    mysql desabilitar ou remover paginação

    @Biel. Vá até o diretório de instalação do phpmyadmin vasculhe os arquivos até encontrar aquele que faz esse gerenciamento, então é só editar ele conforme achar que pode fazer melhor. No entanto isso não passa de uma bobagem desnecessária. Não dou detalhes sobre qual arquivo porque não uso o phpmyadmin para gerenciar banco de dados e tabelas. Já trabalhei com redes logísticas e de varejo que possuíam quase 100 ou mais tabelas em um só banco de dados. Esse site mesmo aqui que é o sistema invision power board deve ter umas 80 tabelas por aí. Ter várias tabelas ou não depende da organização de um volume gigantesco de dados.
  11. Estranho.... Eu diria que seria algo que possa está sendo registrado dentro da super-global $_SESSION, no entanto, vendo o que postou não tem esse registro sendo feito. Faça um teste aí. Altere o input type password para text no arquivo de login, desconfio que o browser está com a senha memorizada em cache. Então ao invés de uma nova senha a antiga está sendo usada. Porque realmente não consegui ver algum motivo para algo como isso acontecer. Tente ver primeiro como os dados foram repassados no arquivo de login dessa forma: <?php // if(!isset($_POST['SendLogin'])){exit;} exit é uma função ok?! $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); if (isset($dados['SendLogin'])) { echo "<pre>"; var_dump($dados, $dados['senha']); echo "</pre>"; /* Não executar, veremos primeiro os dados antes de fazer a coisa acontecer $query_usuario = "SELECT * FROM usuario WHERE email = :email LIMIT 1"; $result_usuario = $conn->prepare($query_usuario); $result_usuario->bindParam(':email', $dados['email']); $result_usuario->execute(); $row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC); if ($row_usuario && (password_verify($dados['senha'], $row_usuario['senha']))) { $_SESSION['id'] = $row_usuario['id']; $_SESSION['nome'] = $row_usuario['nome']; $_SESSION['situacoe_id'] = $row_usuario['situacoe_id']; $_SESSION['niveis_acesso_id'] = $row_usuario['niveis_acesso_id']; header("Location: painel.php"); } else { //echo "<div class=content><p style='color: red'> // Erro: Usuário e/ou senha inválidos!</p>"; // DA MESMA FORMA QUE PROPRIEDADES DE ATRIBUTOS DEVEM FICAR ENTRE ASPAS // TAG'S DEVEM SER FECHADAS echo "<div class=\"content\"><p style='color: red'> Erro: Usuário e/ou senha inválidos!</p> </div>". } */ } else { exit(); } ?> Só um complemento, que não tem haver com o tópico: Evite esse tipo de coisa, pois isso irá reduzir o desempenho, pois o browser vai ter que corrigir seu erro para method="post". Então sempre coloque o valor de um atributo dentro de aspas. Além do mais fique atento a fechamento de tag's <p>conteudo</p> <div>conteudo</div> <br /> <input /> A falta dessas normas podem causar anomalias estranhas na renderização do documento pelo browser
  12. Omar~

    Problema ao gerar array bidimensional dinamicamente.

    O ideal é que você faça isso e nos poste o resultado no console: console.log(response) Pois é com essa informação que podemos analisar como a coisa deve ser gerada. Aparentemente a resposta é algum objeto, mas teria que vê-lo para responder corretamente.
  13. Omar~

    Dois resultados numa mesma condição

    Blz...? Vejamos essa query: SELECT postagem.id, postagem.link, postagem.autor, postagem.editor, usuario.id, usuario.nome FROM postagem INNER JOIN usuario ON postagem.autor = usuario.id Então estou buscando pelos dados da postagem e o autor da mesma. A questão é: Tenho uma tabela "postagem" que guarda informação do "autor" da postagem e quem a editou "editor" Com essa query consigo trazer o resultado da tabela usuario dano a referencia do autor. Mas como eu faria para ter os dados do "autor" e do "editor" na tabela "usuario"? Preciso obter os nomes de quem criou e quem editou.
  14. Omar~

    link interno

    Dar se não for um ambiente web. Exemplo uma página de servidor não pode acessar o conteúdo de um sistema operacional do usuário, graças a deus! Isso é questão de segurança além do mais impede que desinformados fiquem inventando moda com coisas que não tem nada haver. Se é um documento html por exemplo que é executado pelo próprio sistema operacional ao invés de um software como o navegador web pode-se abrir um diretório sim. Somente se for windows, outros sistemas operacionais que são seguros como o linux impedem esse tipo de ação "por segurança", no entanto o acesso pode ser concedido pelo terminal. <a href="file:///C:/">Abrir</a> Outro caso, se você adulterar o navegador ou criar um com essa finalidade pode sim. Pois abrir conteúdo qualquer browser vai impedir quando o link vier de algum ambiente web. Não vou dar mais detalhes pois estamos entrando numa área sombria que viola a segurança na web.
  15. Omar~

    Limitar Caracteres digitado de um input

    Para começar jogue fora essa coisa aí que chama de script que insiste em usar. Então tá, mesmo a lógica não tendo nada haver, e o objetivo disso ser controverso.... Digitei no primeiro input, o que eu digitar substitui o valor no segundo input, mas o segundo input só pode ter no máximo 20 caracteres (está aqui a falta de lógica). <input name="exemplo[]" /> <!-- input[0] --> <input name="exemplo[]" data-recebe="" /> <!-- input[1] --> <script> var input = document.getElementsByName('exemplo[]'), inputAlvo = {}; input[0].addEventListener('keyup', digitar, false); input[1].addEventListener('keyup', digitar, false); function digitar(evento) { inputAlvo = evento.target; if (inputAlvo.dataset.recebe === '') { input[1].value = input[(input[0].value.length >= 1 ? 0 : 1)].value.substring(0, 20); } else { input[1].dispatchEvent(new Event('keyup')); } } </script>
  16. 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>
  17. 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:
  18. 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>
  19. 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"); }
  20. 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:
  21. Omar~

    Converter imagens em webp

    https://www.php.net/manual/pt_BR/function.imagewebp.php
  22. 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>
  23. 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
  24. 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?
  25. 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)
×

Informação importante

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