Ir ao conteúdo

DiF

Moderador
  • Posts

    14.206
  • Cadastrado em

  • Última visita

Tudo que DiF postou

  1. @Fernando V Nogueira Para responder a essa dúvida, preciso entrar no mérito de modelagem de banco de dados. Basicamente, o banco de dados possui normas formais, a fim de evitar inconsistências e problemas. Você tem aí duas tabelas, onde o orçamento é dependente da tabela de clientes. Naturalmente, precisa haver uma relação de 1:N entre essas duas tabelas. Porém, para juntar as duas em uma só, ou você cria uma View ou você cria uma outra tabela que faz um relacionamento de N:N entre essas duas. Porém, antes de pensar nisso, você precisa modelar seu banco de dados, aplicando pelo menos a 1NF e a 2NF. Para isso, você precisa criar novas tabelas, para separar alguns dados Por exemplo, a tabela orçamentos, remova o campo cliente, pois esse dado já consta na tabela clientes, pois é o campo "fantasia", a descrição de serviço, altere para receber um valor ID de chave estrangeira. Dito isso, você vai criar uma nova tabela chamada "servico", onde vai constar os tipos de serviços. Talvez, queira aplicar isso também, no campo equipamentos, pois se você tem um campo no formulário para escolher o tipo de equipamento, é melhor do que escrever... então aí uma nova tabela é criada para equipamentos. Na tabela de clientes, remova os campos de whatsapp e telefone pois estes dois, você irá criar uma nova tabela para contatos, onde nesta tabela recebe o campo ID do cliente. Se o cliente tiver por exemplo mais de um endereço, em caso de filiais, é interessante também criar uma nova tabela para conter estes dados. Lembrando que para fazer os relacionamentos, é necessário que definas um índice(index) na tabela que vai receber a chave estrangeira.. e definir para que quando uma linha da tabela mandante(clientes) for excluida, uma linha referente a ela seja excluída nas outras também, para evitar inconsistências. Você pode fazer isso tudo pelo phpmyadmin e para fazer o relacionamento em si, pode usar o modo designer do phpmyadmin. Dito tudo isso, fazendo as tabelas e relacionamentos corretamentes, você poderá fazer a tabela N:N que juntará tudo... No caso esta tabela de N:N, só receberá campos IDs de chave primária... e ficaria algo assim: id id_cliente id_orcamento 1 76 14 E a consulta para pegar TODOS os dados de TODAS as tabelas e juntar em uma só seria algo assim: SELECT clientes_registros.razaosocial, clientes_registros.fantasia, clientes_registros.telefone, clientes_registros.cep, clientes_registros.estado, clientes_registros.cidade, clientes_registros.endereco, clientes_registros.bairro, orcamentos.quantidade, orcamentos.valorunit, orcamentos.desconto, orcamentos.resultado, equipamentos.equipamento, servico.descricaoserv FROM tabela_final INNER JOIN clientes_registros ON clientes_registros.id = tabela_final.id_cliente INNER JOIN orcamentos ON orcamentos.id = tabela_final.id_orcamento INNER JOIN equipamentos ON equipamentos.id = orcamentos.equipamento INNER JOIN servico ON servico.id = orcamentos.descricaoserv WHERE id_ciente = 76 Lembrando, que isso só irá funcionar SE e somente SE, você fazer corretamente os relacionamentos e tabelas. Nesse exemplo, desconsiderei criação de nova tabela para contatos e endereços... caso crie, aí teria que acrescentar mais um INNER JOIN para cada tabela nova criada. No WHERE, pelo php, você substitui o valor 76, pela variável $id_cliente... E uma dica, ao criar tabelas, sempre use nomes no singular. "cliente", "orçamento".. e etc.. é mais pelas boas práticas.
  2. @Hikari_Belle Isso não é artefato. É um problema das placas da Nvidia. Se você usa o GeForce experience, experimenta abrir com ctrl + Z .... dai clica na engrenagem. Nas opções que aparecem, vai na última sobre monitoramento de desempenho e desativa o recurso de flash de latência. Se isso não resolver, no vídeo, o rapaz mostra outros passos que podem ser feitos.
  3. @Orlando Namba Retira o float left da class .col-100 se quiser ajustar o logo, faça somente nele... isso vale para o menu. Além disso, vejo que está aplicando mal o elemento "main". Este elemento é destinado ao conteúdo principal... por isso, dentro de header, separe por "section"
  4. @Nomeador Prezado, por gentileza compartilhe a solução encontrada por você. Assim você ajudará os demais que estiverem com o mesmo problema.
  5. @OIniciante Não é bem assim que funciona, rsrs bem que seria bom se fosse simples assim. Mas basicamente, o que você precisa fazer é quando submeter o formulário, buscar na tabela do banco de dados e comparar. Mas antes disso, você precisa modelar seu banco de dados corretamente. Vamos supor que você tem a seguinte estrutura: usuario( adote sempre o email da pessoa como login, essa prática, faz com que a pessoa não esqueça o login dela) Id nome email senha 1 Fulano [email protected] 123 2 Beltrano [email protected] 321 3 Ciclano [email protected] 456 horarioMarcado ID ID_usuario horarioMarcado 1 1 2023-02-10 16:00:00 Basicamente essa tabela de horario marcado, recebe o campo ID_usuario, sendo como chave estrangeira da tabela usuario, no caso ali, o Fulano marcou o horario para as 4 da tarde. Quando o Beltrano for marcar o horário, você tem opções.... Por exemplo antes, fazer uma verificação para remover o horário daquele dia, ou depois, para informar que já tem esse horário marcado... Se escolher fazer a primeira opção, você terá que montar manualmente um calendário... Por isso, a segunda opção acaba se tornando a escolha de muitas pessoas, por ser mais fácil. Gosto muito de usar o plugin date time picker, pois ele é bem clean e bonito e atende aos requisitos de informar hora por hora. https://www.jqueryscript.net/time-clock/Clean-jQuery-Date-Time-Picker-Plugin-datetimepicker.html Assim que você já tem o formulário para enviar a data e hora.... No PHP você compara assim: $horario = $_POST["horario"]; include 'conexao.php'; $consulta = mysqli_query($conexao, "SELECT horarioMarcado FROM horarioMarcado WHERE horarioMarcado = $horario"); $dado = mysqli_fetch_object($consulta); //se o $dado->horarioMarcado for diferente de zero if($dado->horarioMarcado != 0): echo "Esse horário já está marcado, por favor escolha outro" else: //faz aqui o processo de cadastro no banco de dados com o horário desejado endif; Veja bem, isso é apenas um exemplo, não copie, estude como ele deve ser implementado.
  6. @OIniciante Basicamente, tudo que você precisa fazer é na hora do agendamento consultar se já existe uma data já agendada. Tem N formas de fazer isso... por exemplo criando um calendário baseado no mês e dia e hora.. A partir daí... fazer uma verificação se existe o cadastro.. se existir, mostrar que já existe... senão, faz o cadastro.. Pode por exemplo no menu de agendamento, já informar quais dias e horarios disponíveis... enfim.. boa sorte
  7. Tópico do mês de Fevereiro/2023
  8. Caros usuários, este é o tópico mensal que deverá ser usado para discutir promoções de jogos, o que inclui descontos e produtos gratuitos por tempo limitado, em todas as plataformas e distribuidoras. De forma a garantir a organização, por favor mantenham o foco nas promoções, sendo as dúvidas paralelas direcionadas para tópicos próprios. Este tópico será trancado no dia 28/02/2023, sendo criado e destacado novo tópico para o próximo mês. Tópico do mês anterior:
  9. @João Vitor Pinheiro dos Sa Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  10. @gaby2830130121 Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  11. @gaby2830130121 Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  12. @fadul25 Você pode fazer isso com ambas linguagens. Baasicamente você coloca nas variáveis o ano, e hora... dai monta o arquivo zip.. exemplo em javascript var today = new Date(); var dd = String(today.getDate()).padStart(2, '0'); var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0! var yyyy = today.getFullYear(); filename = mm + '-' + dd + '-' + yyyy + '.zip'; //testar o nome do arquivo gerado no console do navegador console.log(filename); Ou você pode simplificar o código com essa linha: var filename="qualquer_nome_" + new Date().toJSON().slice(0,10) + ".zip"; //testar o nome do arquivo no console console.log(filename)
  13. @KM_aguiar Basicamente é questão de prática. Eventualmente a medida que você vai entendendo o proprósito das tags, vai automaticamente colocando elas no lugar certo. Mas, basicamente, você pode decorar ou sempre manter consigo e um bloco de notas por exemplo a estrutura básica do HTML. E também, não é necessário que você decore absolutamente tudo. Os ambientes de desenvolvimento( IDE) estão aí para te auxiliar... por exemplo o que sempre usei foi o Eclipse for php. Com essa IDE, você pode criar um template da estrutura básica, que sempre que criar um novo documento HTML ele vai já vir com tudo que você já definiu... por padrão eu gosto de deixar definido a estrutura básica e as chamadas de bibliotecas jQuery que eu sempre uso. . Você pode deixar do jeito que você quiser. Além disso, no Eclipse, e talvez na maioria das IDEs, existem uma combinação de teclas que quando você começa a digitar a tag, ela te dá opção de auto completar ou simplesmente escrever parte da tag e com um botão ela já insere a tag completa... enfim... para questões de estudo, até recomendo sempre escrever letra por letra, simbolo por simbolo. dessa forma você vai exercitando e acostumando sua memória... mas na questão de efiência e produtividade, usar os recursos que a IDE te oferece para encurtar tempo é uma boa escolha. Boa sorte nos estudos.
  14. Prezado usuário, As licenças em questão são provenientes do que chamamos de "mercado cinza" de keys. São baratas porque são ilegais. Essas licenças são obtidas de maneira ilícita, por meio de desvios - a partir de fabricantes de computadores, Youtubers, influenciadores, universidades e instituições públicas - ou mesmo compradas com cartão de crédito roubado. Isso continua sendo pirataria conforme os termos da Microsoft. As únicas licenças legais são vendidas pela própria Microsoft ou por revendedores oficiais credenciados em seu site. Pedimos que você dê uma olhada no tópico abaixo: Diante do acima exposto, e evitando perpetuar qualquer tipo de discussão sobre pirataria, estamos fechando o tópico. Contamos com a compreensão de todos. Atenciosamente, Equipe Clube do Hardware
  15. @programador novato Sim, vai poder programar sem problemas algum... Naturalmente, usar programas mais pesados como o vscode ou netbeans pode acarretar em alguma travada.... mas existem alternativas mais leves como o Eclipse for PHP por exemplo, Notepad++ é outra IDE boa e leve. Nada impede de você programar. Eu mesmo, muito usei um notebook antigo com Intel Core 2 Duo T6400, 4GB (2x 2GB) 800MHz DDR2 e um HD comum 250GB 5400rpm SATA Depende do programador... Eu por exemplo não tenho costume de abrir trocentas abas.. só abro as que eu realmente necessito. Geralmente uma aba com alguma api na qual estou estudando, uma aba pra youtube, caso precise pesquisar algo sobre a linguagem ou algo que eu queira desenvolver... e uma aba para testes enfim... isso é algo muito subjetivo e depende muito do programador. Você não pode se basear na sua experiência e no método que você usa, pois cada um tem seus próprios métodos e manias!
  16. @Nicolas_122 Você tá usando o jogo em tela cheia ou tela cheia sem bordas? Para usar 2 monitores e ficar apto para usar o segundo monitor enquanto joga, é preciso usar o jogo em tela cheia sem bordas (borderless) Ademais, segundo monitor, acredito que precisa ser uma extensão do primeiro.
  17. @Fernando Cardoso de Melo Poderia por gentileza, postar a solução encontrada? Assim você ajudará aos demais que estiverem com a mesma dúvida.
  18. @Yieng Senhores, este setor é exclusivamente para discussão sobre configuração da máquina ( já adquirida) se roda ou não um determinado jogo. Assuntos sobre recomendação de peças, por gentileza use o setor de Montagens de computadores( caso seja um conjunto de peças, o que é o caso aqui.), se for uma única peça, por exemplo só placa de vídeo, você pode usar o setor de placas de vídeo.
  19. Assassin's Creed Valhalla está de graça para jogar entre os dias 15 e 19 de Dezembro. Use o launcher da Uplay para ativar e instalar. Lembrando que é só por tempo limitado, mas todo seu progresso será salvo. Quando adquirir o jogo, você irá poder continuar de onde parou. Aproveitem pra jogar e testar o jogo por 5 dias
  20. Ghost of a Tale de graça na GOG até o dia 15/12 as 11 da manha. Ou seja, tens pelo menos 2 dias para pegar na conta. Só procurar o banner de Giveaway.
  21. @Henriquelme Só complementando, o Ray Tracing por hardware, é um recurso exclusivo das placas Nvidia a partir dos modelos RTX da série 20 para cima. Estas placas contém os RT cores responsáveis por gerenciar os efeitos de iluminação em tempo real. Com a 2060 já é possível usar, mas sendo bem sincero não fica bom. A placa não segura muito bem, dependendo do jogo.. O RT fica bom mesmo com pelo menos a 2070 super pra cima na maioria dos jogos que suportam RT. To ansioso para testar o RT na versão nova do The Witcher 3 que vai ser lançada agora dia 14 de dezembro. Pelo menos com o DLSS ativo acho que a 2060 pode rodar legal.
  22. @galaxie76 Tem como bloquea sim. todo e-mail tem como bloquear coisas indesejadas... veja um exemplo de um spam que recebi... Como pode ver, ao abrir o e-mail, clicar nos 3 pontinhos... vai abrir o menu, onde você pode achar o "bloquear" onde a seta vermelha indica.
  23. Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  24. @tiagopraz Olá, Não sei exatamente como implenentar do jeito que você está fazendo... mas aqui está um jeito bem simples e funcional... cabe você a adaptar e implementar para seu propósito: //calcula o horário de trabalho das 7h às 19h = 12h $entrada = '07:00:00'; $saida = '19:00:00'; $hrTrabalho = date('H:i:s', strtotime($entrada) - strtotime($saida)); //calcula o horário do intervalo. das 13h às 14:03h = 1h e 3min. Não sei porque mas cálculo só funciona invertido. $intervaloSai = '13:00:00'; $intervaloEnt = '14:03:00'; $hrIntervalo = date('H:i:s', strtotime($intervaloEnt) - strtotime($intervaloSai)); //função para calcular o tempo total, baseado nos cálculos anteriores function calculaTempo($hrTrabalho,$hrIntervalo){ $totalHour = date('H:i:s', strtotime($hrTrabalho) - strtotime($hrIntervalo)); return $totalHour; } echo calculaTempo($hrTrabalho, $hrIntervalo); Testei e realmente deu 10:57:00 .. certamente tem N maneiras de fazer isso.. essa é a mais simples e "normal" .. Uma outra alternativa é você fazer os cálculos diretamente no SQL. Lá você calcula o horário de trabalho, o horário do intervalo e depois pega ambos resultados e calcula o total.
  25. Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!