Ir para conteúdo

POWERED BY:

Sapinn

Members
  • Total de itens

    159
  • Registro em

  • Última visita

Tudo que Sapinn postou

  1. Sapinn

    Pegar ultimo id inserido e cadastrar em uma outra tabela

    Nesse caso eu devo fazer isso no meu Controller ou no meu Model??
  2. Boa pessoal. Então, estou fazendo um sistema para uma loja de manutenção de aparelhos eletrônicos, e eu tenho um formulário de cadastro onde eu posso inserir os dados de um cliente e os dados do seu aparelho. E eu consigo cadastrar simultaneamente cada um em suas respectivas tabelas. O que eu gostaria de fazer era assim que cadastra-se o cliente pega-se o seu id( Nesse caso o ultimo id inserido) e inserisse na tabela serviços junto. No PDO tem um jeito de fazer isso que é usando o lastInsertId() mas eu não estou sabendo como retornar esse ultimo id para fazer essa inserção
  3. Sapinn

    Erro ao passar array de dados

    NÃO SEI COMO RESOLVER ISSO PELO AMOR ... Eu tenho um método home que vai transferir os dados do banco para uma tabela Aqui esta o método no controlador: public function home(){ $dados = [ 'admins' => $this->adminModel->lerAdmin() ]; $this->view('paginas/admins/home', $dados); } E esse método no model: public function lerAdmin(){ $this->db->query("SELECT * FROM admins"); return $this->db->resultados(); } Ai eu chama os dados no home assim: <?=$dados['admins']?> Só pra testar eu sei que precisa usar um foreach, mas ele me retorna o seguinte erro: Notice: Undefined index: admins inC:\xampp\htdocs\PROJETOS\sistema-de-gerenciamento\app\Views\paginas\admins\home.phpon line178
  4. Sapinn

    Erro ao passar array de dados

    O arquivo drive que você colocou está restrito, por favor libério-o. Obrigado pelas dicas irei analisar bem os dados e tentarei corrigir senão der certo irei retornar aqui.
  5. Sapinn

    Erro ao passar array de dados

    Beleza!! Controlador Admin: <?php class Admins extends Controller{ //construct que chama o model public function __construct() { $this->adminModel = $this->model("Admin"); } public function home(){ $dados = [ 'admins' => $this->adminModel->lerAdmin() ]; $this->view('paginas/admins/home',$dados); } //função que cadastra o admin public function cadastrar(){ $formulario = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if(isset($formulario)): //filtra os dados $dados = [ 'nome_admin' => trim($formulario['nome_admin']), 'email_admin' => trim($formulario['email_admin']), 'senha_admin' => trim($formulario['senha_admin']), 'confirmar_senha_admin' => trim($formulario['confirmar_senha_admin']), ]; //verificando se os dados não estão vazios if(in_array("", $formulario)): if(empty($formulario['nome_admin'])): Sessao::mensagem('admin','Preencha o campo nome','alert-danger'); endif; if(empty($formulario['email_admin'])): $dados['mensagem_erro'] = "Preencha o campo email"; endif; if(empty($formulario['senha_admin'])): $dados['mensagem_erro'] = "Preencha o campo senha"; endif; if(empty($formulario['confirmar_senha_admin'])): $dados['mensagem_erro'] = "Preencha o campo confirmar senha"; endif; else: if(Checa::checaEmail($formulario['email_admin'])): Sessao::mensagem('admin','O e-mail informado é inválido','alert-danger'); elseif($this->adminModel->checarEmail($formulario['email_admin'])): Sessao::mensagem('admin','O e-mail informado já foi cadastrado','alert-danger'); elseif(strlen($formulario['senha_admin']) < 6): Sessao::mensagem('admin','A senha precisa ter pelo menos 6 caracteres','alert-danger'); elseif($formulario['senha_admin'] != $formulario['confirmar_senha_admin']): Sessao::mensagem('admin','As senhas são diferentes','alert-danger'); else: if($this->adminModel->armazenar($dados)): Sessao::mensagem('admin','Admin cadastrado com sucesso!'); $dados = [ 'nome_admin' => '', 'email_admin' => '', 'senha_admin' => '', 'confirmar_senha_admin' => '', ]; else: Sessao::mensagem('admin','Erro ao cadastrar o admin!','alert-danger'); endif; endif; endif; else: $dados = [ 'nome_admin' => '', 'email_admin' => '', 'senha_admin' => '', 'confirmar_senha_admin' => '', 'mensagem_erro' => '', ]; endif; $this->view('paginas/admins/cadastrar', $dados); } //faz o login public function login(){ $formulario = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if(isset($formulario)): if(isset($formulario['manter_logado'])): $dados = [ 'email_admin' => trim($formulario['email_admin']), 'senha_admin' => trim($formulario['senha_admin']), 'manter_logado' => trim($formulario['manter_logado']), ]; else: $dados = [ 'email_admin' => trim($formulario['email_admin']), 'senha_admin' => trim($formulario['senha_admin']), ]; endif; if(in_array("", $formulario)): if(empty($formulario['email_admin'])): Sessao::mensagem('admin','Preencha o campo e-mail','alert-danger'); endif; if(empty($formulario['senha_admin'])): Sessao::mensagem('admin','Preencha o campo senha','alert-danger'); endif; else: if(Checa::checaEmail($formulario['email_admin'])): Sessao::mensagem('admin','O e-mail informado é inválido','alert-danger'); else: $admin = $this->adminModel->checarLogin($formulario['email_admin'], $formulario['senha_admin']); if($admin): $this->criarSessao($admin); else: Sessao::mensagem('admin','E-mail ou senha inválidos','alert-danger'); endif; endif; endif; else: $dados = [ 'email_admin' => '', 'senha_admin' => '', 'manter_logado' => '', 'mensagem_erro' => '', ]; endif; $this->view('paginas/admins/login', $dados); } private function criarSessao($admin){ $_SESSION['id'] = $admin->id; $_SESSION['nome'] = $admin->nome; $_SESSION['email'] = $admin->email; $_SESSION['acesso'] = $admin->acesso; URL::redirecionar('paginas/home'); } public function Sair(){ unset($_SESSION['id']); unset($_SESSION['nome']); unset($_SESSION['email']); unset($_SESSION['acesso']); session_destroy(); URL::redirecionar('paginas/login'); } } Model Admin: <?php class Admin { private $db; public function __construct() { $this->db = new DataBase; } public function lerAdmin(){ $this->db->query("SELECT * FROM admins"); return $this->db->resultados(); } public function checarEmail($email){ $this->db->query("SELECT email FROM admins where email = :email_admin"); $this->db->bind("email_admin",$email); if($this->db->resultado()): return true; else: return false; endif; } public function armazenar($dados){ $this->db->query("INSERT INTO admins (nome, email, senha, acesso) VALUES (:nome, :email, :senha, :acesso)"); $this->db->bind("nome", $dados['nome_admin']); $this->db->bind("email", $dados['email_admin']); $this->db->bind("senha", $dados['senha_admin']); if($this->db->executa()){ return true; }else{ return false; } } public function checarLogin($email, $senha){ $this->db->query("SELECT * FROM admins where email = :email_admin and senha = :senha_admin"); $this->db->bind("email_admin",$email); $this->db->bind("senha_admin",$senha); if($this->db->resultado()): $resultado = $this->db->resultado(); return $resultado; else: return false; endif; } } Class Controler: <?php class Controller { public function model($model){ require_once '../app/Models/'.$model.'.php'; return new $model; } public function view($view, $dados = []){ $arquivo = ('../app/Views/'.$view.'.php'); if(file_exists($arquivo)): require_once $arquivo; else: die('Método não encontrada'); endif; } }
  6. Sapinn

    Erro ao passar array de dados

    Cara eu não sei o que fazer ainda não deu certo. O $this->view('paginas/admins/home', $dados); Serve para passar os array de dados para a view home. Isso tá dando uma dor de cabeça gigante e eu não sei porquê está dando erro. Eu não estou conseguindo enviar esse array para a view home, existe alguma outra forma de se fazer isso??? Eu não sou tão bom em orientação a objetos.
  7. Sapinn

    Erro ao passar array de dados

    Ai cara eu fiz o que você pediu e ele não retornou nada, mesmo colocando igual Veja: <?php class Admins extends Controller{ private $dados = []; public function __construct() { $this->adminModel = $this->model("Admin"); } public function criarArray() { $this->dados = ['a' => '1', 'b' => '2', 'c' => '3']; } public function verArray() { return $this->dados; } $e = new Admins(); var_dump($e->verArray()); Eu tentei até mudar a versão do PHP da 7.4 para a 7.3 mas não obtive exite algum.
  8. Opa galera. Então depois que eu comecei a usar cookies no meu sistema o seguinte erro está acontecendo Cannot modify header information - headers already sent by não sei exatamente o que é e preciso de ajuda. O erro ocorre quando eu verifico se a caixa "mantenha-me conectado" é marcada então eu faço uma verificação direto no index. <?php session_start(); include '../app/configuracao.php'; include '../app/autoload.php'; include '../app/Controllers/Admins.php'; $rotas = new Rota(); $db = new DataBase(); $control = new Admins(); if(isset($_COOKIE['acesso'])){ $db->query('select * from admins where acesso = :acesso'); $db->bind('acesso',$_COOKIE['acesso']); $db->resultado(); if($db->resultado()){ $control->fazLogin(isset($db->resultado()->email), isset($db->resultado()->senha)); } } ?>
  9. Uma nova dúvida surgiu... Quando o usuário marca a opção de manter-se conectado o link <?=URL?>/admins/cadastrar fica redirecionando o usuário para a pagina home e tudo isso por causa da função que eu chamo no index, essa função: $control->fazLogin($db->resultado()->email, $db->resultado()->senha); A função é a seguinte: public function fazLogin($email, $senha){ $admin = $this->adminModel->checarLogin($email, $senha); if($admin): $this->criarSessao($admin); else: URL::redirecionar('paginas/login'); endif; } Não sei porquê isso acontece, eu devo retirar a essa função e chama-la em outro lugar ????
  10. @Matheus Tavares irei postar aqui onde está o erro já que não achei nenhuma quebra de linha <?php class Url { public static function redirecionar($url){ header("Location: ".URL.DIRECTORY_SEPARATOR.$url); } } É essa classe que indica o erro, onde está esse header se caso eu colocar um @ nela o erro desaparece. Esse método é o que cria a sessão caso um cookie seja encontrado. private function criarSessaoCookie($admin){ $_SESSION['id'] = $admin->id; $_SESSION['nome'] = $admin->nome; $_SESSION['email'] = $admin->email; $_SESSION['acesso'] = $admin->acesso; setcookie('acesso', $_SESSION['acesso'], time() + (30 * 24 * 3600), "/"); URL::redirecionar('paginas/home'); }
  11. Sapinn

    Manter o usuário logado

    Entendi, vlw mais uma vez.
  12. Sapinn

    Manter o usuário logado

    Opa galera tudo blz? Então, me deparei com um pequeno problema no desenvolvimento de um projeto, eu gostaria que o usuário se mantivesse logado caso ele marcasse um check box com a opção de "Mantenha-me conectado", e até entendo que nessa caso devo usar os cookies do PHP, entretanto, não entendi ainda como usar esse recurso, alguém pode me ajudar??
  13. Sapinn

    Manter o usuário logado

    Muito obrigado Omar~ eu consegui resolver o problema graças aos exemplos que você postou. Agora tenho algumas dúvidas de segurança. Quando o usuário vai fazer o cadastro eu automaticamente insiro um hash nele mas eu gostaria de saber se: Toda vez que eu o usuário fizer login esse hash deve ser alterado para um novo? O hash que eu estou gerendo e colocando no banco de dados é uniqid(rand()).md5(uniqid(rand(), true)).md5(microtime(true).mt_Rand()) gostaria de saber se ele é seguro ou se existe uma forma mais segura de hash. Eu li algumas coisas sobre e hash e na geração deles resolvi não usar nenhum dado do usuário como id, e-mail ou senha para evitar possíveis problemas de segurança.
  14. Sapinn

    Manter o usuário logado

    Poh cara, obrigado pela ajuda, mas infelizmente não consegui encontrar uma solução para isso já busquei em vários sites e nada, acho que vou ter que desistir de introduzir essa funcionalidade no site.
  15. Sapinn

    Manter o usuário logado

    Agora eu intendi. Veio-me uma dúvida, no meu Model eu crio uma verificação retornando verdadeiro e falso e no Controller eu criei um método estático assim eu posso chama-lo na pagina de login antes do código html verificando se o cookie existe, mas como eu posso acessar o método estático se o não posso usar o this em métodos estáticos. Controlador : <?php class Usuarios extends Controller{ public function __construct() { $this->usuarioModel= $this->model("Usuario"); } public static function acessoRapido($acesso){ if($this->checarAcesso($acesso)){ //aqui tem um erro URL::redirecionar('paginas/usuario/home'); }else{ URL::redirecionar('paginas/usuario/login'); } } } Model: public function checarAcesso($acesso){ $this->db->query("SELECT * FROM admins where acesso = :acesso"); $this->db->bind("acesso", $acesso); if($this->db->resultado()): return true; else: return false; endif; } Página Login: <?php Sessao::acessoRapido($_COOKIE['acesso']); ?>
  16. Sapinn

    Chamar janela modal para diferentes

    Muito obrigado de novo. Eu consegui acrescentar o nome do produto adicionando a seguinte linha na função do botaoChamar: nomeProdutoAqui.innerHTML = e.parentNode.parentNode.childNodes[1].innerHTML +" "+ e.parentNode.parentNode.childNodes[3].innerHTML; Provavelmente existe algum método mais sofisticado para resolver esse problema mas como esse conseguiu resolver meu problema vou usar ele mesmo, muito obrigado pela ajuda de novo.
  17. Sapinn

    Chamar janela modal para diferentes

    Gostaria de chamar a janela modal de acordo com o produto escolhido para ser excluído, eu ainda estou fazendo o front do projeto mas sei que é possível fazer isso só com javascript seria algo como chamar a janela modal de acordo com o id do produto que será trazido pelo banco de dados CSS: .modal-container{ width: 100vw; height: 100vh; background: rgba(0, 0, 0, .5); position: fixed; top: 0px; left: 0px; z-index: 2000; display: none; justify-content: center; align-items: center; font-family: Arial, Helvetica, sans-serif; } .modal-container.mostrar{ display: flex; } .modal-content{ background: #fff; width: 30%; min-width: 300px; padding: 30px; border: 10px solid #988b7a; box-shadow: 0 0 0 10px #fff; position: relative; } .btn-question{ color: #fff; border-radius: 8px; border: none; width: 120px; height: 60px; font-size: 18px; cursor: pointer; margin-left: 10%; transition: .8s; } .btn-yes{ background-color: #4caf50; } .btn-yes:hover{ background-color: #50dd55; } .btn-no{ background-color:#db4437; } .btn-no:hover{ background-color: #f53625; } @keyframes modal{ from{ opacity: 0; transform: translate3d(0, -60px, 0); } to{ opacity: 1; transform: translate3d(0, 0, 0); } } .mostrar .modal-content{ animation: modal .3s; } .fechar{ position: absolute; top: 0px; right: 0px; width: 30px; height: 30px; border-radius: 50%; border: 4px solid #fff; background: red; color: #fff; font-family: Arial, Helvetica, sans-serif; cursor: pointer; } HTML: <table class="tabela-padrao" border="1px"> <thead> <tr> <th>Produto</th> <th>Marca</th> <th>Quant</th> <th>Preço</th> <th>Excluir</th> </tr> </thead> <tbody> <tr> <td>Mouse</td> <td>Multilaser</td> <td>2</td> <td>50,00</td> <td><button id="botaoChama">Excluir Produto</button></td> </tr> <tr> <td>Teclado</td> <td>Multilaser</td> <td>2</td> <td>50,00</td> <td><button id="botaoChama">Excluir Produto</button></td> </tr> <tr> <td>Fone</td> <td>Multilaser</td> <td>2</td> <td>50,00</td> <td><button id="botaoChama">Excluir Produto</button></td> </tr> </tbody> </table> <div id="modal" class="modal-container"> <div class="modal-content"> <button class="fechar">X</button> <h2 class="subtitulo">Tem certeza que deseja excluir esse produto?</h2> <button class="btn-question btn-yes">Sim</button> <button class="btn-question btn- no">Não</button> </div> </div> JS: function iniciaModal(modalID){ const modal = document.getElementById(modalID); if(modal){ modal.classList.add('mostrar'); modal.addEventListener('click',(e)=>{ if(e.target.id == modalID || e.target.className == 'fechar' || e.target.className == 'btn-question btn-no'){ modal.classList.remove('mostrar'); } }); } } const botaoChama = document.querySelector('#botaoChama'); botaoChama.addEventListener('click',()=>{ iniciaModal("modal"); });
  18. Sapinn

    Chamar janela modal para diferentes

    Me salvando de novo muito obrigado. Agora se eu quisesse chamar na janela modal o nome e a marca do produto em um tag <b> Como proceder ? <div id="modal" class="modal-container"> <div class="modal-content"> <button class="fechar">X</button> <h2 class="subtitulo">Tem certeza que deseja excluir <b class="nomeProdutoAqui"></b>?</h2> <form action=""> <input type="text" id="id_produto"> <fieldset> <button class="btn-question btn-yes">Sim</button> <a class="link-button btn-question btn-no">Não</a> </fieldset> </form> </div> </div>
  19. Fala galera blz? Então preciso de ajuda numa coisa aqui que não sei de jeito nenhum como resolver. Eu encontrei na W3School um menu tab vertical perfeito para minha página que é one page. Segui o link: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_vertical_tabs Mas estou me encontrando com um problema! Eu gostaria que esse menu permanece-se na mesma tag mesmo atualizando a página, por exemplo, se eu escolher a segunda opção do menu ela permanecerá ativada mesmo se eu atualizar a página. Na opção oferecida pela W3Shool, toda vez que a página é atualizada ele volta para a primeira tag que tem por padrão a primeira opção com um active. Não sei como resolver ou se tem uma solução para algo assim mas se alguém puder me ajudar eu agradeceria muito.
  20. Sapinn

    Multiplicar valores de uma tabela

    Consegui desenvolver a solução vou postar aqui para caso alguém tenha a mesma dúvida futuramente. <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Multiplicar</title> </head> <body> <body> <table id="tabela" border="1px"> <tr> <td>Produto</td> <td>Quant</td> <td>Preço</td> <td>Valor Total</td> </tr> <tr> <td>Mouse</td> <td class="quant">3</td> <td class="preco">30,50</td> <td class="valor"></td> </tr> <tr> <td>Teclado</td> <td class="quant">5</td> <td class="preco">25</td> <td class="valor"></td> </tr> </table> Total: <span id="total"></span> <script> var quant = document.querySelectorAll(".quant"); var preco = document.querySelectorAll(".preco"); var valor = document.querySelectorAll(".valor"); var totalLinha = 0; var total = 0; for (var i = 0; i < quant.length; i++) { totalLinha = Number(quant[i].innerHTML) * parseFloat(preco[i].innerHTML.toString().replace(",",".")); valor[i].innerHTML = totalLinha.toString().replace(".",","); total += totalLinha; } document.getElementById("total").innerHTML = total.toString().replace(".",","); </script> </body> </html>
  21. Sapinn

    Multiplicar valores de uma tabela

    Tenho uma tabela e gostaria de multiplicar a quantidade de produtos para a compra com o valor unitário e gerar o valor total e colocar em outra td, alguém sabe como fazer isso??? <table class="table-default"> <thead> <th>Produto</th> <th>Quant</th> <th>Valor Unit.</th> <th>Valor Total</th> <th>Alterar</th> <th>Excluir</th> </thead> <tbody> <tr> <td>Placa Mãe</td> <td class="quant_produto">1</td> <td class="valor_produto">100,00</td> <td class="total-produto"></td> <td><a href=""><i class="bi bi-pencil-fill"></i></a></td> <td><a href=""><i class="bi bi-trash-fill"></i></a></td> </tr> <tr> <td>Memoria Ram DDr3</td> <td class="quant_produto">1</td> <td class="valor_produto">50,00</td> <td class="total-produto"></td> <td><a href=""><i class="bi bi-pencil-fill"></i></a></td> <td><a href=""><i class="bi bi-trash-fill"></i></a></td> </tr> <tr> <td>Memoria Ram DDr3</td> <td class="quant_produto">1</td> <td class="valor_produto">50,00</td> <td class="total-produto"></td> <td><a href=""><i class="bi bi-pencil-fill"></i></a></td> <td><a href=""><i class="bi bi-trash-fill"></i></a></td> </tr> </tbody> </table>
  22. Pessoa de novo eu aqui kk. Acho que essa pergunta é simples mas eu não sei como fazer, já pesquisei em vários cantos mas só achei a resposta em Jquery e eu queria fazer em Javascript puro. Basicamente eu gostaria de transferir dados de uma tabela para um form eu já consegui fazer mas só funciona em um td e eu gostaria nos outros não funcionam. <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <table border="1px"> <tr> <td>Nome</td> <td>Endereço</td> <td>Telefone</td> <td>Adicionar</td> </tr> <tr> <td id="nome_cliente" value="Sapien">Sapinn</td> <td id="endereco_cliente" value="Rua 01">Rua 01</td> <td id="tel_cliente" value="(88) 9 9999-9999">(88)9 9999-9999</td> <td><button onclick="adicionar()">Adicionar</button></td> </tr> <tr> <td id="nome_cliente" value="Sapien">Supremo</td> <td id="endereco_cliente" value="Rua 01">Rua 05</td> <td id="tel_cliente" value="(88) 9 9999-9999">(88)9 0000-0000</td> <td><button onclick="adicionar()">Adicionar</button></td> </tr> </table><br><br> Nome:<input type="text" name="nome" id="nome"> Telefone: <input type="text" name="telefone" id="telefone"> Endereço: <input type="text" name="endereco" id="endereco"> <script> function adicionar(){ let nome_cliente = document.getElementById("nome_cliente").innerHTML; let endereco_cliente = document.getElementById("endereco_cliente").innerHTML; let tel_cliente = document.getElementById("tel_cliente").innerHTML; document.getElementById('nome').value = nome_cliente; document.getElementById('telefone').value = tel_cliente; document.getElementById('endereco').value = endereco_cliente; console.log(nome_cliente, endereco_cliente, tel_cliente) } </script> </body> </html>
  23. Sapinn

    Transferir dados de uma tabela para um form em js

    Muito obrigado mais uma vez Omar. Quanto ao código que eu te perguntei eu ainda não incrementei era só uma dúvida mesmo. Embora eu tenha terminado recentemente minha faculdade na área de T.I e educação ela não fez há cobrança necessária para que eu pudesse me desenvolver bem na programação, e isso é bem tipico das faculdade na área de tecnologia, enfim, estou fazendo diversos cursos para me aprimorar e peguei um freelar para desenvolver um pequeno site para um amigo meu então provavelmente eu vou aparecer muito por aqui criando dúvidas bobas kkkk. Mais um vez muito obrigado!
  24. Sapinn

    Transferir dados de uma tabela para um form em js

    Cara muito obrigado mais uma vez, princialmente pelas dicas. Quero aproveitar o tópico e fazer mais uma pergunta quando eu for fazer uma ligação com o banco de dados mostrando a tabela de clientes e quiser colocar os dados de um cliente especifico eu posso incrementar o código, no caso PHP, com o javascript no botão ou isso seria uma má pratica? E se não for correto poderia me mostrar outra forma de fazer? Desde já grato Exemplo: <tr id="cliente-<?php echo $id_cliente?>"> <td data-nome="<?php echo $nome_cliente?>">João</td> <td data-endereco="<?php echo $nome_endereco?> a">Endereço A</td> <td><button onclick="adicionar('cliente-<?php echo $id_cliente?>')">Adicionar</button></td> </tr>
×

Informação importante

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