Ir para conteúdo

POWERED BY:

Omar~

Members
  • Total de itens

    1327
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    Inclusão de + itens no banco

    No HTML/JS depende de como você vai criar novos itens. Mas o esquema é que itens adicionais podem ter seu name como um ARRAY. <input type="text" name="exemplo[]" /> <input type="text" name="exemplo[]" /> <input type="text" name="exemplo[]" /> No PHP var_dump($_POST); Assim sendo poderá ver que a chave "exemplo" é um array com a quantidade de itens exemplo[] inseridos no formulário.
  2. Omar~

    Como consumir uma função de consulta SELECT pdo?

    Sim, do contrário você está se referindo a um atributo da classe. Não, os valores tem que existir, do contrário os parâmetros usados pelo método terá o valor NULL. Nem dentro, nem fora, separe os dois divisores da programação, um é o funcional outro é o orientado a objeto. Porque você conseguiu? Para início de conversa o objeto $pdo não existia, logo nenhum dos métodos da classe PDO não existia por isso o erro. Mas daí você chama uma global (que pode existir ou não) para armazenar um valor que acredito eu que venha do arquivo "conecta.php". O ideal no seu cenário é o arquivo conecta.php ser uma class conecta, assim sendo essa classe é responsável por estabelecer a conexão com o banco de dados e armazenar a conexão em um atributo público para ser acessado por outras classes. Dessa forma você previne erros recursivos caso haja erros ou algum problema na conexão. (Ou seja se não conectar o problema é a classe que conecta, dividindo a responsabilidade de cada coisa dentro da aplicação). Não que você esteja errado, mas só para salientar. Usar classes significa que você não quer ficar tendo que repeti a mesma coisa, no geral usar uma classe é reaproveitar ao máximo dados. Se por exemplo o método entrada de cara retorna um valor que pode existir ou não você não pode reaproveitar esse valor. Ao invés de retornar o ideal é que ele armazene o valor em um atributo, em outro método o valor possa se verificado, só então outro método retorne o valor se de fato ele existe. Se entendeu a lógica quando você envia dados para uma classe essa classe pode conter vários métodos que agem distintamente com os mesmos dados. No resumo uma classe são um aglomerado de funções que compartilham entre si os mesmos dados. Do contrário o mais coeso é usar uma programação funcional.
  3. Omar~

    Cadastro PHP e Login na mesma página

    @Thiago Duarte Dica: Não dê ctrl+c e ctrl+v, isso não funciona no mundo da programação. Entenda a lógica, esse é o caminho. Seu caso é mais afundo que um um simples post... Talvez eu esteja sendo leviano, mas pelo que aparenta você primeiro precisa saber sobre protocolo POST e uso de super globais no caso posts e sessions; sem esse conhecimento por sua parte, qualquer ajuda aqui seria superficial. Me perdoes se não fui coeso, mas se tivesse esse conhecimento sobre tais afins sua dúvida estaria respondida por esse conhecimento.
  4. Omar~

    manter conteúdo visível

    https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage Obs.: Não precisa criar uma variável para armazenar o objeto, só irá consumir memória desnecessária. Nota: SE É PARA FICAR VISÍVEL, PARA QUE "display:none"?
  5. Omar~

    Assinatura de e-mail em HTML desconfigurada

    Tente usar o a propriedade background-image. Exemplo: De fato não sei se vai dar certo uma vez que essas coisas da microsoft são tudo mau feitas.
  6. Omar~

    HTML

    Verifique a estrutura html, se houver erros a coisa não funciona. Pelo trecho de código postado localizei tags sendo fechadas sem que estivessem sido abertas, o que já é o suficiente para não funcionar. Obs.: Se estiver rodando com algum modo re-escrita de url no apache também não funciona BOOKMARK. Nesse caso você pode está usando javascript através da função scrollIntoView rolar a página até o local.
  7. Dar uma olhada aqui: https://www.cssscript.com/tag/date-picker/ Talvez possa encontrar um script que atenda a sua necessidade, caso não pode-se editar algum desses conforme você deseja. Além do mais você pode está usando algum desses scripts com base para você criar um para te atender conforme você deseja.
  8. Omar~

    Iniciante php

    Servidor apache e um editor de texto qualquer. Para servidor local, indico : https://www.apachefriends.org/pt_br/index.html Siga esse vídeo para fazer a instalação corretamente já com os serviços ativos para seu sistema win10: Como ferramenta de trabalho substituindo o editor de texto use uma IDE, como sugestão indico a que uso: https://netbeans.apache.org/download/ Também é bom um editor rápido com integração de código, no seu caso windows: https://notepad-plus-plus.org/downloads/ O mais importante, estudar muito, "mas muito mesmo" a documentação do PHP: https://www.php.net/ Como sugestão, não que no windows 10 você não possa programar, mas seria conveniente você usar um sistema nativo de 99,9% de um servidor, no caso o linux. Assim você já vai se familiarizando e entendendo como a coisa toda funciona.
  9. Fácil é! E também não é, porque depende do resultado final. Para fazer o upload, no geral você tem obter o arquivo através da super global $_FILES Então mover esse arquivo para um local específico. Para alterar as dimensões no caso 300pixels. Você ao invés de mover o arquivo cria uma cópia com a função: imagecopyresampled. Para alterar o nome e salvar você uma das funções abaixo dependendo do formato final que você deseja salvando a cópia criada com a função anterior: imagejpeg imagepng imagebmp imagegif Veja essa classe para upload de imagem (só que ela só aceita imagens jpeg e png): https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php <?php require ('ImageUpload.php'); $upload = new ImageUpload(); $imageName = 'O nome que a imagem deve ter'; $tamanho = 300; // Se for maior que 300 de altura ou largura redimenciona para 300 mantendo o aspecto $upload->sendImage($_FILES['arquivo'], $imageName, $tamanho); No caso o $_FILES['arquivo'] irá buscar pelo valor de: <input type="file" name="arquivo" accept=".jpg,.jpeg,.png" /> Lógico que esse meu caso não estou verificando a naturalidade do arquivo enviado, se é uma imagem e se não é algo disfarçado de imagem. Você pode também está usando o javascript para ler a imagem na máquina do usuário, então recriar-la através de um elemento <canvas> então resgatar compilar-la em base64 e adicionar a string em uma <textarea> oculta. Quando submeter o formulário no backend você obtêm a string da textarea e com essa string criar uma imagem. A vantagem dessa segunda alternativa apesar de mais complexa é a praticidade para o usuário pois ele de fato não precisará fazer um upload.
  10. Omar~

    Pop-up toda ver que abrir o site.

    Primeiro um bloco na cara do usuário forçando a ver algo que a primeira mão não o interessa é uma estupidez e só irá poluir desvalorizar/site, provavelmente o usuário irá fechar a janela do seu site sem nem mesmo ler/ver. Muitos acreditam também que esses blocos são alguma forma de violar a máquina deles por isso saem sem mesmo esperar a página acabar de carregar (E alguns são mesmo). Aconselho você que crie um botão, bem visível para que o usuário possa clicar e ver as informações adicionais sobre o produto. No geral de uma googlada sobre "modal" ou acesse: https://github.com/Spell-Master/sm-web/tree/master/javascript/ModalShow Por exemplo depois da estrutura HTML do modal (se adicionar o js, o css a sua aplicação ambos contidos no link acima"): <script> var modal = new ModalShow('identificador'); modal.open('Título do Modal', true); // O modal irá abrir quando a página terminar de carregar e terá um botão para fechar setTimeout(function () { // Mo modal vai fechar sozinho depois de 5 segundos modal.close(); }, 5000); </script>
  11. Omar~

    Adicionar transição de blocos

    Estou com uma tarefa aqui e não estou conseguindo criar uma lógica para adicionar uma transição entre os elementos. Segue da seguinte forma: Tenho uma caixa central que irá abrigar 3 ou mais caixas. Cada caixa filha tem exatamente as mesmas dimensões da paixa mãe. Ao executar a função a caixa que está ao centro move-se para esquerda e a da direita também assumindo a posição da caixa anterior. Quando por exemplo antes de chegar a última filha, a primeira que se moveu toma o lugar da ultima assim tornando-se uma espécie de loop infinito. Ou seja depois da última filha a primeira toma o lugar dela para que a atual última possa se mover ao centro. Exemplo: / [1] / [2] - [3] "clicou em avançar torna essa sequência" [1] / [2] / [3] Até aqui tudo bem, bastando eu clonar a primeira caixa atual, remover-la então logo em seguida adicionar a cópia no final. Porém aqui que entra a questão pois teria que adicionar uma animação de transição, de forma que que as caixas movam-se lentamente para esquerda. Aqui está o esboço de teste: HTML: CSS: Javascript: Eu pensei em recursos como marginLeft e translateX, mas em ambos casos sempre terei o problema que se eu mover negativamente as caixas, ao remover qualquer uma que é o caso da primeira ir para último, todas as demais caixas vão ficar fora da caixa central. Quem tiver alguma ideia como adicionar essa transição de movimento, ficaria grato com a ajuda.
  12. Omar~

    Como suspender o parâmetro $_GET se o select estiver vazio?

    Sim daria, no entanto o formulário deve ser totalmente manipulado por script. Aconselho que use o protocolo POST e apenas valide os dados pelo backend, se for vazio você não precisa manipular. Mas podemos redirecionar informando na url só aquilo que não estiver vazio no formulário. <form method="GET" action="" onsubmit="return funcaoExemplo(this)"> <input type="text" name="caixa_de_texto" placeholder="Digite algo se quiser" /> <select name="caixa_de_selecao"> <option value="">Selecione se quiser</option> <option value="opção 1">Primeira opção</option> <option value="opção 2">Segunda opção</option> </select> <button type="submit">Enviar formulário por GET</button> </form> <script> const URL_DESTINO = 'https://endereco/arquivo.php'; function funcaoExemplo(formulario) { var parametros = '?'; for (var i = 0; i < formulario.elements.length; i++) { if (formulario.elements[i].value != '') { parametros += (parametros.length !== 1 ? '&' : '') + formulario.elements[i].name + '=' + codificarURL(formulario.elements[i].value); } } if (parametros.length > 1) { window.location.href = URL_DESTINO + parametros; } return (false); } function codificarURL(str) { return (encodeURIComponent(str).replace(/['()]/g, escape).replace(/\*/g, '%2A').replace(/%(?:7C|60|5E)/g, unescape)); } </script> De qualquer forma você terá que validar tudo antes de executar, por isso aconselho mesmo usar o POST e evitar manobras e artimanhas para algo desnecessário.
  13. Se for só pela questão de um "modal" fica fácil te ajudar, mas se entramos no meios de "pagamento/valores de produto" complica porque teríamos que ter os mínimos detalhes do seu modelo de negócio. Ao modal. 99% CSS, 0,9% HTML e 0,1% javascript. Começando pelo html: Criamos duas tag DIV elas ão ficar no fim do escopo do documento html, basicamente uma div mãe e uma filha. A mãe vai ser o modal em sí "o plano de fundo" e a filha vai ser a caixa interna. <div id="modal"> <div class="conteudo_modal"> Aqui dentro você pode colocar qualquer outra tag ou qualquer outra coisa que você querer </div> </div> Para o CSS Na mãe temos que sobrepor ela a todo conteúdo do documento por isso usando os valores fixed e z-index, sendo o fixed para que possa acompanhar a página e o z-index para cobrir. Como plano de fundo da mãe podemos usar o preto rgb em alpha. Já a filha colocamos um plano de fundo branco definimos sua altura e largura conforme o desejado. #modal { z-index: 1; /* Se houver outro z-index esse valor aqui tem que ser maior */ position: fixed; top: 0; left: 0; height: 100%; width: 100%; background-color: rgba(0,0,0,.5) } #modal > .conteudo_modal { height: calc(100% - 20px); max-width: 300px; background-color: #fff; margin: 10px } Com isso você já pode está personalizando seu modal aí conforme seu gosto antes de prosseguir adicionar cabeçalho, botão de fechar e tudo mais. Agora vamos esconder ele porque o usuário vai clicar em algo para mostrar então adicionamos isso ao css.... #modal.esconder { display: none } E adicionamos esse classificado na tag cujo colocamos o identificador #modal <div id="modal" class="esconder"> Agora o javascript: Basicamente é localizar o #ID modal e remover ou adicionar o classificador esconder. function controleModal() { document.getElementById('modal').classList.toggle('esconder'); } Então é só colocar o evento "click" em um botão. O próprio botão de fechar pode usar a mesma função. <button onclick="controleModal()">Exemplo</button> Por fim vamos supor que eu precise do modal para vários produtos, eu não precisaria criar um modal para cada e sim ter uma função que modelasse o conteúdo conforme minha necessidade. Então nesse exemplo abaixo todo o código usando apenas um modal para mais de um suposto produto, o que também poderia ser para qualquer outra coisa. Lógico que isso é um exemplo genérico, apenas para mostrar uma forma de criar diferentes coisas sem precisar ficar replicando código. E é simples um modal não é nada mais que que um elemento que você oculta ou esconde conforme for a questão. Veja esse: https://github.com/Spell-Master/sm-web/tree/master/javascript/ModalShow Nesse script você tem algumas outras funcionalidades para o modal, basta que você edite o CSS conforme desejar.
  14. Omar~

    PHP Criar sites dinâmicos sem CMS

    Apenas digo que jamais entregaria uma aplicação para um cliente usando o WP. Odeio tanto o wp que se eu entrar em detalhes posso ofender quem usa ou necessita da plataforma. Você não precisa do wp para criar um site, como também não precisa saber programação para mexer com wp. Qualquer leigo pode criar seu site/blog usando o wordpress pois essa a finalidade da plataforma (sei lá como chamar o wp) E sim é mais fácil com o wp pois vai poupar várias horas criando lógicas da aplicação. Pois o wp isso já está feito bastando ao usuário modular ele ao objetivo final. Mas no final tudo vai depender da proposta do cliente, se o que ele deseja não é muito específico pode-se sim usar o WP, principalmente se quem se propõe entregar a aplicação não é capaz de desenvolver algo de qualidade equiparável ou superior Isso é mito. Não passa de uma mentira contatada repetitivamente que se acaba parecendo verdade.
  15. Omar~

    validar campo com preg_match

    Direto ao ponto: Não entendi as minimas em relação a pergunta. Resumo: Direto ao ponto; qual é a duvida mesmo?
  16. Olha,.... você irá precisar de um registro; Tipo: Fulano armazenou algo, você cria um registro em um banco de dados ou arquivo... esse registro diz que existe X e o link para download é Y. E se fulano acessar Y irá fazer o download de X. É nesse contexto
  17. Omar~

    Navegar por itens de um array

    A questão aqui fica no encargo de como os dados trafegam do serve-side (backend) para o client-side (javascript). Somente dizendo como você repassa esses valores você já tem 50% da questão resolvida. Bom vendo isso presumo que seja um objeto uma vez que o javascript não usa arrays multi-dimensional: Como um objeto no geral nunca deveria ser indexado com um inteiro temos pegar o total de chaves dentro de um loop contando seus índices de acordo com a volta do loop, assim sendo fácil identificar qual chave do objeto temos o array para manipular. <div id="botao_aqui"></div> <div id="modal" style="display: none"> <div id="resultado_aqui"></div> </div> <script> var objeto = { 0: [1, 'Banana', '3.00', '...'], 1: [2, 'Maça', '4.00', '...'], 2: [3, 'Abacaxi', '5.00', '...'] }; var botaoAqui = document.getElementById('botao_aqui'), modal = document.getElementById('modal'), resultadoAqui = document.getElementById('resultado_aqui'), botao = null; for (var i = 0; i < Object.keys(objeto).length; i++) { botao = document.createElement('button'); botao.innerHTML = 'Visualizar &gt; ' + objeto[i][1]; /* No caso o id do array for 3 menos um então a chave o objeto é dois * E é atravéz desse numero que podemos regatar o array do objeto alvo * objeto[i][0] - 1) */ botao.setAttribute('data-chave', (objeto[i][0] - 1)); botao.addEventListener('click', abrirModal, false); botaoAqui.appendChild(botao); } function abrirModal(alvo) { var dados = objeto[(alvo.target).dataset.chave]; resultadoAqui.innerHTML = '<p>ID(chave) : ' + dados[0] + '</p>' + '<p>Texto : ' + dados[1] + '</p>' + '<p>Preço : ' + dados[2] + '</p>' + '<p>Pontos : ' + dados[3] + '</p>'; modal.removeAttribute('style'); } </script> Também nesse caso você vai se esbarrar nesse contexto, pois os dados já foram renderizados para o cliente, ou seja vão existir na tela dele mesmo que tenham sido alterados ou excluídos. Então você tem duas alternativa: 1 - Ao invés de resgatar os dados já renderizados quando abrir o modal, você executa um ajax buscando essas informações, se elas não existirem mais você toma as medidas cabíveis de acordo com a sua necessidade. 2 - Usar um sistema como o socket.io por exemplo, para que quando essas informações sejam alteradas no servidor elas sejam renderizadas novamente para todos os usuários.
  18. Omar~

    Pedir permissões ao usuário

    Depende de como você está "tocando o som" ou como está implementando a "notificação" Vejamos algo como isso: <audio id="tocar_audio"> <source src="arquivo_de_som.wav" type="audio/x-wav"> </audio> Então por script tocamos o áudio: document.getElementById('tocar_audio').play(); Porém se o usuário bloquear execução de mídia no website, você não poderá fazer nada a respeito. Além do mais se estiver usando a API de notificação, saiba que grande parte dos usuários bloqueiam o uso dessa API, eu mesmo sou um deles uma vez que esse recurso é abrir uma brecha enorme na segurança da máquina.
  19. Omar~

    Melhoria de código constante com self::

    Tente usar um atributo para armazenar o valor, uma vez que uma contante como o próprio nome diz é contante e não pode ser alterada uma vez que já foi criada. class Query { private static $atributo_qualquer; /* Separei em dois métodos só por exemplificar mesmo */ public static function definirValor($const) { self::$atributo_qualquer = $const; } public static function getConst() { return (self::$atributo_qualquer); } } Você não apresentou os erros, e nem sei como e onde vai ser usado o valor passado por parâmetro, no entanto acredito que usando um atributo pode suprir qualquer eventual problema.
  20. Omar~

    Como diferenciar imagens repetidas no upload de imagem ?

    Antes que faça o insert execute a query: "SELECT arquivo FROM galeria WHERE arquivo = '{$nome_foto}'"; Assim você terá todos os registros que possuem o mesmo nome, fazendo então a contagem dos resultados você pode salvar o mome concatenado. $nome_final = $nome_foto . CONTAGEM_DE_RESULTADOS; Para mais detalhes veja: https://www.php.net/manual/pt_BR/mysqli-result.num-rows.php
  21. Omar~

    Janela Modal com Slide Show

    Seria isso? https://github.com/Spell-Master/sm-web/tree/master/javascript/ImageGalery
  22. Omar~

    Problema de imagem

    O que chama a atenção também são endereços distintos (tecnoclean & tecnocleanct) Pode ser o apache, tanto um modo de re-escrita quanto um bloqueio de acesso a diretório. Até mesmo um replaceState ou pushState do javascript manipulando a url antes do css carregar, então nesse caso o css busca a imagem a partir do endereço real mas o browser não o acha porque a url é diferente do destino. Tente colocar o endereço completo das imagens no css background-image: url('https://SITEURL/imagens/principal.png'); Se assim não funcionar é porque você não pode acessar o diretório das imagens ou mesmo as imagens não existem, ou o endereço está errado. Desse modo se javascript manipule a url as imagens serão carregadas pelo local onde estão sem pegar a referência atual da url carregada. Pode ser que contorne o apache também, mas não sei dizer se realmente funciona, (se estiver bloqueado o acesso ao diretório é certeza que não vai carregar mesmo)
  23. Omar~

    Mudar a cor padrão do layout com css, js, php

    No rodapé aqui do fórum você tem esse recurso. Uma alternativa seria usar um sessão para armazenar o "tema" que o usuário selecionou em uma sessão. Sinceramente acho que isso é uma besteira, mas minha opinião não importa. Como a ideia é só mudar a cor vou abordar o uso do próprio css padrão que desenvolvi, apenas mudando sua paleta de cores: <?php session_start(); $_SESSION['nome_do_css'] = (isset($_SESSION['nome_do_css']) ? $_SESSION['nome_do_css'] : 'exemplo'); ?> <link href="sm-default.css" rel="stylesheet" type="text/css" /> <link href="<?= $_SESSION['nome_do_css'] ?>.css" rel="stylesheet" type="text/css" /> Note que gravamos em uma sessão o nome do arquivo que vai mudar a coloração disponível no CSS, o mesmo poderia ser feito usando um cookie caso queira que o tema continue alterado mesmo depois que o usuário fechar seu navegador. Reparando também que o arquivo ao qual vai mudar o esquema de cores vem depois, desse modo re-escrevemos propriedades do primeiro css carregado. Agora vamos ao css: Nesse meu css que é encontrado nesse endereço Podemos ver o uso da variável root :root { --white:#ffffff; --black:#333333; --grey:#808080; --red:#d42020; E mais adiante no arquivo vemos o uso dessas vars em esquema de cor: .text-white, .text-white-hover:hover {color:var(--white) !important} Então se eu criar outra folha de estilo e adicionar por exemplo: :root { --white:red; O que vai acontecer é que toda vez que o classificador text-white for carregado ao invés o texto ser branco ele será vermelho, e assim sucessivamente para todas as demais propriedades: <span class="text-white">Um texto escrito em barnco ou vermelho dependendo do valor de "--white:"</span> Bom, eu usei o meu arquivo para exemplificar, mas esse é o esquema basta que tenha um arquivo css para definir as propriedades com o nome relacionado ao "tema" que o usuário escolher E para não entrar em outras questões, para que o novo sema seja válido a página deve ser recarregada. Dar para alterar sem recarregar mais daí é outra história.
  24. Omar~

    Problema de imagem

    O problema não é PHP do contrário nem você teria erro de localização das imagens. O arquivo css que carrega as imagens está na raiz do diretório css ou em um sub diretório? Nesse seu caso: Saia de dentro de css e entre dentro de imagens. Nesse outro caso: background-image:url(imagens/principal.png); Dentro de css entre em imagens. Seguindo a imagem que você colocou esse é o problema. O que pode está acontecendo que um arquivo.css com os endereços errados nas imagens está em cache, então você deve eliminar esse cache então carregar a aplicação novamente já com o arquivo.css com os endereços corretamente.
  25. Omar~

    Hover na Imagem mudar a cor do paragrafo

    <style> p.a { color: white } div.div1:hover > p.a { color: red } </style> <div class="div1"> <p class="a">O melhor Café</p> <p class="b">Esse não muda a cor</p> </div> Obs.: É má prática usar nomenclatura de tag com caixa alta (letras maiúsculas)
×

Informação importante

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