Jump to content

Omar~

Members
  • Content count

    1005
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Ai sim é uma boa iniciativa.... Só que tem que ver a qualidade do conteúdo....
  2. 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
  3. 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.
  4. Omar~

    accordion

    Vamos lá... Não deu para entender quem é a página inicial. Quando você redireciona, todo html é redefinido incluindo scripts. (Por isso não entendi também a lógica de redirecionar e manter, pois não se dar para saber quem de fato está executando o script). Der uma olhada nesse meu script accordion: https://github.com/Spell-Master/sm-web/blob/master/javascript/Accordion/ Nesse meu script você pode expandir um elemento através do método forceOpen Explique melhor sua situação porque podemos levar informações de página para outra através de protocolos GET.
  5. Omar~

    Redirecionamento não esta dando certo

    Provavelmente a lógica de sua função get não é a mais adequada. Então fazendo uma analise crítica do código chego a seguinte conclusão: <?php require_once('include/db_config.php'); require_once ('include/funcoes-site.php'); $slug = get('slug'); $configs = DBRead('cliente_config','*',"WHERE slug = '{$slug}'"); if (count($configs)) { // $configs é um array que possui 1 ou mais índices /* Então percorrer o array $configs ...... foreach ($configs as $config) {} */ } else { // $configs é ou não um array se for não possui nem 1 índice }
  6. Omar~

    Retornar o valor do COUNT na variavel

    Tente assim pois se a query retorna e não tem erro $sql é um array: echo ($sql[0]['Quantidade']); // Primeiro índice do array "0" foreach ($sql as $indice) { echo ("{$indice['Quantidade']}<hr />"); } Qualquer caso é só fazer o básico e necessário que é ver se os dados realmente existem e como eles são: echo ("<pre>"); var_dump($sql); echo ("</pre>");
  7. Omar~

    form action

    Cogitei duas questões: Você quer um form dentro de outro? Não é possível, existe uma arquitetura que todo HTML deve seguir. Quer mudar o action do form de acordo com o valor do PHP? Isso é possível pois o html é entregue pelo php da forma que compilar ele. Mas com o que mostrou não dar para entender a finalidade. Porque necessita dos critérios para designar o action do form e isso não dar para ter noção com o que postou. Entretanto se indo nesse no conceito que o seletor submete de um jeito e o botão de outro o próprio javascript pode manipular a tag <form>. <form id="identificador" method="POST"> <select id="seletor"> <option value="" selected=""></option> <option value="item1">item1</option> </select> <button onclick="peloButton()">Enviar</button> </form> <script> var formulario = document.getElementById('identificador'); function peloSeletor(e) { if (e.target.value == 'item1') { formulario.setAttribute('action', 'pegou_pagina_1.php'); formulario.submit(); } } function peloButton() { formulario.setAttribute('action', 'pegou_pagina_2.php'); formulario.submit(); } document.getElementById('seletor').addEventListener('change', peloSeletor, false); </script>
  8. Omar~

    form action

    Não sei qual o motivo da "gabiarra", mas acredito que <input type="hidden" /> no formulário resolveria apenas indicado seu value. Enfim para o procedimento pelo que relatou é simples.... <form action="pegou_pagina_1.php" id="pelo_botao" method="POST"> </form> <form action="pegou_pagina_2.php" id="pelo_seletor" method="POST"> </form> <select id="seletor"> <option value="" selected=""></option> <option value="item1">item1</option> </select> <button onclick="peloButton()">Enviar</button> <script> function peloSeletor(e) { if (e.target.value == 'item1') { document.getElementById('pelo_seletor').submit(); } } function peloButton() { document.getElementById('pelo_botao').submit(); } document.getElementById('seletor').addEventListener('change', peloSeletor, false); </script>
  9. 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.
  10. 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
  11. 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.
  12. Omar~

    Calculo de combustível

    Estou com dificuldade em elaborar o seguinte calculo: Um carro possui A de combustível de seu tanque Ao completar a 100 metros lhe restou B de combustível no tanque Seguindo esse ritimo de consumo quantos metros ele ainda vai poder percorrer? Parece simples não é, mas não estou conseguindo elaborar um calculo para isso....
  13. 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.
  14. 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.
  15. 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.
  16. 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...
  17. 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.
  18. 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
  19. Omar~

    Exibir Imagem Dinamicamente

    Tente assim: <img src="img/<?= $codigo ?>.jpg" alt="" />
  20. 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.
  21. 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'
  22. 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"); }
  23. <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.
  24. 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]
×

Important Information

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