Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    "herdar" pagina HTML

    Normalmente e o que fazemos sempre é utilizar de armazenamento em banco de dados. Ao carregar uma página mandamos a informação de uma consulta a ser realizada então preenchemos cada coisa com os resultados obtidos pelo banco de dados.
  2. Omar~

    Duvida Simples sobre Remover Caracteres vindos via POST

    Assim acho mais prático: str_replace(['(', ')', '-', ' '], null, '(DDD) 9999-9999'); Resultado: DDD99999999
  3. Omar~

    LI em coluna

    Conseguir fazer usando uma "gabiarra" aqui. Veja, o que eu fiz foi usar métodos diferentes a cada 2 itens da lista, enfim deu certo ^.^ <style> ul { list-style: none } ul > li:nth-child(1), ul > li:nth-child(2) { display: table-cell } ul > li:nth-child(3), ul > li:nth-child(4) { display: inline-block } </style> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul>
  4. Omar~

    Dúvida de como colocar objetos na tela!

    @Felipe Guedes Coutinho Quando você faz a seguinte a manipulação de um elemento dessa forma: elemento.style.display = "(table|block|inline-block|etc..)"; Você está removendo todo seu atributo style, substituindo o que existia pelo novo. Pode se feito assim também desde que as demais propriedades do elementos estejam em folha de estilo. Quando se ataca diretamente o uma propriedade de atributo específico usamos setAttribute('atributo', 'propriedade e valor a alterar/adicionar'); Aqui também devo ressaltar, que ficar buscando por vários elementos quando se aciona uma função não é o ideal, pois perdemos em performasse ao executar uma função. Devemos evitar ficar fazendo muitas varreduras no DOM, para melhor desempenho (lógico que em algumas situações isso é impossível). O ideal por exemplo é buscar todos esses elementos em um pré carregamento armazena-los e então usar esse armazenamento para atacar os elementos. @vinicius59 Não sei ainda se és isso que procura mas veja: <style> #vermelho, #verde, #azul { float: left; /* Eles vão ficar um ao lado do outro */ width: 200px; height: 200px; display: none } #vermelho.mostrar, #verde.mostrar, #azul.mostrar { display: block } #vermelho {background-color: red} #verde {background-color: green} #azul {background-color: blue} </style> <div id="vermelho"> Quadrado vermelho </div> <div id="verde"> Quadrado verde </div> <div id="azul"> Quadrado azul </div> <!-- Necessário lipar os dados flutuantes para correta orientação dos supostos novos elementos que podem aparecer depois dos quadrados --> <div style="clear: both"></div> <script> // O evento keypress detecta quando uma tecla é acionada document.addEventListener('keypress', executaFuncao, false); // Armazenamos em um array quais são os elementos que vamos manipular var elementos = [ document.getElementById('vermelho'), // elementos[0] document.getElementById('verde'), // elementos[1] document.getElementById('azul') // elementos[2] ]; function executaFuncao(e) { var key = e.keyCode; switch (key) { case 49: // Tecla 1 elementos[0].classList.toggle('mostrar'); // Vermelho break; case 50: // Tecla 2 elementos[1].classList.toggle('mostrar'); // Verde break; case 51: // Tecla 3 elementos[2].classList.toggle('mostrar'); // azul break; /* * // Isso está em comentário caso queria que todos * // eles apareçam se qualquer uma das teclas forem * // acionadas, remova a bateria de cima e deixe essa. case 49: // Tecla 1 case 50: // Tecla 2 case 51: // Tecla 3 for (var i = 0; i < elementos.length; i++) { elementos[i].classList.toggle('mostrar'); } break; */ } } </script> Nesse exemplo usei as sequências de injeção classList.toggle, o que fará com que o elemento classificador seja adicionado quando clicado no botão ou removido caso seja acionada a tecla novamente. Se quiser que eles continuem mesmo clicando novamente terá que modificar para: classList.add Nesse caso teremos que consultar se o elemento não tem o que vai adicionado caso contrário inicia o vicio HTML. <div class="mostrar mostrar mostrar mostrar mostrar.... Isso irá se repetir toda vez que uma das teclas forem pressionadas. Para prevenir: case 49: // Tecla 1 if (!elementos[0].classList.contains('mostrar')) { // Verificamos se não tem a class "mostrar" elementos[0].classList.add('mostrar'); // Vermelho } break; /* ou no segunda questão */ for (var i = 0; i < elementos.length; i++) { if (!elementos[i].classList.contains('mostrar')) { elementos[i].classList.add('mostrar'); } }
  5. Omar~

    Dúvida de como colocar objetos na tela!

    Existem incontáveis formas de fazer algo assim, cada qual para seu cada qual. Se você explicar melhor o que deseja poderá ter uma resposta mais coesa. <div id="quadrado" style="display:none; height:50px; width:50px; background-color:red"> Isso só aparece se clicar em algum botão </div> <button class="botao">Botão 1</button> <button class="botao">Botão 2</button> <script> var btn = document.getElementsByClassName('botao'); for (var i = 0; i < btn.length; i++) { btn[i].addEventListener('click', function () { document.getElementById('quadrado').setAttribute('style', 'display:block'); }, false); } </script>
  6. Omar~

    Evento de click nao funciona corretamente - [RESOLVIDO]

    Poderia ser somente código mau escrito ou não funcional, seria melhor nos apresenta-lo para melhor análise.
  7. Omar~

    Sugestões onde estudar

    Certo que o mercado de apps para mobile cresce mais e mais, e pretendo começar a embarcar nessa jornada. Venho a pedir sugestões do que estudar e onde estudar, hora material de qualidade porque como vejo em outros seguimentos a web está cheia de coisa e 99% do conteúdo não presta. Por isso esse pedido para que eu não fique dando voltas em círculos e ainda não aprenda corretamente. Basicamente quero criar aplicativos para smartfones que interajam com websites que desenvolvo, dando um opcional a mais aos clientes que me procuram.
  8. Omar~

    [RESOLVIDO] Vincular resultados LIKE em duas tabelas

    @Felipe Guedes Coutinho Obrigado. Logo de cara na lógica fui pelo uso do JOIN, mas fiquei confuso em como montar a sintaxe da query quando usando o LIKE. Sua ideia funcionou direitinho aqui. Pena que o forum está com com problema na função para dar reput em seu post
  9. Estou precisando da ajuda para montar a seguinte query. Ao realizar uma consulta usando o operador LIKE em duas colunas de uma tabela, ao qual obtenho o id de um vinculo em outra tabela. No genérico a query está assim sem entrar na outra tabela Alí onde tenho a coluna page_sector é o mesmo dado de uma coluna "sector_hash" em outra tabela, ao qual essa tabela armazena os setores, nessa tabela preciso resgatar o valor da coluna "sector_link" Ou seja ao realizar a consulta preciso renderizar que a página encontrada pertence a tal setor, para que possa passar os links corretamente. Assim sendo o usuário irá buscar pelo título ou conteúdo das páginas nos resultados devem vim o link do setor que essa página pertence e a própria página. Porque passando o hash da página a url fica muito estranha e queria otimizar isso exemplo: de https://siteurl/ZR7lGBUIv8YICXUBw2RCP0WgxC7AFe1548702043/pagina para https://siteurl/setor/pagina
  10. Ambos. Vamos supor que eu tenha um classificado conteudo. logo no css o comum vermos por exemplo: .conteudo {color:red} Assim sendo todos os elementos que tenham esse classificador irá ter o texto da cor vermelha. Mas se por acaso eu queira somente que o texto fique vermelho em tags P, ataco pelo elemento seguido do classificador p.conteudo {color:red} Quando você passa o elemento primeiro você dar mais responsabilidade ao css manipular elementos. Não acho uma boa ficar fazendo isso em todo e qualquer elemento, somente quando for realmente necessário.
  11. Omar~

    function dentro de outra function

    Primeiramente esse tópico deveria está em https://forum.imasters.com.br/forum/6-javascript/ Agora a sua dúvida a resposta é sim. Esse é o conceito de orientação a objeto. Em diversas linguagens de programação usamos classes, essas compõem atributos, parâmetros e métodos que executam ações diferenciadas, mas os dados podem ser compartilhados entre eles. O mesmo pode ser feito em javascript. <script> var MinhaClasseJS = function () { this.atributo_publico; var atributo_privado; this.metodoPublico = function (parametro) { atributo_publico = document.getElementById(parametro); if (metodoPrivado()) { console.log(atributo_privado); } else { console.log( 'O atributo público é:\n' + atributo_publico + '\n' + 'O atributo privado é:\n' + atributo_privado ); } }; function metodoPrivado() { if (!atributo_publico.value) { atributo_privado = 'Coloque algum caractere no campo de texto'; return (true); } } }; </script> <input id="texto" type="text" /> <button type="button" onclick="objeto.metodoPublico('texto')">Executar</button> <script> var objeto = new MinhaClasseJS(); </script> Nesse exemplo temos temos atributos parâmetros e métodos que usam dados que estão fora de seu escopo mas pertencem a mesma classe. E executamos a partir de um objeto criado da class.
  12. Omar~

    Include executa tarefa mesmo sem ser chamado

    De uma revisada nos códigos. Porque condicional só é válida quando entra em sua condição. Pode ser que esteja executando o código em outro local. Verifique também os fechamentos de laços pode ser que uma condicional esteja sendo executada dentro de outra assim executando o código que não era para ser executado. Sugiro que faça uma depuração/revisão em todos arquivos envolvidos. Uso dos blocos try são mais eficientes pra manipulação de dados aleatórios.
  13. Omar~

    URL Amigáveis com mod_rewrite e .htaccess

    Você pode aplicar uma regra para cada entrada na url tipo assim: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-z,0-9,A-Z,_-]+)\/?$ index.php?page=$1 [NC,L] RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ index.php?a=$1&busca=$2 [NC,L] No seu caso a primeira entrada é $_GET['page']. Nesse exemplo o mesmo é, mas como temos uma segunda regra temos o que vem depois de $_GET['page'] entra outro caso inserido $_GET['busca'] Ou seja se a url vier assim: https://site/entrada/carrinho Basta que no arquivo que eu incluir com $_GET['page'] eu tome as ações a partir de segunda entrada que seria $_GET['busca']. Esse exemplo com execução pode ser adquirido pelo meu GIT: https://github.com/Spell-Master/Get-UrlAmigavel/ Se por acaso venha a utilizar muitos parâmetros de entrada, meio óbvio que ficar criando dezenas de regras não é o ideal. Nesse post apresentei algo viável nessa situação: https://forum.imasters.com.br/topic/583448-como-fazer-url-amigável-com-variáveis-na-url/?tab=comments#comment-2280668
  14. Omar~

    Responsividade

    Pode-se adicionar isso a tag head <meta name="viewport" content="width=device-width, initial-scale=1.0" /> Assim você indica a escala inicial da página, que browsers vão se orientar por isso para aplicar o media query. Sem isso o browser nunca irá saber em qual escala de resolução está a página. Exemplo: <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Título da Página</title> </head>
  15. Claramente o chrome foi danificado. É muito comum isso quando se acessa pricipalmente blogs, e sites adultos, quando não se tem um sistema de proteção que ofereça um mínimo de segurança no caso seu o AVG. Sugiro a completa remoção do software e seus dados da máquina. 1 - clique com o botão direito sobre o ícone de atalho do chrome. Note se na caixa "Destino" depois de "chrome.exe" existe algo escrito além da àspa, se sim apague o restante do texto. 2 - Reinicie a máquina e faça a iniciação segura. 3 - Desistale o Chrome. 4 - Vá até o diretório: C:/Users/SEU_NOME_DE_USUARIO/Local/ E apague a pasta "google". 5 - Reinie a máquina e faça o logon normalmente. 6 - Reinstale o Chrome. Verifique se o problema persiste. Caso sim, o problema é mais grave, scarners podem encontrar a anomalia. Mas a melhor opção é a formatação do disco. E só adicinar o backup depois da instalação de um software para proteção de ponta... Sugiro o Kaspersky.
  16. Omar~

    Como fazer URL Amigável com variáveis na URL?

    Simples não? Tudo que entra e GET "url" ao qual temos o array, é só ir ap índice do array que contém essa informação. Isso é você quem vai controlar no código ao repassar os links.
  17. Nesse caso você terá que ter uma coluna na tabela para armazenar a data e a hora da última postagem, daí é só fazer a comparação com a data e a hora atual mais atual, só exibindo esse resultado. Só uma coisa queria ressaltar aqui: Você está lançando consultas dentro de loop, isso sobrecarrega demais e você perderá em performasse. O ideal é você fazer as consultas separadamente armazenar os valores daí manipular esses resultados. Há algum tempo me deparei com essa situação similar veja: https://forum.imasters.com.br/topic/580417-separar-resultados-com-base-de-outra-tabela/
  18. Omar~

    Tentando salvar dados em uma tabela

    https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/
  19. Omar~

    Como fazer URL Amigável com variáveis na URL?

    Existem diversas formas de trabalhar com urls amigáveis. Eu gosto de fazer assim: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 Então tudo que entrar depois do endereço do website passa ser uma string url mesmo com barras etc... O que faço é buscar todas as ocorrências das barras e separar em índices <?php /* * Isso poderia ser um método de classe que retornasse o array $url */ // Pegamos o valor que vem do apache pelo htacess url $filter = filter_input(INPUT_GET, 'url', FILTER_DEFAULT); // Se existir algum valor usamos se não o valor padrão será inicio $setUrl = empty($filter) ? 'inicio' : $filter; // Quebramos então em um array todas as ocorrencias de barras $explode = explode('/', $setUrl); // Caso haja algum valor nulo ou vazio ele será removido $url = array_filter($explode); var_dump($url); Então nesse caso (removi os acentos): post/1/tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico <?php $url[0]; // É "post" $url[1]; // É "1" $url[2]; // É "tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico" No mais é criar tratamentos para converter espaços em traços e acentos em letras comuns. E principalmente para remover códigos caso vá trabalhar com banco de dados.
  20. Putz foi só pensar um pouquinho que achei a solução. Bastava eu fazer outro loop em cima do array e verificar cada item. Segue a solução caso alguém no futuro caia de para-quedas aqui: function teste(e) { var click = e.target; var parente = NodeParents(click); var encontrado = null; for (var i = 0; i < parente.length; i++) { if (parente[i].dataset.alvo == 'alvo') { encontrado = true; break; } } if (encontrado) { console.log('Existe um parente com o "data alvo"'); } else { console.log(parente); } } function NodeParents(node) { var atual = node, lista = []; while (atual.parentNode != null && atual.parentNode != document.documentElement) { lista.push(atual.parentNode); atual = atual.parentNode; } return lista; } document.addEventListener('click', teste, false);
  21. Opa! Então eu to com um problema que preciso localizar se um elemento clicado possui possui algum de seus parentes um atributo. Logo esse click está "e é obrigatório que esteja" vinculado ao documento então não posso checar isso a partir dele, então o que eu fiz foi criar uma função que obtém todos os elementos antecessores ao qual ele(s) pertence(m). Nesse exemplo que preparei para demostrar a questão estou tentando saber se um elemento clicado possui algum parente com o atributo data. A função por sua vez me traz um array com todos os parente e bingo lá está o elemento com esse atributo, o problema que preciso entrar numa condição caso haja esse atributo entre os elementos da lista. Como deu para perceber não posso pegar esse valor pelo índice do array, tenho que saber se nesse array possui algum elemento com esse atributo. Para facilitar a situação da ajuda coloquei o código no JSFiddle: https://jsfiddle.net/SpellMaster/npfw1xhk/1/ Quem puder dar uma força aqui agradeço porque estou quebrando a cabeça numa coisa tão simples e não estou conseguindo achar uma solução.
  22. Omar~

    Modal

    Basicamente o que tens de fazer é uma função que receberá como parâmetro cada value do(s) input(s) dentro do form, a mesma função se encarrega de inserir esses valores dentro de cada input. Como eu já fiz uma ótima classe JS para modal vou apresentar o exemplo usando ela. Arquivos usados ModalShow Como primeiro passo insiro os arquivos e crio a arquitetura do modal: <script src="ModalShow.js" type="text/javascript"></script> <link href="ModalShow.css" rel="stylesheet" type="text/css"/> <div class="modal" id="editar-usuario"> <div class="modal-box"> <div class="modal-header"></div> <div class="modal-content"> </div> </div> </div> Note que o modal deve possuir um atributo #ID ao qual a classe vai saber qual modal é para gerenciar. Dentro do classificador modal-content coloco o formulário; aqui vou usar só um input para simplificar. <form method="post" action="arquivo_de_post.php"> <input type="text" name="identificador" id="id-user" value="" /> <button type="submit">Validar Formulário</button> </form> Então através do evento onclick aciono uma função enviando como parâmetro o id do usuário ao qual poderia ser outros dados. Dentro da função ataco o input preenchendo seu atributo value com o parâmetro recebido, logo então exibo o modal. Vejamos o exemplo completo: <script src="ModalShow.js" type="text/javascript"></script> <link href="ModalShow.css" rel="stylesheet" type="text/css"/> <?php $idDoUsuario = 10; // Simulando um ID do usuário recebido de uma query por exemplo ?> <button onclick="EditarUsuario('<?= $idDoUsuario ?>');">Editar usuário</button> <!-- Arquitetura do modal --> <div class="modal" id="editar-usuario"> <div class="modal-box"> <div class="modal-header"></div> <div class="modal-content"> <!-- Formulário --> <form method="post" action="arquivo_de_post.php"> <!-- esse input poderia ser type="hidden" coloquei text para melhor entendimento --> <input type="text" name="identificador" id="id-user" value="" /> <button type="submit">Validar Formulário</button> </form> <!-- Fim do formulário --> </div> </div> </div> <!-- Fim da arquitetura do modal --> <script> function EditarUsuario(id) { document.getElementById('id-user').value = id; EditarUsuario.prototype = new ModalShow('editar-usuario', false); EditarUsuario.prototype.open('Título para o modal', true); } </script> No entanto acredito que o melhor caminho como são vários inputs eu optaria por usar ajax. Que ao acionar o modal carregaria um arquivo internamente da janela informando algum dado. Esse arquivo faria uma consulta SQL para trazer os dados do usuário assim preenchendo cada input. Se quiser um exemplo fazendo isso está aqui: https://drive.google.com/file/d/1HEg_houJ4WO-YbHgGUwtrLQ39GnhZZiW/view?usp=sharing
  23. Olá @Rafael MS Se fosse meu caso, eu resolveria da seguinte forma: Usaria o Mozilla Firefox pois ele é mais eficiente nesses termos. Clicaria com o botão direito sobre a imagem e selecionaria "inspecionar elemento" Com a ferramenta aberta podemos ver toda formatação computada e ao lado o link para o(s) arquivo(s) CSS que está fazendo a manipulação do elemento. Alí você poderá ver qual arquivo e onde está sendo adicionado essa borda. É só ir ao arquivo então e eliminar ou comentar a instrução.
  24. Omar~

    Como pego o value sem o name?

    E porque você não usa a propriedade name no input?
  25. Omar~

    Dúvida no Formulário HTML com Condição

    <select id="seletor"> <option>Selecione uma opção</option> <option value="ativar">Sim</option> <option>Não</option> </select> <input id="caixa_de_texto" type="text" disabled /> <script> var select = document.getElementById('seletor'), input = document.getElementById('caixa_de_texto'), tipo; select.addEventListener('change', function () { tipo = this.value; if (tipo == 'ativar') { input.removeAttribute('disabled', false); } else { input.setAttribute('disabled', false); input.value = null; } }); </script> https://developer.mozilla.org/pt-BR/docs/Web/JavaScript
×

Informação importante

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