Jump to content

Williams Duarte

Members
  • Content count

    3919
  • Joined

  • Last visited

  • Days Won

    47

Williams Duarte last won the day on November 2 2017

Williams Duarte had the most liked content!

Community Reputation

431 Incrível

About Williams Duarte

Informações Pessoais

  • Sexo
    Masculino
  • Interesses
    Tecnologia, Engenharia de Software, PHP, Design Pattern, JavaScript, SQL, NoSQL e Empreendedorismo

Recent Profile Visitors

8800088 profile views
  1. Williams Duarte

    Não atualizar a div dentro de um setInterval

    Para resolver esse problema, você pode separar o conteúdo que precisa ser atualizado do conteúdo que não deve ser atualizado. A ideia é carregar o conteúdo dinâmico de uma maneira que a div estática não seja afetada. Podemos fazer isso através de AJAX, atualizando apenas a parte necessária. Vou fornecer um exemplo de código para isso: centro.php: Essa será a página que você está atualizando a cada minuto, contendo apenas o conteúdo dinâmico. index.html: A página principal que contém a div estática e a div dinâmica. centro.php <?php // Conteúdo dinâmico que será atualizado a cada minuto echo "<p>Conteúdo dinâmico atualizado em " . date("H:i:s") . "</p>"; ?> index.html <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Página Principal</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <div id="centro"> <div id="conteudo-dinamico"> <!-- O conteúdo dinâmico será carregado aqui --> </div> <div id="conteudo-estatico" style="background-color: red; color: white;"> <p>DIV QUE NÃO PODE SER ATUALIZADA</p> </div> </div> <script> function atualiza() { $.get('centro.php', function(data) { $('#conteudo-dinamico').html(data); }); } // Atualiza a cada 60 segundos setInterval(atualiza, 60000); // Carrega o conteúdo inicial $(document).ready(function() { atualiza(); }); </script> </body> </html> Explicação: centro.php: Contém apenas o conteúdo dinâmico que será carregado via AJAX. index.html: Carrega o conteúdo dinâmico na div #conteudo-dinamico e mantém a div #conteudo-estatico inalterada. JavaScript: A função atualiza faz uma requisição AJAX para centro.php e insere a resposta na div #conteudo-dinamico. setInterval chama a função atualiza a cada 60 segundos. O conteúdo inicial é carregado quando o documento está pronto com $(document).ready. Dessa forma, a div que não pode ser atualizada (#conteudo-estatico) permanece inalterada, enquanto o conteúdo dinâmico é atualizado a cada minuto.
  2. Williams Duarte

    Setar cookie para subdominio

    Exatamente, sem o "www". Ao definir o cookie como: setcookie("token", $valor, time() + (60 * 10), "/", ".dominio.com.br"); Você está especificando que o cookie deve ser acessível por todos os subdomínios sob dominio.com.br. O ponto antes de dominio.com.br é crucial porque indica que o cookie é válido para o domínio principal e todos os seus subdomínios. Se você colocasse "www.dominio.com.br", o cookie seria restrito apenas ao subdomínio www. Portanto, sem o "www" é a forma correta de garantir que o cookie seja compartilhado entre todos os subdomínios.
  3. Williams Duarte

    Verificar usuário

    Para verificar se um usuário já existe no banco de dados MySQL em tempo real e exibir uma mensagem assim que o foco sair do campo de entrada, você pode usar uma combinação de HTML, JavaScript (com jQuery ou Vanilla JS), e PHP para a comunicação com o banco de dados. Aqui está um passo a passo simples para fazer isso: 1. HTML Crie um campo de entrada no HTML para o nome de usuário: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Verificação de Nome de Usuário</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <form> <label for="username">Nome de Usuário:</label> <input type="text" id="username" name="username"> <span id="username-message"></span> </form> <script src="check_username.js"></script> </body> </html> 2. JavaScript Use JavaScript para verificar o nome de usuário assim que o foco sair do campo de entrada: // check_username.js $(document).ready(function() { $('#username').on('blur', function() { var username = $(this).val(); if (username.length > 0) { $.ajax({ url: 'check_username.php', type: 'POST', data: { username: username }, success: function(response) { $('#username-message').html(response); } }); } }); }); 3. PHP Crie um script PHP para verificar o nome de usuário no banco de dados: // check_username.php <?php $servername = "localhost"; $username = "seu_usuario"; $password = "sua_senha"; $dbname = "seu_banco_de_dados"; // Conectar ao banco de dados $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Conexão falhou: " . $conn->connect_error); } if (isset($_POST['username'])) { $username = $_POST['username']; $sql = "SELECT * FROM users WHERE username = '$username'"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo "Nome de usuário já existe."; } else { echo "Nome de usuário disponível."; } } $conn->close(); ?> Explicação: HTML: Cria um formulário simples com um campo de entrada para o nome de usuário. JavaScript: Usa jQuery para detectar quando o campo de entrada perde o foco (blur) e envia uma requisição AJAX para o script PHP. PHP: O script PHP recebe o nome de usuário enviado, consulta o banco de dados MySQL e retorna uma mensagem indicando se o nome de usuário já existe ou está disponível. Essa abordagem verifica o nome de usuário em tempo real e exibe uma mensagem apropriada assim que o usuário sai do campo de entrada. Se precisar de um tutorial mais detalhado, busque por termos como "AJAX username validation PHP MySQL". Espero que isso ajude!
  4. Williams Duarte

    Setar cookie para subdominio

    Você deve definir o domínio do cookie para o domínio principal com um ponto à frente, como .dominio.com.br Desta forma, o cookie token será acessível em qualquer subdomínio de dominio.com.br, incluindo usuario.dominio.com.br, www.dominio.com.br, e outros que você possa ter.
  5. Williams Duarte

    Carregamento preloading

    Adicione o índice [0] para acessar o elemento document.getElementsByClassName('conteudo')[0].style.display = "block";
  6. Para resolver o problema que você descreveu, precisa de uma consulta SQL que selecione os registros da tabela "itens" onde o produto escolhido, como "uva", apareça e todos os outros produtos nesse registro também estejam listados na tabela "produtos". Isso garante que todos os produtos relacionados em cada item estejam validados contra a lista de produtos aceitáveis. Dada a estrutura atual das suas tabelas e considerando que você quer filtrar por um produto específico e garantir que todos os produtos mencionados no registro estejam na tabela "produtos", uma possível abordagem é a seguinte: SELECT i.* FROM itens i WHERE 'uva' IN (i.prod_01, i.prod_02, i.prod_03, i.prod_04) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_01) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_02) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_03) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_04); Nessa consulta: A cláusula WHERE 'uva' IN (i.prod_01, i.prod_02, i.prod_03, i.prod_04) verifica se "uva" está em algum dos campos de produto em um registro da tabela "itens". As cláusulas EXISTS verificam se cada produto listado em um registro específico de "itens" está presente na tabela "produtos". Isso é feito para cada campo de produto (prod_01, prod_02, etc.). Se você estiver usando MySQL ou outro sistema compatível no OneCompiler, o código que forneci deve funcionar conforme abaixo. https://onecompiler.com/mysql/42b35kdf5 -- Criação das tabelas CREATE TABLE produtos ( id INT AUTO_INCREMENT PRIMARY KEY, produto VARCHAR(50) ); CREATE TABLE itens ( id INT AUTO_INCREMENT PRIMARY KEY, prod_01 VARCHAR(50), prod_02 VARCHAR(50), prod_03 VARCHAR(50), prod_04 VARCHAR(50) ); -- Inserção de dados na tabela produtos INSERT INTO produtos (produto) VALUES ('laranja'), ('maçã'), ('uva'), ('goiaba'), ('arroz'), ('feijão'), ('macarrão'), ('azeite'); -- Inserção de dados na tabela itens INSERT INTO itens (prod_01, prod_02, prod_03, prod_04) VALUES ('laranja', 'uva', 'arroz', 'feijão'), ('maçã', 'macarrão', 'goiaba', 'uva'), ('arroz', 'feijão', 'maçã', 'azeite'); -- Consulta para verificar a presença de 'uva' e validar os outros produtos SELECT i.* FROM itens i WHERE 'uva' IN (i.prod_01, i.prod_02, i.prod_03, i.prod_04) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_01) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_02) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_03) AND EXISTS (SELECT 1 FROM produtos p WHERE p.produto = i.prod_04);
  7. Williams Duarte

    Ler campos com caracteres especiais no xml

    Para acessar elementos no XML que possuem nomes de tags com dois pontos, como "dc:creator", você precisa lidar com namespaces. No PHP, o SimpleXMLElement tem métodos específicos para manipular namespaces. O namespace pode ser especificado diretamente se você conhece o URI $link = "noticias.xml"; $xml = simplexml_load_file($link); $namespace = $xml->getNamespaces(true); // Pega todos os namespaces do documento foreach ($xml->channel->item as $item) { $titulo = (string)$item->title; $url = (string)$item->link; $creator = (string)$item->children($namespace['dc'])->creator; // Acessa o namespace 'dc' echo "Título: $titulo\n"; echo "URL: $url\n"; echo "Criador: $creator\n"; }
  8. Williams Duarte

    Consulta SQL dentro de outra consulta

    Se você também quer garantir que os produtos listados contenham um item específico, você pode adicionar uma condição extra na cláusula WHERE para filtrar por esse item específico. Teste Online e Ajustado a Query https://onecompiler.com/mysql/42atjfa59 SELECT P.id, P.name, GROUP_CONCAT(I.name ORDER BY I.name) AS items FROM product P JOIN product_item PI ON P.id = PI.productID JOIN item I ON I.id = PI.itemID AND I.active = 'S' WHERE P.id NOT IN ( SELECT PI.productID FROM product_item PI JOIN item I ON I.id = PI.itemID WHERE I.active IS NULL ) AND P.id IN ( SELECT PI.productID FROM product_item PI JOIN item I ON I.id = PI.itemID WHERE I.name = 'mesa' ) GROUP BY P.id, P.name;
  9. Williams Duarte

    Data igual do facebook

    class Data { public static function ExibirTempoDecorrido($date) { if(empty($date)) { return "Informe a data"; } $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década"); $duracao = array("60","60","24","7","4.35","12","10"); $agora = time(); $unix_data = strtotime($date); if(empty($unix_data)) { return "Bad date"; } if($agora > $unix_data) { $diferenca = $agora - $unix_data; $tempo = "atrás"; } else { $diferenca = $unix_data - $agora; $tempo = "agora"; } for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) { $diferenca /= $duracao[$j]; } $diferenca = round($diferenca); if($diferenca != 1) { if($periodos[$j] == "mês") { $periodos[$j] = "meses"; } else { $periodos[$j] .= "s"; } } return "$diferenca $periodos[$j] $tempo"; } } Teste Online https://ideone.com/hj5Qok
  10. Williams Duarte

    Fazer busca no Banco de dados usando vários critério

    Vou lhe dar outro exemplo de como você pode realizar esta consulta utilizando IN. A consulta SQL inicial buscará na tabela variações todos os registros que contenham a palavra "casa" ou seu plural "casas", e em seguida verificará se os outros itens desses registros estão ativos. Como SQL tem limitações para verificar múltiplas colunas de uma forma dinâmica em diferentes tabelas, faremos uma abordagem que requer uniões múltiplas com a tabela itens. SELECT v.* FROM variações v JOIN itens i1 ON (v.item1 = i1.item OR v.item1 = i1.plural) AND i1.ativo = 'S' JOIN itens i2 ON (v.item2 = i2.item OR v.item2 = i2.plural) AND i2.ativo = 'S' JOIN itens i3 ON (v.item3 = i3.item OR v.item3 = i3.plural) AND i3.ativo = 'S' WHERE 'casa' IN (v.item1, v.item2, v.item3) OR 'casas' IN (v.item1, v.item2, v.item3) Processamento PHP <?php $pdo = new PDO('mysql:host=your_host;dbname=your_dbname', 'username', 'password'); // Sua consulta SQL $sql = "SELECT v.* FROM variações v JOIN itens i1 ON (v.item1 = i1.item OR v.item1 = i1.plural) AND i1.ativo = 'S' JOIN itens i2 ON (v.item2 = i2.item OR v.item2 = i2.plural) AND i2.ativo = 'S' JOIN itens i3 ON (v.item3 = i3.item OR v.item3 = i3.plural) AND i3.ativo = 'S' WHERE 'casa' IN (v.item1, v.item2, v.item3) OR 'casas' IN (v.item1, v.item2, v.item3)"; $stmt = $pdo->query($sql); // Verifica se há registros if ($stmt->rowCount() > 0) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "Registro encontrado: " . implode(", ", $row) . "<br>"; } } else { echo "Nenhum registro ativo encontrado."; } ?> Obs.: Troque os valores fixos por variaveis.
  11. Williams Duarte

    Upload de arquivos com javascript

    O problema está no retorno, não no script js, é como eu disse antes: " resposta esperada geralmente depende de como você configurou o servidor para lidar com o upload"
  12. Williams Duarte

    Consulta em duas tabelas

    Só utilizar operador UNION ALL https://www.devmedia.com.br/sql-utilizando-o-operador-union-e-union-all/37457 Exemplo de Uso: $consulta = " ( SELECT A.cod_evento AS cod, A.titulo_evento AS titulo, A.data_evento AS data, 1 AS ordem FROM tabela1 A ) UNION ALL ( SELECT B.cod_noticia AS cod, B.titulo_noticia AS titulo, B.data_noticia AS data, 2 AS ordem FROM tabela2 B ) ORDER BY data, ordem; "; $resultado = mysqli_query($conexao, $consulta) or die ("Erro"); while($busca = mysqli_fetch_array($resultado)) { print $busca['cod']; print $busca['titulo']; } Adapte a sua necessidade!
  13. Williams Duarte

    update em mais de um id, dependendo do id

    Para gerenciar updates condicionais em múltiplas subcategorias no banco de dados MySQL, baseando-se na existência de relações entre essas subcategorias, você pode adotar uma abordagem que utiliza uma coluna de referência adicional e variáveis de usuário. Essa metodologia permite atualizações agrupadas e controladas, otimizando a manutenção e a consistência dos dados. Você tem duas tabelas relacionadas: uma para categorias e outra para subcategorias. A tabela de subcategorias deve conter uma coluna adicional, ref_id, destinada a estabelecer um vínculo entre subcategorias que devem ser atualizadas conjuntamente. Essa coluna vai ser usada para agrupar subcategorias relacionadas que, quando uma delas é atualizada, as demais também devem ser. Armazenamento Temporário (@RefID): Para facilitar a execução condicional de updates, você utiliza uma variável de usuário, @RefID, para armazenar temporariamente o valor de ref_id da subcategoria alvo do update. Execução Condicional do Update: Primeiramente, você recupera e armazena o ref_id da subcategoria alvo na variável @RefID. Com base no valor armazenado, você realiza o update em todas as subcategorias que compartilham o mesmo. Se a subcategoria alvo não está relacionada a outras (ou seja, ref_id é nulo), o update é realizado apenas nela. Implementação SQL: -- Armazenar o ref_id da subcategoria alvo SET @RefID := (SELECT ref_id FROM subcategoria WHERE id = X); -- Atualizar todas as subcategorias relacionadas UPDATE subcategoria SET campo = valor WHERE ref_id = @RefID; -- Atualizar a subcategoria alvo se não estiver relacionada UPDATE subcategoria SET campo = valor WHERE id = X AND ref_id IS NULL; A estrutura permite atualizações precisas, seja em subcategorias individuais ou em grupos, de acordo com a presença de relações entre elas. Maiores detalhes leia o documentação! MySQL User-Defined Variables: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
  14. Williams Duarte

    Nodejs não consigo rodar uma Api de rotas

    Você está lidando com um conflito entre módulos ES e CommonJS no seu projeto Node.js. Quando você define "type": "module" no seu package.json, o Node.js espera que todos os arquivos .js usem a sintaxe de módulos ES6 (import/export). O problema é que o Consign, pelo que você descreveu, não suporta diretamente esta sintaxe. Aqui estão algumas abordagens que você pode tentar: Alterar o Tipo de Módulo: Modifique "type": "module" para "type": "commonjs" no seu package.json. Isso exigirá que você atualize seu código para usar require e module.exports em vez de import e export. Aqui está um exemplo de como seu index.js poderia ser alterado: const express = require('express'); const consign = require('consign'); const app = express(); consign() .include("models") .then("libs/middlewares.js") .then("routes") .then("libs/boot.js") .into(app); Importação Dinâmica: Se quiser manter os módulos ES, experimente usar import() dinamicamente. Essa é uma solução mais moderna, mas pode não ser totalmente compatível com a forma como o Consign carrega arquivos. Reavaliar o Uso do Consign: Dependendo da complexidade do seu projeto, talvez valha a pena considerar estruturas alternativas que não dependam do Consign, facilitando o uso de módulos ES diretamente. Configuração Adequada do Babel: Como você já utiliza o Babel, certifique-se de que está corretamente configurado para transpilar o código ES6+ para compatibilidade com a versão do Node.js que você está usando. Isso pode ajudar a manter a sintaxe de módulos ES6 e ainda assim ser compatível com bibliotecas que esperam CommonJS.
  15. Williams Duarte

    Campo de sequencial em uma select

    Fiquei curioso sobre isto, então resolvi pesquisar! SELECT ROW_NUMBER() OVER (ORDER BY nome_usuario) AS contador, id_usuario, nome_usuario FROM usuarios
×

Important Information

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