Jump to content

Sapinn

Members
  • Content count

    120
  • Joined

  • Last visited

Community Reputation

0 Comum

About Sapinn

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Sapinn

    PDO lastInsertId retorna 0

    Recentemente, o seguinte erro estava aparecendo em meu site 'max_user_connections', depois de muitas pesquisas descobri que o problema era devido a uma conexão persistente de banco de dados, então o removi do meu código e funcionou. Outro problema surgiu agora, meu lastInsertId () está retornando 0. Quando eu uso a conexão persistente, ele funciona se eu removê-lo, ele falha. Eu nem sei mais o que fazer. Vou deixar as partes mais importantes do meu código aqui: Conexão: public function __construct() { $dsn = 'mysql:host='.$this->host.';dbname='.$this->bank; try { $this->dbh = new PDO($dsn,$this->user,$this->password); $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } } public function lastId Inserted(){ return $this->dbh->lastInsertId(); } Pesquisando pelo último Id: if($this->saleModel->store($data)): $sale_id = $this->db->lastId Inserted(); $data['sale_id'] = $sale_id; $this->sellModel->sellProduct($data); $total = $stock->quant_product - $data['quant_sale']; $this->ProductModel->decreaseSales($data['product_id'],$total); Url::redirect('sales/sellProducts/'.$sale_id.''); endif;
  2. Sapinn

    Janela Modal com Slide Show

    Cara tentei rodar seu script na minha máquina mas não deu certo
  3. Sapinn

    Janela Modal com Slide Show

    Estou precisando colocar em um site um propriedade que toda vez que clicar em uma imagem apareça uma janela modal com um slide show em que você pode passar as imagens. Por exemplo se tiver a foto de um celular quando eu clicar nela aparecera um slide show, onde você pode ir passando e vendo outras imagens do celular. Eu já tentei fazer mais sempre dá erro quando eu coloco várias imagens e tento chamar uma por uma. Não sei se eu preciso chamar cada slide ou se existe uma forma simples de se fazer isso. Vou postar aqui um código que eu fiz: CSS: * { box-sizing:border-box; font-family: Arial; } .slideshow-container { max-width: 800px; position: relative; margin: auto; } .mySlides { display: none; } .prev, .next { cursor: pointer; position: absolute; top: 50%; width: auto; margin-top: -22px; padding: 16px; color: #4285f4; font-weight: bold; font-size: 28px; transition: 0.6s ease; border-radius: 0 3px 3px 0; user-select: none; } .next { right: 0; border-radius: 3px 0 0 3px; } .prev:hover, .next:hover { background-color: rgba(0,0,0,0.8); } .dot { cursor: pointer; height: 15px; width: 15px; margin: 10px 2px; background-color: #bbb; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .active, .dot:hover { background-color: #4285f4; } .fade { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } .img_slide{ width: 100%; height: 500px; } /* ----------------MODAL--------------------------------- */ .modal-container{ width: 100vw; height: 100vh; background: rgba(0, 0, 0, .8); 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; } @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: 8px; right: 3px; width: 30px; height: 30px; font-weight: bold; color: #4285f4; font-size: 25px; font-family: Arial, Helvetica, sans-serif; cursor: pointer; background: transparent; border: none; } @media (max-width: 600px) { .img_slide{ width: 100%; height: 300px; } } JAVASCRIPT: var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("mySlides"); var dots = document.getElementsByClassName("dot"); if (n > slides.length) {slideIndex = 1} if (n < 1) {slideIndex = slides.length} for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " active"; } 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'){ modal.classList.remove('mostrar'); } }); } } const botaoChama = document.querySelector('#botaoChama'); botaoChama.addEventListener('click',()=>{ iniciaModal('modal'); }); const botaoChama2 = document.querySelector('#botaoChama2'); botaoChama2.addEventListener('click',()=>{ iniciaModal('modal2'); }); HTML: <div id="modal" class="modal-container"> <button class="fechar">X</button> <div class="slideshow-container"> <div class="mySlides fade"> <img src = "https://wallpapercave.com/wp/wp3473585.jpg" class="img_slide"> </div> <div class="mySlides fade"> <img src = "https://i.pinimg.com/originals/cd/7b/5c/cd7b5c8d4687b5c98a445127926a56e2.jpg" class="img_slide"> </div> <div class="mySlides fade"> <img src =" https://wallpapercave.com/wp/wp2043649.png " class="img_slide"> </div> <a class="prev" onclick="plusSlides(-1)">❮</a> <a class="next" onclick="plusSlides(1)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1)"></span> <span class="dot" onclick="currentSlide(2)"></span> <span class="dot" onclick="currentSlide(3)"></span> </div> </div> </div> <div id="modal2" class="modal-container"> <button class="fechar">X</button> <div class="slideshow-container"> <div class="mySlides fade"> <img src="https://wallpapercave.com/wp/wp9688141.jpg" class="img_slide"> </div> <div class="mySlides fade"> <img src="https://wallpapercave.com/wp/wp8480719.jpg" class="img_slide"> </div> <div class="mySlides fade"> <img src="https://wallpapercave.com/wp/wp9683280.jpg" class="img_slide"> </div> <a class="prev" onclick="plusSlides(-1)">❮</a> <a class="next" onclick="plusSlides(1)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(4)"></span> <span class="dot" onclick="currentSlide(5)"></span> <span class="dot" onclick="currentSlide(6)"></span> </div> </div> </div> <button id="botaoChama">Modal</button> <button id="botaoChama2">Modal 2</button>
  4. A um bom tempo atrás eu encontrei um site que dava pra mudar a cor do layout. Então eu resolvi adicionar essa propriedade em um site que estou desenvolvendo, mas não sei bem como fazer isso. Eu criei uma variável no meu arquivo css pra colocar uma cor padrão para o site então eu gostaria que o usuário quando apertasse em um palheta de cores visse como o site ficaria caso ele gostasse ele apertaria em mudar cor e essa nova cor seria a padrão do site. Eu fiz algumas buscas mas não encontrei muita coisa, infelizmente. Se alguém pudesse me ajudar eu ficaria grato. Vlw
  5. Sapinn

    Como fazer upload de arquivo com PDO

    Entendi... Eu estou fazendo esse sistema em MVC usando .htacess para as URL com isso eu não consigo acessar os arquivos dentro da pasta app no caso na imagem, todavia, eu consigo colocar ele na pasta public dentro de uma pasta chamada img_user. Para chamar a imagem eu uso uma contante com uma url pré definida, assim: CONST.'/img_user/'.$user->foto E está funcionando, tentei outras formas mas não consegui fazer.
  6. Sapinn

    Como fazer upload de arquivo com PDO

    Eu tentei e não consegui. Você acha que é uma má pratica eu salvar as imagens na minha pasta public e depois chama-las ??
  7. Sapinn

    Como fazer upload de arquivo com PDO

    Obrigado Omar me salvou de novo, no meu caso só tava faltando o __DIR__ mesmo. Mas agora estou com outro problema não estou conseguindo chamar a imagem
  8. Sapinn

    Como fazer upload de arquivo com PDO

    Estou precisando salvar fotos dos usuários de um sistema e não estou conseguindo fazer com OO já assisti video aulas e li algumas matérias mas sempre dá erro. Alguém sabe algum jeito de se fazer?? Eu até tentei mas fica sempre com erro, vou postar aqui talvez tenha algo que eu esteja fazendo errado. class para salvar a foto: private function salvarFoto($foto){ $fotos = $_FILES['foto_admin']; $fotoDir = "imagens/fotos_admins/"; $fotoPath = $fotoDir . basename($foto['foto_admin']['name']); $fotoTmp = $foto['foto_admin']['tmp_name']; if(move_uploaded_file($fotoTmp, $fotoPath)): return $fotoPath; else: return false; endif; } E estou chamando ela assim: $upload = $this->salvarFoto($_FILES); if(gettype($upload) == 'string'): $dados['foto_admin'] = $upload; endif; E o erro é o seguinte: move_uploaded_file(imagens/fotos_admins/sapinn.jpg): failed to open stream: No such file or directory in Não sei o que está errado a pasta imagens/fotos_admins está dentro da minha pasta Controller
  9. Sapinn

    Devolução ao estoque

    Entendi... Mas como eu faria pra devolver isso ao banco de dados? Uma solução não seria enviar um formulário com todos os id do produto e a quantidade da venda somar com a quantidade do produto atualmente e atualizar o preço? Então como eu faria para pegar esse produtos do banco de dados ?
  10. Sapinn

    Devolução ao estoque

    Fala galare, blz? Então, estou desenvolvendo um sistema de vendas e eu gostaria de saber como fazer para devolver o produto ao estoque no caso de cancelamento da venda ou na devolução. Por exemplo: Digamos que eu tenha um estoque com 10 fones de ouvido, 5 teclados e 20 pen drives. Então um cliente comprou 1 fone de ouvido, 1 teclado e 2 pendrive, eu já consigo ajustar o estoque para diminuir ficando: 9 fones de ouvido, 4 teclados, 18 pen drives. Mas digamos que, por alguma razão, o cliente gostaria de devolver o pen drives e o fone de ouvido como eu faria para colocar ambos de volta ao seu respectivo estoque, ou seja ajustar os 9 fones e os 18 pen drive de volta para 10 fones e 20 pen drive??
  11. Nesse caso eu devo fazer isso no meu Controller ou no meu Model??
  12. 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
  13. 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.
  14. 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; } }
  15. 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.
×

Important Information

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