Ir para conteúdo

POWERED BY:

Omar~

Members
  • Total de itens

    1339
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    php do zero

    Na verdade não existe a forma correta. Digamos que seja deixar o código simples, escalável e de fácil manutenção (orientação a objeto é o caminho nesse requisito). Acho que seu erro foi ter ido para o lado dos framework's que vão na mão oposta da programação, aprenda o mais possível do php e se no futuro sentir necessidade de usar algum auxiliar veja a viabilidade de enfim usar. Poderia lhe está indicando uma agência de ensino que conheço que tem bons cursos do PHP, mas seria fazer propaganda aqui. Mas posso sugerir como eu fiz no começo de minha jornada. Comecei adquirindo aplicações prontas, estudando-as e aprendendo sobre cada recurso diretamente pela documentação do PHP https://www.php.net/ e assim fui criando meus execícios e fazendo minha auto-didática. Além do mais você pode está procurando alguma coisa no youtub deve haver alguém que ensine algo de qualidade, ao qual duvido muito, mas não custa tentar.
  2. Omar~

    Aprender Javascript do zero

    Está aqui por onde começar: https://developer.mozilla.org/pt-BR/docs/Aprender/JavaScript A partir do link acima você terá tudo que precisa. Node é front-end NÃO FAÇA ISSO!!!! O pior má prática na web é essa bosta de jquery
  3. Omar~

    Calculo de combustível

    Entendi Motta 1 - Obter a diferença 2 - Distância dividido pela diferença Mais tarde irei tentar, depois dou um retorno.
  4. Omar~

    Login com nivel de acesso

    Primeiramente sugiro o uso de PDO ao invés do mysqli. Segundo, faça um tratamento melhor (mais refinado) do que entra em sua aplicação isso aqui não lhe traz segurança alguma, dar para quebrar o php e exibir o código em tela expondo seu código fonte (fora o XSS e sql-inject): Terceiro não use md5 use password_hash para salvar senha de usuário e password_verify para comparação. Sobre sua questão é simples: A tabela de usuário possuirá uma coluna (INT) para o nível de acesso, quanto maior o número, maior o nível de acesso do usuário. Ao logar irá fazer a leitura da tabela normalmente, com o resultado obtido da query você pode está fazendo: $_SESSION['acesso'] = $valor_da_coluna_de_nivel_obtido_da_query; swi if (switch($_SESSION['acesso'])) { case 1: // O que será feito se o valor for 1? break; case 2: case 3: // O que será feito se o valor for 2 e 3? break; default: // O que será feito se o valor não for 1, 2 ou 3? break; } O por aí vai nos demais locais da aplicação basta apenas verificar o valor da sessão de acesso para liberar conteúdo para o usuário logado.
  5. Omar~

    Query para valores duplicados

    Valew! Obrigado mesmo @Motta Deu certinho, havia me esquecido que também poderia está usando uma clausula. Tive recorrer a truques de manipulação de array no php para tal afim, já que com a query não estava obtendo o resultado desejado.
  6. Omar~

    Query para valores duplicados

    Opa! Então.... como eu faria uma query que me retornasse apenas colunas cujo seu valor seja duplicado estou meio confuso como proceder? Digamos uma query para exemplificar melhor: SELECT * FROM tabela E teria um resultado assim: $resultado = [ 0 => [ 'id' => 1, 'repetido' => 'abcde' ], 1 => [ 'id' => 2, 'repetido' => 'aaaaa' ], 2 => [ 'id' => 3, 'repetido' => 'abcde' ], 3 => [ 'id' => 4, 'repetido' => 'bbbbb' ], ]; Então no índice 0 e no índice 2 tenho a coluna com o valor repetido. Como eu poderia esta fazendo a query de forma que me retornasse somente os resultados que são repetidos? Lembrando que não indicarei o valor de busca, pois foi isso que me pegou e não estou sabendo como proceder... Até onde eu sei usei a lógica e não deu certo: SELECT id, repetido FROM tabela GROUP BY repetido HAVING COUNT(repetido) > 1 Pois dessa forma só me retorna o último índice repetido e eu preciso de todos que forem repetidos.
  7. Omar~

    Upload de Videos (PHP , AJAX)

    Francamente eu acho inviável upar vídeo pelo largo consumo de espaço em disco sendo favorável usar mídias como o youtub por exemplo. Mas se for o caso, tem esse script meu, serve para fazer upload ou download de "qualquer coisa": https://github.com/Spell-Master/sm-web/tree/master/javascript/FileTransfer Lembre-se de verificar se o arquivo é mesmo um vídeo e que o servidor sempre possui um limite na transferência de arquivo, antes de acionar a função de envio. Como proceder para essas questões é só seguir o mesmo conceito desse exemplo: https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/form-send.php#L15 Testa aí para ver se lhe serve...
  8. Omar~

    Ancora Scroll

    Não respondendo a sua pergunta... Não seria mais ágil usar só um margin-top no(s) elemento(s) ao invés de tantas tag's break? Só não ajudo com sua questão porque não mecho com o lixo do jquery se fosse javascript eu te ajudaria.
  9. Omar~

    Htaccess - Aplicar apenas duas regras URL amigável

    Tente assim... htaccess: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 A seguinte situação irá acontecer Quando não for um arquivo: RewriteCond %{REQUEST_FILENAME} !-f Quando não for um diretório: RewriteCond %{REQUEST_FILENAME} !-d Qualquer parâmetro da url pós endereço físico será considerado $_GET['url'] e será processado no arquivo index.php: RewriteRule ^(.*)$ index.php?url=$1 Então se o endereço seja: https://seusite/alguma_coisa/outra_coisa quer dizer que na verdade é: https://seusite/index.php?url=alguma_coisa/outra_coisa O que você tem que fazer é só separar cada índice, crie um arquivo qualquer e escreva um função como essa: <?php function filtrarUrl() { $filtro = filter_input(INPUT_GET, 'url', FILTER_DEFAULT); // Obtem o que existe na super-global GET $url = (empty($filtro) ? 'inicio' : $filtro); // Caso $_GET['url'] não tenha nada seu valor será "inicio" caso contrário será o que tenha $separa = explode('/', $url); // Separa todos os índices de $_GET['url'] pelas barras "/" $retorno = array_filter($separa); // Caso algum índice seja nulo ele é removido do array return ($retorno); // Retorna o array } Então no arquivo index.php fazemos um require no arquivo que contém a função e definimos o valor de url para o retorno da função: $url = filtrarUrl(); Teremos um array que no caso da url assim: https://seusite/entrada-a/entrada-b/entrada-c O valor de $url será: $url = [ [0] => 'entrada-a', [1] => 'entrada-b', [2] => 'entrada-c' ]; Assim sendo fica fácil manipular dinamicamente o conteúdo. Por exemplo no index.php switch ($url[0]) { case 'inicio': include ('arquivo_a.php'); // Arquivo que será incluso caso o endereço seja "https://seusite.com/" break; case 'alguma_outro_valor': include ('arquivo_b.php'); // Arquivo que será incluso caso o endereço seja "https://seusite.com/alguma_outro_valor/" break; default: include ('algum_coisa.php'); // Se caso algum valor não seja o que você definiu nessa bateria break; } Então se você deseja: https://seusite/produto/345 Verifique o valor de url[0] for produto se sim inclua o arquivo responsável e nesse arquivo verifique se o valor de url[1] é 345 "Acho que dar para entender" Na questão de arquivos CSS e JS imagens etc... Quando você reescreveu o apache, seu servidor sabe que esses índices criados só são uma reescrita, o browser não. Então se você está em https://seusite/teste. O browser acredita que você está em um diretório com nome "teste". Assim sendo uma imagem requisitada está assim: <img src="arquivo.jpg" alt="" /> Deveria está assim: <img src="../arquivo.jpg" alt="" /> O problema que se deixar o ../ caso não esteja em um sub diretório esses pontos e barras vão causar também perda da imagem. Para solucionar você deve verificar quantas entradas de url existem e aplicar o retorno de diretório a elas. Outra forma é usar o próprio HTML para tal, apenas adicionando a tag <base> como primeiro parâmetro da tag <head> exemplo: <!DOCTYPE html> <html lang="pt-BR"> <head> <base href="https://endereco_do_site.com"> Dê uma olhada nesse exemplo, é quase a mesma coisa que eu disse aqui: https://github.com/Spell-Master/Get-UrlAmigavel
  10. Omar~

    insert into

    Putz, imagino o quão vulnerável é essa aplicação, se uma simples aspa já é problema... Use a função: htmlentities Aspas simples serão convertidas na entidade HTML &apos; aspas duplas em &quot; além de qualquer outro caractere que não seja dígito ou alfabético, resolve também problemas de codificação no caso de acentuações, pois serão entidades e não letras. Experimente assim: mb_convert_encoding(htmlentities($string), 'UTF-8', 'ASCII') Assim pode-se salvar até unicode caso o usuário use emojis ou qualquer outro tipo de caractere não imprimível.
  11. Omar~

    Alterar dados selecionados pelo checkbox

    Leia: https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/ <?php $valor_do_input_check_box = $_POST['name_do_input_checkbox_no_html']; /* * Verifique antes se $valor_do_input_check_box é algum tipo de SQL-INJECT * Verifique antes se $valor_do_input_check_box é algum tipo de XSS * Verifique antes de $valor_do_input_check_box é um valor compatível com a coluna no banco de dados * Faça a limpeza $valor_do_input_check_box */ // A string da query: // UPDATE nome_da_tabela SET coluna_alvo = '{$valor_do_input_check_box}' WHERE coluna_de_busca = 'valor da busca'
  12. Use a função strtotime <?php $dataAtual = date('Y-m-d'); $horaAtual = date('H:i:s'); // Formato 24H /* $osDois = date('Y-m-d H:i:s'); // Assim você obtem data e hora atual */ $outraData = '2020-12-01'; $outraHora = '09:00:00'; $atual_data_e_hora = (strtotime($dataAtual) + strtotime($horaAtual)); $outra_data_e_hora = (strtotime($outraData) + strtotime($outraHora)); if ($atual_data_e_hora > $outra_data_e_hora) { echo ("A data e horário atual é maior que a outra"); } else { echo ("A outra data e horário é maior que a atual"); }
  13. <style> #menu { width: 100vw; height: 50px; background-color: black; position: relative } #menu.sroll { position: fixed; top: 0; left: 0; z-index: 1; background-color: red } </style> <div id="menu"></div> <script> var menu = document.getElementById('menu'); document.addEventListener('scroll', exemplo, false); function exemplo(e) { if (window.pageYOffset > 100) { // scroll acima de 100 pixel's menu.classList.add('sroll'); } else { menu.classList.remove('sroll'); } } </script> Ou você pode simplesmente definir que o menu é fixed no CSS que ele irá acompanhar o scroll do documento.
  14. children nada mais é que um array com o(s) filho(s) de algum elemento, então pegamos o texto contido nesse filho e enviamos para a função. Então obtemos o primeiro e o segundo filho Definimos que o valor da variável será o retorno da função clacularPreco enviando o texto contido no filho[0] e no filho[1] em calcularPreco a será o texto contido no filho[0] e b será o texto do filho[1]
  15. Não pois isso apenas traz um array com todos elementos cujo possuam o classificador referente. Mas vamos entender uma coisa antes: Você busca por Lhe trará a estrutura HTML contida nesse primeiro item encontrado, mas enquanto a algum segundo ou terceiro elemento? Assim como você mesmo colocou você possui 2 prateleira-preco-de. Então o mais sensato seria buscar o elemento pai e através dele chegar até os filhos. var _prateleira = document.getElementsByClassName('prateleira-wrap'), // Elemento pai _precoDe, _precoPor, _desconto, _precoDesconto; for (var _i = 0; _i < _prateleira.length; _i++) { _precoDe = _prateleira[_i].children[0]; // prateleira-preco-de _precoPor = _prateleira[_i].children[1]; // prateleira-preco-por _desconto = _prateleira[_i].children[2]; // desconto _precoDesconto = calcularPreco(_precoDe.innerText, _precoPor.innerText); if (isNaN(_precoDesconto) == true) { _desconto.innerText = 'Não há desconto no preço do produto'; } else { _desconto.innerText = 'Desconto de ' + _precoDesconto + '%'; } } function calcularPreco(a, b) { var floatA = parseFloat(extrairPreco(a)), floatB = parseFloat(extrairPreco(b)); return (((floatB / floatA) * 100) - 100).toFixed(2); } function extrairPreco(elemento) { return elemento.replace(/[^\d,]+/g, '').replace(',', '.'); }
  16. Omar~

    Select Dinâmico a partir de Outro Select

    Isto é algo bem simples porém, como proceder depende dos dados. E sim terá que usar JSON (para transferir o array do PHP) e javascript (para interação do usuário). O primeiro seletor seleciona um índice do array de retorno do banco, para que os outros dois sejam modificados. Aí que entra as questões: Isso é uma array que vai de 26 a 32 ou é só uma string? Isso é um array ou é só uma string? Veja: var dados = JSON.parse('<?= json_encode($resultado_da_query) ?>'); console.log(dados); Então terás o array executado no PHP disponível no javascript, então basta percorrer esse array no javascript usando um protótipo forEach, comparar o valor do seletor primário com algum índice desse array então criar as opções com a função createElement com os valores que desejar, que por sua vez são inseridas nos outros seletores. Se puder der um var_dump no resultado de sua query e poste o resultado do array para poder te ajudar. Se possível parte do código usado (Não precisa de tudo) Apenas a parte HTML do seletor primário e a linha que executa a query.
  17. Omar~

    @Media queries

    Dica complementar: Você pode está buscando por arquivos de folha de estilo que já cuidam desses assuntos corriqueiros de uso banal e simples. Um exemplo está nesse de minha autoria mesmo: https://github.com/Spell-Master/sm-web/blob/master/css/sm-default.css Nada mais que contém tudo que você precisa para arquitetura de todo layout de um documento html. Então para seu caso fica simples: <link href="sm-default.css" rel="stylesheet" type="text/css" /> <div class="container"> <div class="box-x-500 margin-auto align-center"> <div class="box-x-100 line-block bg-red"> Coloque aqui dentro o que desejar </div> <div class="box-x-100 line-block bg-green"> Coloque aqui dentro o que desejar </div> <div class="box-x-100 line-block bg-blue"> Coloque aqui dentro o que desejar </div> </div> </div> container: Se a resolução for de um tela Full-HD as margens estarão contidas para evitar desajustes de layout. box-x-500: Caixa com 500 pixel's de largura aproximados, mas quando a resolução for menor que isso ela se adapta a disponibilidade de tela. margin-auto: Automaticamente obtêm a distâncias laterais com relação ao se eixo de largura, fazendo o elemento se centralizar. align-center: Qualquer filho quando possível será movido para o centro. box-x-100: Caixa com 100 pixel's de largura aproximados. line-block: Faz com que o elemento se torne um bloco alinhado a seu parente mais próximo. Os demais bg-? eu apenas coloquei para exemplo; Lógico que se for para essa finalidade não vale a pena usar, mas como disse esse arquivo possui inúmeros recursos para compor toda estrutura do layout de forma responsiva. Vale a pena obter-lo, ler e testar seus recursos, qualquer outra dúvida sobre ele mande mensagem pessoal.
  18. Omar~

    Edge supera Chrome em testes de bateria e velocidade

    Para falar a verdade o Chorme a cada atualização dele o mesmo se consegue ficar pior ainda, lentidão de todos aspectos. Mas daí dizer que o lixo do Edge ser mais rápido "em qualquer quesito" é besteira. Tiro essa conclusão por experiência pessoal e imparcial, não por dados forjados por bajuladores da Microsoft ou mesmo uma simulação comprada.
  19. Sim tudo que colocar internamente a tag dessa div vai herdar suas propriedades.
  20. CSS: É só adicionar no index <div class="nomequalquer"></div>
×

Informação importante

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