Ir ao conteúdo
  • Cadastre-se

joseph_dev

Membro Pleno
  • Posts

    108
  • Cadastrado em

  • Última visita

Tudo que joseph_dev postou

  1. O conceito da trigger você já está sabendo. Qual seria sua dúvida em relação a esses 2 procedimentos?
  2. Rpz para cada estado há uma estrutura diferente do RG. Achei esse exemplo para SP: http://www.profcardy.com/cardicas/rg.php
  3. Você vai fazer sem interface para o usuário? É trabalho escolar, apenas didático? Como você vai precisar de um retorno desse código, você vai fazer uma "function" pois uma "procedure" não retorna nada, apenas executa algo. Acho que é um bom começo para suas pesquisas. Na questão da validação, é apenas no formato do texto ou tem que validar o número em si?
  4. Po cara, eu fiz em mysql. Foi mal. Segue em mssql: CREATE TRIGGER ex2_itempedido_trg ON ex2_itempedido AFTER INSERT AS BEGIN DECLARE @codproduto INT, @qtdpedido INT SELECT @qtdpedido = quantidade, @codproduto = codproduto FROM INSERTED UPDATE ex2_produto SET quantidade = quantidade - @qtdpedido WHERE codproduto = @codproduto; END GO Você tem uma espécie de tabela temporária (espelho da tabela afetada) com os registros inseridos (INSERTED), atualizados (UPDATED) ou deletados (DELETED). Sendo assim você pode fazer a atualização da quantidade na mesma trigger em cada operação. Nesse caso na linha "AFTER INSERT", ficaria "AFTER INSERT, UPDATE, DELETE" e voce faz o tratamento para cada situação. Seria bom pensar em um campo "situacao" na tabela de pedido para indicar se o pedido foi cancelado, devolvido ou algo assim. E então no UPDATED voce faz o tratamento para repor essa quantidade no estoque. Desse modo não perde o registro do pedido.
  5. No método 1 não precisa baixar programa. Mas acho q deveria ser feito logo após o desligamento. O método 2 é apenas para arquivos excluídos, que não é o seu caso. Caso precise usar mesmo um bloco de notas, use o notepad++, esse sim salvaria seu trabalho nessa situação. Bola pra frente. Boa sorte no trabalho!
  6. Faça um teste em ambos scripts colocando o nome de arquivo fixo ex: "teste.sql" e depois apenas "teste" (sem a extensão).
  7. O primeiro registro que achei do google: https://br.easeus.com/file-recovery/recuperar-documento-txt-nao-salvo-excluido-perdido-no-windows-10.html Vê se o método 1 funciona.
  8. Essa propriedade corresponde ao conteúdo html do elemento em questão. Ex: <div> <span>Meu conteúdo.</span> </div> Quando você "pega" o innerHTML dessa div acima você tem: "<span>Meu conteúdo.</span>". E quando você atribui um valor/conteúdo, você "coloca" dentro das tags <div></div>, substituindo o atual. Porém essa função no seu código está incompleta. A variável nome deveria se referir ao elemento <p>. Você precisa atribuir a ela usando a função nativa do javascript getElementById. <script> function escreverNome() { var nome = document.getElementById("nome"); nome.innerHTML = "Jorge Toscano"; } </script> E algum elemento (um botão...) deve disparar essa função, ou então colocar no onload da página para assim que carregar a página executar a função.
  9. Qual seria sua dúvida? Em que pé está seu projeto? Está apresentando algum erro no console?
  10. Ao invés de usar css para customizar sua tela, use as tags e as classes do bootstrap e suas variações de classes para organizar ela. Use o css apenas para o excepcional mesmo. Isso vai ajudar na responsividade. Pela estrutura do seu site, dá para fazer quase tudo sem css. Qual versão do bootsrap você tá usando?
  11. Você testou com as duas classes? Faça um teste sem o seu css e sem esse background. Vá adicionando um componente por vez para ver o comportamento da página. De preferência use o container responsivo para seu site poder ser aberto em vários dispositivos.
  12. Faça um teste colocando todo seu código dentro de uma div com a classe "container". Da seguinte forma: ... <body> <div class="container"> <!--Seu código fica todo aqui--> </div> </body> ... Segundo a documentação do bootstrap, esse container ajusta automaticamente seu conteúdo as dimensões da tela tornando o site responsivo. Teste também a classe "container-fluid". No lugar de "container" coloque "container-fluid". Segundo a documentação, esse container ajusta automaticamente seu conteúdo a largura total da tela. Obviamente, o responsivo é melhor.
  13. Será que esse array $texto não está ficando com um array dentro de outro array? Tipo: Array( (0) => Array ( (id) => '1', (nome) => 'Maria', (val) => '2000' ), (1) => Array ( (id) => '4', (nome) => 'Joao', (val) => '5000' ) )
  14. Pelo que entendi do seu esquema, acho que seria o seguinte: DELIMITER $ CREATE TRIGGER ex2_itempedido_tgr AFTER INSERT ON ex2_itempedido FOR EACH ROW BEGIN SELECT @qtd_atual = quantidade FROM ex2_produto WHERE codproduto = NEW.codproduto; UPDATE ex2_produto SET quantidade = (@qtd_atual - NEW.quantidade) WHERE codproduto = NEW.codproduto; END$ Fica o desafio pra você criar a trigger quando o item for devolvido ou o pedido cancelado e atualizar a quantidade do produto. Dica: (AFTER DELETE OU AFTER UPDATE - Use os recursos OLD e NEW para ter acesso aos campos que estão sendo usados no momento.)
  15. De acordo com as funcionalidades citadas, precisaremos das tabelas: (só colocarei os campos principais. você completa os demais que achar necessário) -usuario (será uma pessoa com um tipo de usuário definido para acesso) idUsuario(int), idPessoa(fk), idTipoUsuario(fk), login(varchar), senha(varchar) -tipousuario (atendente, dentista - terão permissões e acesso a campos diferentes) idTipoUsuario(int), descricao(varchar) -pessoa (será paciente e também será associado a um usuário) idPessoa(int), nome(varchar), cpf(varchar), telefone(varchar) -tratamento (será a consulta) idTratamento(int), idPessoa(fk), idUsuario(fk), dataCadastro(datetime) -procedimento (tipos de procedimentos - consulta inicial, orçamento, canal, limpeza, extração...) idProcedimento(int), descricao(varchar) -consulta (1:n um tratamento pode ter várias consultas até finalizar. Um registro para cada dia de consulta) idConsulta(int), idTratamento(fk), data(datetime), observacoes(varchar), atendido(char) -consulta_procedimento (1:n - Uma consulta/tratamento pode ter vários tipos de procedimentos num mesmo dia) idConsulta(pk), idProcedimento(pk) Opcional: Considerando que seja permitido pagamento mesclado ex: parte em dinheiro e parte no cartão. -pagamento -tipo_pagamento (cartão, dinheiro, autorização do plano) -consulta_pagamento Caso não seja necessário, basta um campo na tabela tratamento sinalizando se foi pago ou não para simplificar. Acho que é o mais enxuto que conseguimos, seguindo as normas. Você consegue enxergar as chaves primárias e estrangeiras nos relacionamentos aí? Tenta fazer e caso não consiga você fala.
  16. Não vou fazer o exercício mas vou te dar um caminho. 1- Se você está usando apenas um input para digitar os números, defina um delimitador para separar os números. Ex: uma vírgula. Sempre que digitar os números, separe eles pela vírgula. 2- No PHP, você vai quebrar esse texto que tem os números separados por vírgula usando a função interna explode. Você vai obter um array com todos os números. 3- Percorra este array e usando um array auxiliar, compare os valores e use as funções internas array_push, array_pop, array_unshift e array_splice para adicionar ao array auxiliar no início do array, em certa posição ou no fim do array. Dá uma olhada no PHP Manual para saber qual funcão você vai usar no momento a depender da comparação. 4- Após a ordenação você pode usar a função implode no novo array ordenado e gerar uma string com os números separados por vírgula. Agora é só quebrar a cabeça aí.
  17. Concordo com washalbano. O ideal seria você implementar uma ferramenta no seu código para o cliente fazer o recorte da imagem com o mouse no momento do cadastro. Já que o sistema não vai saber se o recorte é para ser na parte de cima, na parte de baixo ou até mesmo no centro da imagem. Tem alguns plugins/ferramentas desse tipo na web.
  18. Veja se atende... <? $msg = "" //executa a consulta de login e no bloco do login adiciona: if($login == false){ $msg = "alert('Login ou Senha inválidos!');" } ?> <!--na estrutura html chama a variavél--> <script> window.onload = function(){ <?echo $msg?> } </script> <!--caso a consulta de login não tenha sido executada a $msg vai ser "" e nada será exibido.-->
  19. Você pode pesquisar pelos frameworks de backend... symfony, cake, entre outros... Eles já tem estrutura pronta para isso. Você só configura as routes/annotations do seu ambiente e o framework faz tudo sozinho. Caso você queira fazer isso do zero, você vai precisar criar uma classe que recebe todas as requisições e através da URL, faz a quebra da string e direciona para a respectiva classe (arquivo) php. Você tá querendo criar um ou configurar uma estrutura pronta?
  20. A grosso modo, você usa ele quando tem um campo que não tem um valor obrigatório ou que você só vai preencher ele depois. E para não armazenar um valor como um varchar em branco, uma data falsa ou 0 (quando não tem valor definido), você usa o NULL para não ocupar muito espaço no banco. Ex. Tabela FUNCIONARIO ID NOME SEXO DATA_ADMISSAO DATA_DEMISSAO 5 JOÃO M 01/01/2018 NULL 12 MARIA F 01/01/2019 01/10/2020 19 PEDRO M 01/01/2020 NULL
  21. Você faz uma outra consulta agrupando e fazendo a soma porém une elas com o UNION. Ficaria tipo assim: select a, b, c, null total from tab group by x union select null a, null b, null c, sum(z) total from tab group by w Lembrando que o union exige que as duas consultas tenham a mesma quantidade de campos... por isso na segunda consulta os primeiros campos sao nulos apenas para preencher esse requisito.
  22. A forma mais simples é: se a quantidade de registros forem poucos e fixos, você pode agrupar e usar o MAX para cada um desses registros o tornando colunas.
  23. Você quer fazer isso manualmente ou automaticamente assim que inserir um registro na tablela dataleitura? Se for automaticamente, a segunda data da comparação seria a data atual do momento que insere o registro? Ou você ainda vai informar a segunda data de comparação manualmente? A depender do cenário pode ser uma TRIGGER ou uma PROCEDURE.
  24. Parece que você está inserindo um pedido sem ter o cliente com codigo 101 cadastrado na tabela cliente. Por isso o erro de chave estrangeira. Primeiro insira o cliente e depois o pedido.
  25. update tabela set campo = valor where identificador is null Use "is null"

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...