Ir para conteúdo

granderodeo

Members
  • Total de itens

    27
  • Registro em

  • Última visita

Tudo que granderodeo postou

  1. granderodeo

    Abrir modal relativa ao id do pedido

    Tenho a página pedidos.php, que recebe todos os pedidos que foram feitos no site nessa página tem informações com ID do pedido, ID do usuário, Endereço etc. Fiz um botão `Produtos` para que quando o ADM clique, abra uma modal vinda de outra página `modalbox.php`, com os produtos pedidos referentes aquele pedido. Por exemplo Pedido nº 833 ao lado dele terá um botão `Produtos` e quero que quando abrir a modal venha somente os produtos pedidos pelo 833. Com o código que tenho até o momento a modal abre, mas não mostra os produtos. pedidos.php <!-------------------------------- PEDIDOS -------------------------> <div class="table-responsive mt-2"> <table class="table table-bordered table-striped text-center"> <thead> <tr> <td colspan="9"> <h4 class="text-center text-info m-0">Pedidos realizados</h4> </td> </tr> <tr> <th class="text-center">ID do pedido</th> <th class="text-center">Nome do cliente</th> <th class="text-center">E-mail</th> <th class="text-center">Endereço</th> <th class="text-center">Número da casa</th> <th class="text-center">Valor</th> <th class="text-center">ID cliente</th> <th class="text-center">Situação</th> <th class="text-center">Produtos</th> </tr> </thead> <tbody> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders"); $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()): ?> <tr> <td> <?= $row['order_id'] ?></td> <!-- ID do pedido --> <td> <?= $row['order_name'] ?></td> </td> <td><?= $row['order_email'] ?> </td> <td> <?= $row['order_endereco'] ?> </td> <td> <?= $row['order_numero'] ?> </td> <td>R$<?= $row['valor_total'] ?></td> <td><?= $row['id_usuario'] ?> </td> <!---- BOTÃO PARA ABRIR MODAL COM OS PRODUTOS ----> <td> <a class="btn btn-danger pull-right" data-toggle="modal" href="#myModal" id="modellink" data-client="<?= $row['order_id'] ?>">Produtos</a> <div class="modal-container"></div> <!----FIM BOTÃO PARA ABRIR MODAL COM OS PRODUTOS ----> </tr> <?php endwhile; ?> </tbody> </table> </div> <!----- JQUERY PARA ABRIR MODAL -----> <script type="text/javascript"> $(document).ready(function(){ var order_id = $(this).attr("data-client"); var url = "modalbox.php?order_id=" + order_id; $_post(url,{ order_id = order_id, }, jQuery('#modellink').click(function(e) { $('.modal-container').load(url,function(result){ $('#myModal').modal({show:true}); }); }); }); </script> modalbox.php <div id="myModal" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body"> <div class="table-responsive mt-2"> <table class="table table-bordered table-striped text-center"> <thead> <tr> <td colspan="8"> <h4 class="text-center text-info m-0">Produtos dos pedidos</h4> </td> </tr> <tr> <th>ID do pedido</th> <th>ID cliente</th> <th>ID produto</th> <th>Quantidade</th> </tr> </thead> <tbody> <?php extract($order_id); if (isset($_GET['order_id'])) { $order_id = $_GET['order_id']; } else { die("ERRO: ID não definido."); } require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders_items WHERE order_id = '$order_id'"); $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()): ?> <tr> <td> <?= $row['order_id'] ?> </td> <td> <?= $row['id_usuario'] ?></td> </td> <td> <?= $row['product_id'] ?> </td> <td> <?= $row['quantity'] ?> </td> <!------- FIM ITEM REMOVER DO CARRINHO -------> </tr> <?php endwhile; ?> </tbody> </table> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save</button> </div> </div> </div> </div>
  2. granderodeo

    O nome do produto está sendo inserido de forma repetitiva no Mysql

    Não era para o foreach está repetindo os nomes dos produtos, era pra cada ID ter um determinado nome. Realmente não entendo
  3. No meu código $this->details() me retorna todos os detalhes dos produtos, tais como ID, nome do produto, descrição etc. No carrinho de compras quando o usuário finaliza a compra os dados dos itens que ele pediu são inseridos no BD. O problema é que cada produto tem um nome, e quando o usuário finaliza a compra está sendo inserido apenas o Nome do primeiro produto do carrinho repetitivamente. Vejam na foto que o ID do produto é diferente, mas o nome é repetido em todos. Tentei fazer um foreach para tentar resolver o problema, mas continua a mesma coisa. Se alguém puder me ajudar por gentileza, agradeço :) $this->start(); foreach($this->details() as $product_name){ $product = $product_name['product_name']; } // Insert the items if ($pass) { $this->details(); $this->orderID = $this->lastID; $sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES "; $cond = []; foreach ($_SESSION['cart'] as $id=>$qty) { $sql .= "(?, ?, ?, ?),"; array_push($cond, $this->orderID, $id, $qty, $product); } $sql = substr($sql, 0, -1) . ";"; $pass = $this->exec($sql, $cond); }
  4. granderodeo

    O nome do produto está sendo inserido de forma repetitiva no Mysql

    Boa tarde *_*, A única forma que está funcionando é essa que postei, nas demais, como colocar o insert dentro do foreach os resultados vão duplicados. Só que no código que postei só está sendo inserido o primeiro dado do foreach.
  5. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    Tenho as tabelas 'orders' e 'orders_items'. Quando o cliente faz o pedido no site, com nome, endereço, telefone etc, os dados vão para a tabela orders, já os produtos que o cliente pediu vão para a tabela 'orders_items'. A forma que achei de saber qual pedido é de qual cliente, foi dando um id para cada pedido, e inserindo esse mesmo id em ambas tabelas. Agora estou há fazer um painel administrativo para ter uma melhor visibilidade dos pedidos. O que eu fiz no painel, foi exibir todos os pedidos com as informações, e ao lado de cada pedido um botão que exibirá os produtos pedidos por aquele usuário, inclusive vou deixar imagem de como está. Só que quando eu clicar em produtos, mostre somente os produtos comprados por aquele usuário, que como eu disse anteriormente está 'controlado por ID pedido'. Então quero pegar os dados da tabela 'orders_items' relacionados ao tal cliente, me perdoem se não expliquei direito, mas acredito que dê para entender. <body> <!-------------------------------- PEDIDOS -------------------------> <div class="table-responsive mt-2"> <table class="table table-bordered table-striped text-center"> <thead> <tr> <td colspan="8"> <h4 class="text-center text-info m-0">Pedidos realizados</h4> </td> </tr> <tr> <th>ID pedido</th> <th>Nome cliente</th> <th>E-mail</th> <th>Endereço</th> <th>Número da casa</th> <th>Referência</th> <th>ID cliente</th> <!------ REMOVER TODOS ITENS DO CARRINHO -----> <!------ FIM REMOVER TODOS ITENS DO CARRINHO -----> </tr> </thead> <tbody> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders"); $stmt->execute(); $result = $stmt->get_result(); $grand_total = 0; while($row = $result->fetch_assoc()): ?> <tr> <td> <?= $row['order_id'] ?></td> <!-- ID do produto do BD para o carrinho --> <td> <?= $row['order_name'] ?></td> </td> <td><?= $row['order_email'] ?> </td> <td> <?= $row['order_endereco'] ?> </td> <td> <?= $row['order_numero'] ?> </td> <!---- Aumentar ou Diminuir a quantidade do produto -----> <td><?= $row['order_referencia'] ?></td> <!---- Aumentar ou Diminuir a quantidade do produto -----> <!---- Fim Aumentar ou Diminuir a quantidade do produto -----> <td><?= $row['id_usuario'] ?> </td> <!-- preço total do carrinho --> <!------- REMOVER ITEM DO CARRINHO ------> <td> <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModal"> <i class="fa fa-info-circle"></i> Produtos </button> </td> <!------- FIM ITEM REMOVER DO CARRINHO -------> </tr> <?php endwhile; ?> </tbody> </table> </div>
  6. granderodeo

    Como eu gravo os dados de uma SESSÃO em uma variável

    Tenho o seguinte código, onde ele valida o login do usuário e pega os dados dele para serem usados futuramente session_start(); include_once("config/conexao_fornec.php"); if (isset($_POST['enviar'])) { if (!empty($_POST['login']) || !empty($_POST['senha'])) { $login=$_POST['login']; $senha=MD5($_POST['senha']); $comando="SELECT *, usuarios.id_usuario as id_usuario FROM usuarios LEFT JOIN orders ON usuarios.id_usuario = orders.id_usuario WHERE usuarios.email='$login' and usuarios.senha='$senha'"; $enviar=mysqli_query($conn, $comando); $resultado = mysqli_fetch_assoc($enviar); if ($resultado) { $_SESSION['id_usuario'] = $resultado['id_usuario']; $_SESSION['order_date']=$resultado['order_date']; $_SESSION['order_name']=$resultado['order_name']; $_SESSION['order_endereco']=$resultado['order_endereco']; $_SESSION['order_numero']=$resultado['order_numero']; $_SESSION['order_referencia']=$resultado['order_referencia']; $_SESSION['order_id']=$resultado['order_id']; $_SESSION['login']=$resultado['login']; $_SESSION['senha']=$resultado['senha']; $_SESSION['email']=$resultado['email']; $_SESSION['nome']=$resultado['nome']; $_SESSION['seguranca']=$resultado['seguranca']; echo "<script>window.location='../';window.alert('Login efetuado com sucesso!');</script>"; exit; Tenho o seguinte código, onde ele valida o login do usuário e pega os dados dele para serem usados futuramente session_start(); include_once("config/conexao_fornec.php"); if (isset($_POST['enviar'])) { if (!empty($_POST['login']) || !empty($_POST['senha'])) { $login=$_POST['login']; $senha=MD5($_POST['senha']); $comando="SELECT *, usuarios.id_usuario as id_usuario FROM usuarios LEFT JOIN orders ON usuarios.id_usuario = orders.id_usuario WHERE usuarios.email='$login' and usuarios.senha='$senha'"; $enviar=mysqli_query($conn, $comando); $resultado = mysqli_fetch_assoc($enviar); if ($resultado) { $_SESSION['id_usuario'] = $resultado['id_usuario']; $_SESSION['order_date']=$resultado['order_date']; $_SESSION['order_name']=$resultado['order_name']; $_SESSION['order_endereco']=$resultado['order_endereco']; $_SESSION['order_numero']=$resultado['order_numero']; $_SESSION['order_referencia']=$resultado['order_referencia']; $_SESSION['order_id']=$resultado['order_id']; $_SESSION['login']=$resultado['login']; $_SESSION['senha']=$resultado['senha']; $_SESSION['email']=$resultado['email']; $_SESSION['nome']=$resultado['nome']; $_SESSION['seguranca']=$resultado['seguranca']; echo "<script>window.location='../';window.alert('Login efetuado com sucesso!');</script>"; exit; Executar Expandir trecho de código Futuramente vou fazer outra query para pegar os pedidos do usuário que está logado, e simplesmente não consigo por SELECT * FROM orders LEFT JOIN usuarios ON orders.id_usuario = usuarios.id_usuario WHERE usuarios.id='$_SESSION['id_usuario']' Ele dá erro no $_SESSION['id_usuario'], então pensei em fazer assim, na validação onde pego os dados do usuário colocar dentro de uma váriavel, exemplo: $resultado['id_usuario'] = $session_user; OU (não sei se é possível) $_SESSION['id_usuario'].$resultado['id_usuario'] = $session_user; O importante é fazer uma variavel que eu possa utilizar na hora da query. Na página onde faço outra query para assim pegar os pedidos do usuário da SESSÃO está da seguinte forma. <?php require '../config/conexao_fornec.php'; $comando="SELECT * FROM orders LEFT JOIN usuarios ON orders.id_usuario = usuarios.id_usuario"; $result=$conn->query($comando); $result = mysqli_query($conn, $comando); if ($result): while ($row = mysqli_fetch_assoc($result)): ?> <tr> <th scope="row"><?= $row['order_id'] ?></th> <td><?= $row['order_date'] ?></td> <td><?= $row['order_name'] ?></td> <td><?= $row['order_endereco'] ?></td> <td><?= $row['order_numero'] ?></td> <td><?= $row['order_referencia'] ?></td> </tr> <?php endwhile; endif; ?>
  7. Estou tentando pegar dados de duas tabelas logo no inicio da sessão quando o usuário realiza o login, quando utilizo o SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' Consigo realizar o login tranquilamente, até ai de boa, mais quando modifico o código para $comando="SELECT * FROM usuarios INNER JOIN orders ON usuarios.id_usuario = orders.id_usuario WHERE email.usuarios='$login' and senha.usuarios='$senha'"; Ele só me deixa fazer login se o usuário já tiver algum orders (pedido). O que estou tentando fazer é assim que o usuário loga, mostre também os pedidos que ele já fez etc, que são dados que estão em outra tabela. Alguém consegue ver meu erro?
  8. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    Sim está dando tudo certo, o único porém é que ele só me retorna o primeiro produto do pedido
  9. granderodeo

    Mostrar mensagem 'Login efetuado com sucesso'

    Queria que quando o usuário efetuasse o login, exibisse a mensagem "Login efetuado com sucesso", e se houve algum erro também exibisse uma mensagem de erro. valida_login.php <?php session_start(); include_once("config/conexao_fornec.php"); if (isset($_POST['enviar'])) { if (!empty($_POST['login']) || !empty($_POST['senha'])) { $login=$_POST['login']; $senha=MD5($_POST['senha']); $comando="SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' and id_usuario"; $enviar=mysqli_query($conn, $comando); $resultado= mysqli_fetch_assoc($enviar); if ($resultado) { $_SESSION['id_usuario']=$resultado['?']; $_SESSION['order_date']=$resultado['order_date']; $_SESSION['order_id']=$resultado['order_id']; $_SESSION['login']=$resultado['login']; $_SESSION['senha']=$resultado['senha']; $_SESSION['email']=$resultado['email']; $_SESSION['nome']=$resultado['nome']; $_SESSION['id']=$resultado['id']; $_SESSION['seguranca']=$resultado['seguranca']; header("location:../index.php"); exit; }else{ $_SESSION['msg'] = "<div class='alert alert-success'>Versão e Revisão cadastrada com sucesso!</div>"; } }else{ $_SESSION['mensagem']="<div class='alert alert-danger alert-dismissible text-center' style='width: 24.5%; position: absolute; margin-left: 38.2vw; margin-top: 3vh;'><button type='button' class='close' data-dismiss='alert'>&times;</button>Ops! Alguns dos campos ficou em branco.</div>"; header("location:https://compre-aqui.com/users/"); exit; } }else{ header("location:users"); exit; } ?> Corpo do login <section class="hero is-success is-fullheight"> <div class="hero-body"> <div class="container has-text-centered"> <div class="column is-4 is-offset-4"> <h2 class="text-center mb-4">Faça seu login</h2> <div class="box"> <form action="validar_login.php" method="POST"> <div class="field"> <div class="form-group"> <label for="name">E-mail</label> <input name="login" id="name" type="name" class="form-control" placeholder="Nome completo"> </div> </div> <div class="field"> <div class="form-group"> <label for="senha">Senha</label> <input name="senha" id="senha" class="form-control" type="password" placeholder="Senha"> </div> </div> <button type="submit" class="btn btn-info btn-block" name="enviar">Realizar login</button> </form> <hr style="background-color: white;"> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Esqueci minha senha</a> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Cadastre-se</a> </div> </div> </div> </div> </section>
  10. granderodeo

    Mostrar mensagem 'Login efetuado com sucesso'

    Mostrar mensagens caso, o login ou senha estejam errado, e se estiver certo mostrar outra mensagem de "Login efetuado com sucesso" e redirecionar.
  11. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    Vê só consegui, pegar os dados, mais se por exemplo o pedido número 110 pediu 5 produtos, com o código abaixo consigo exibir, mais ele só exibi o primeiro resultado ou seja só exibi o primeiro produto. <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModal<?= $row['order_id'] ?>"> <i class="fa fa-info-circle"></i> Produtos </button> </td> <!- - - FIM BOTÃO MODAL - - -> </tr> <?php endwhile; ?> </tbody> </table> </div> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders, orders_items"); $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()): ?> <div class="modal fade" id="exampleModal<?= $row['order_id'] ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <?= $row['order_id'] ?> <?= $row['product_id'] ?> <! - - Consigo pegar o produto pelo id do pedido, mais só me retorna o 1º valor - -> <?= $row['quantity'] ?> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div> <?php endwhile; ?>
  12. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    <!-------------------------------- PEDIDOS -------------------------> <div class="table-responsive mt-2"> <table class="table table-bordered table-striped text-center"> <thead> <tr> <td colspan="8"> <h4 class="text-center text-info m-0">Pedidos realizados</h4> </td> </tr> <tr> <th>ID pedido</th> <th>Nome cliente</th> <th>E-mail</th> <th>Endereço</th> <th>Número da casa</th> <th>Referência</th> <th>ID cliente</th> </tr> </thead> <tbody> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders"); $stmt->execute(); $result = $stmt->get_result(); $grand_total = 0; while($row = $result->fetch_assoc()): ?> <tr> <td> <?= $row['order_id'] ?></td> <td> <?= $row['order_name'] ?></td> </td> <td><?= $row['order_email'] ?> </td> <td> <?= $row['order_endereco'] ?> </td> <td> <?= $row['order_numero'] ?> </td> <td><?= $row['order_referencia'] ?></td> <td><?= $row['id_usuario'] ?> </td> <td> <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModal<?= $row['order_id'] ?>"> <i class="fa fa-info-circle"></i> Produtos </button> </td> </tr> <?php endwhile; ?> </tbody> </table> </div> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders"); $stmt->execute(); $result = $stmt->get_result(); $grand_total = 0; while($row = $result->fetch_assoc()): ?> <div class="modal fade" id="exampleModal<?= $row['order_id'] ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <?= $row['order_id'] ?> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div> <?php endwhile; ?>
  13. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    Como vocês veem usei uma janela modal, para mostrar os produtos pedidos, até ai tá tudo certo quando clico em 'produtos' na janela modal que abre mostra o id certinho, do tal pedido que eu cliquei. Mas quero que mostre dados relacionados a esse mesmo ID vindo de outra tabela. Tentei da seguinte forma, mais a janela modal não abre mais, então suponho que o código esteja errado $stmt = $conn->prepare("SELECT order_id, FROM orders LEFT JOIN orders_items ON order_id = order_id ON product_id = product_id ON quantity = quantity"); $stmt->execute(); $result = $stmt->get_result(); $grand_total = 0; while($row = $result->fetch_assoc()): TENTEI TAMBÉM "SELECT order_id FROM orders INNER JOIN orders_items on orders.order_id = orders_items.order_id"); mais a janela modal novamente não abre, ou seja, o código deve estar errado
  14. granderodeo

    Busca interna com PHP mysql

    Obrigado amigo *_*
  15. granderodeo

    Busca interna com PHP mysql

    Olá, estou fazendo um formulário de busca, para ele me retornar o valor que pesquisei do bando de dados, mais ao clicar em pesquisar nenhuma ação acontece. Por favor alguém consegue identificar o erro? header.php <div class="search-bar-control ml-5"> <div class="search-bar-control-item"> <form method="POST" action="results.php"> Buscar no site: <input type="text" name="buscar"> <input type="submit" value="Ir"> </form> </div> </div> results.php <?php include "connection.php "; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <title>Resultados da busca</title> <meta charset="utf-8"> </head> <body> <?php $buscar = $_POST['buscar']; $sql = mysql_query("SELECT * FROM products WHERE product_name LIKE '%".$buscar."%'"); $row = mysql_num_rows($sql); if($row > 0){ while($linha = mysql_fetch_array($sql)){ $nome = $linha['product_name']; $valor = $linha['product_price']; $descricao = $linha['product_description']; echo "<strong>Nome do produto:</strong>".$nome; } }else{ echo "Desculpe, nenhum produto foi encontrado"; } ?> </body> </html> connection.php <?php $host = '127.0.0.1:3306'; $username = 'usuario'; $password = 'senha'; $database = 'banco'; $connection = mysql_connect($host, $username, $password) or die (mysql_error()); mysql_select_db ($database) or die (mysql_error()); ?>
  16. Olá, tenho uma tabela chamada products, com uma coluna chamada categorias. Dentro da coluna 'categorias' tenho produtos com categorias distintas como 'bebidas', 'doces', 'salgados', etc. Quero que o php retorne apenas os produtos com o categoria 'bebidas' isso é possível, ou devo criar uma tabela para cada categoria? No momento estou usando o código abaixo, mas ele me retorna todos os produtos, e eu só quero aqueles de determinada categoria. <?php $sql="SELECT * FROM product"; $result=$conn->query($sql); while($row=$result->fetch_assoc()){ ?> <div class="col-sm-6 col-md-4 col-lg-3 mb-2"> <div class="card-deck"> <div class="card p-2 border-secondary mb-2"> <img src="<?= $row['product_image']; ?>" class="card-img-top"> <p class="text-center"> <?= $row['product_name']; ?><br> </p> <h4 class="card-title text-center">Por : R$<?= $row['product_price'] ?></h4> <form accept-charset="utf-8" action="" class="form-submit"> <input type="hidden" class="pid" value="<?= $row['id'] ?>"> <input type="hidden" class="pname" value="<?= $row['product_name'] ?>"> <input type="hidden" class="pprice" value="<?= $row['product_price'] ?>"> <a href=""><input type="hidden" class="pimage" value="<?= $row['product_image'] ?>"></a> <input type="hidden" class="pcode" value="<?= $row['product_code'] ?>"> <button class="btn btn-success btn-block addItemBtn"><i class="fa fa-shopping-cart"></i> Adicionar ao Carrinho</button> </form> </div> </div> </div> <?php } ?>
  17. Criei um formulário para envio dos pedidos, assim que o cliente colocar os dados e concluir a compra. Fiz a maior parte com requisições ajax, está tudo funcionando perfeitamente, e como certeza disso, após clicar em finalizar compra, o cliente é redirecionado para página '4d-thank-you.php', onde ele recebe a mensagem de que o pedido foi efetuado com sucesso. Mais eu quero adicionar mais um campo, para o cliente inserir o endereço, mais já tentei de todas as formas, efetuo todas modificações certinhas, e quando clico em Finalizar compra, o cliente não é mais redirecionado para a página '4d-thank-you.php', ou seja a requisição não está sendo feita com sucesso. Vou deixar abaixo os códigos que fazem o carrinho funcionar e a inserir os dados do formulário no Mysql, esse código está funcionando, porém, quando adiciono mais um campo ele para de funcionar, se puderem me ajudar preciso urgente para um projeto. Esse é o carrinho, e a parte onde o cliente coloca as informações para concluir o pedido. <?php // SHOPPING CART WILL BE STORED IN THE SESSION // $_SESSION['cart'][PRODUCT ID] = QUANTITY require __DIR__ . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR . "2a-config.php"; switch ($_POST['req']) { /* [INVALID REQUEST] */ default: echo "INVALID REQUEST"; break; /* [ADD ITEM TO CART] */ case "add": if (is_numeric($_SESSION['cart'][$_POST['product_id']])) { $_SESSION['cart'][$_POST['product_id']] ++; } else { $_SESSION['cart'][$_POST['product_id']] = 1; } echo "Produto adicionado ao carrinho"; break; /* [COUNT TOTAL NUMBER OF ITEMS] */ case "count": $total = 0; if (count($_SESSION['cart'])>0) { foreach ($_SESSION['cart'] as $id => $qty) { $total += $qty; } } echo $total; break; /* [SHOW CART] */ case "show": // Fetch products require PATH_LIB . "2b-lib-db.php"; require PATH_LIB . "4c-lib-cart.php"; $cartLib = new Cart(); $products = $cartLib->details(); // Cart contents in HTML $sub = 0; $total = 0; ?> <h1 style="font-family: 'Gotham Light;'" class="text-center text-info mt-2">Minhas compras&nbsp;<i class="fa fa-gift"></i></h1> <table id="cart-table"> <tr> <th>Remover</th> <th>Quantidade</th> <th>Nome do produto</th> <th>Preço</th> </tr> <?php if (count($_SESSION['cart'])>0) { foreach ($_SESSION['cart'] as $id => $qty) { $sub = $qty * $products[$id]['product_price']; $total += $sub; ?> <tr> <td> <a href="#" class="text-danger lead" onclick="cart.remove(<?= $id ?>);"> <i class="fa fa-trash"></i></a> </td> <td><input class="form-control" id='qty_<?= $id ?>' onchange='cart.change(<?= $id ?>);' type='number' value='<?= $qty ?>'/></td> <td><?= $products[$id]['product_name'] ?></td> <td><?= sprintf("$%0.2f", $sub) ?></td> </tr> <?php }} else { ?> <tr align="center" ><td colspan="3" align="center">&nbsp;Seu carrinho está vazio&nbsp;&nbsp;<button class="btn btn-success"><a style="color: white; text-decoration: none;" href="index.php">Continuar comprando</a></button></td></tr> <?php } ?> <tr> <td colspan="2"></td> <td><strong>Preço total</strong></td> <td><strong><?= sprintf("$%0.2f", $total) ?></strong></td> </tr> </table> <hr> <?php if (count($_SESSION['cart']) > 0) { ?> <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg"><i class="fa fa-credit-card"></i>&nbsp;Finalizar Compra</button> <div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <form class="p-2" onsubmit="return cart.checkout();"> <div class="form-row"> <div class="form-group col-md-6"> <label for="co_name">Nome completo</label> <input type="text" class="form-control" id="co_name" placeholder="Nome completo"> </div> <div class="form-group col-md-6"> <label for="co_email">Seu email</label> <input type="email" class="form-control" id="co_email" value="" disabled> </div> </div> <div class="form-group"> <label for="co_address">Rua, Sítio</label> <input type="text" class="form-control" id="co_address" placeholder="Digite a rua ou sítio onde mora"> </div> <div class="form-group"> <label for="inputAddress2">Bairro</label> <input type="text" class="form-control" id="inputAddress2" placeholder="Digite o bairro onde mora"> </div> <div class="form-row"> <div class="form-group col-md-4"> <label for="inputState">Município</label> <select id="inputState" class="form-control" disabled> <option>União dos Palmares</option> </select> </div> <div class="form-group col-md-2"> <label for="inputZip">Zip</label> <input type="text" class="form-control" id="inputZip"> </div> </div> <input type="submit" class="btn btn-info btn-block" value="checkout"> </form> </div> </div> </div> <!---- FIM FINALIZAR COMPRA E MAIS DUVIDAS -----> <?php } break; /* [CHANGE QTY] */ case "change": if ($_POST['qty'] == 0) { unset($_SESSION['cart'][$_POST['product_id']]); } else { $_SESSION['cart'][$_POST['product_id']] = $_POST['qty']; } echo "Ação realizada com sucesso"; break; /* [CHECKOUT] */ // @TODO // Beef up this section on your own! // There are no error & security checks in this simple example // You may also want to add more of your own checkout procedures here case "checkout": require PATH_LIB . "2b-lib-db.php"; require PATH_LIB . "4c-lib-cart.php"; $cartLib = new Cart(); if ($cartLib->checkout($_POST['name'], $_POST['email'])) { $_SESSION['cart'] = []; echo "OK"; } else { echo $cartLib->error; } break; /* [ALTERNATIVE CHECKOUT] */ // This version sends an email to the customer on successful checkout case "checkout-email": require PATH_LIB . "2b-lib-db.php"; require PATH_LIB . "4c-lib-cart.php"; $cartLib = new Cart(); if ($cartLib->checkout($_POST['name'], $_POST['email'])) { $_SESSION['cart'] = []; // @TODO // Format this email message as you see fit $order = $cartLib->get($cartLib->orderID); $to = $_POST['email']; $subject = "Order Received"; $message = ""; foreach ($order['items'] as $pid=>$p) { $message .= $p['product_name'] . " - " . $p['quantity'] . "<br>"; } $headers = implode("\r\n", [ 'MIME-Version: 1.0', 'Content-type: text/html; charset=utf-8', 'From: john@doe.com' ]); echo @mail($to, $subject, $message, $headers) ? "OK" : "ERROR sending email!" ; } else { echo $cartLib->error; } break; } ?> Aqui é feita a inserção do formulário no Mysql <?php class Cart extends DB { function details () { // details() : get details of items in cart // Empty if (count($_SESSION['cart'])==0) { return false; } // Get products in cart $sql = "SELECT * FROM `products` WHERE `product_id` IN ("; $sql .= str_repeat('?,', count($_SESSION['cart']) - 1) . '?'; $sql .= ")"; return $this->fetch($sql, array_keys($_SESSION['cart']), "product_id"); } function checkout ($name, $email) { // checkout() : checkout, create new order // PARAM $name : customer's name // $email : customer's email address // Init $this->start(); // Create the order entry first $pass = $this->exec( "INSERT INTO `orders` (`order_name`, `order_email`) VALUES (?, ?)", [$name, $email] ); // Insert the items if ($pass) { $this->orderID = $this->lastID; $sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`) VALUES "; $cond = []; foreach ($_SESSION['cart'] as $id=>$qty) { $sql .= "(?, ?, ?),"; array_push($cond, $this->orderID, $id, $qty); } $sql = substr($sql, 0, -1) . ";"; $pass = $this->exec($sql, $cond); } // Finalize $this->end($pass); return $pass; } function get ($id) { // get () : get order // PARAM $id : order ID $order = $this->fetch( "SELECT * FROM `orders` WHERE `order_id`=?", [$id] ); $order['items'] = $this->fetch( "SELECT * FROM `orders_items` LEFT JOIN `products` USING (`product_id`) WHERE `orders_items`.order_id=?", [$id], "product_id" ); return $order; } } ?> Esse é o script, que ajuda nas funcionalidades do Carrinho de compras. // @TODO - // There is literally little to no interface in this script. // Feedback meesage such as "item added to cart" uses raw Javascript alert // Bootstrap, jQuery, Angular, or vanilla CSS - Implement your own interface. var cart = { ajax : function (opt) { // ajax() : helper function, do AJAX request // PARAM opt.data : data to be sent, an object with key-value pairs // opt.url : target URL // opt.target : (optional) ID of HTML element, put server response in here if provided // opt.load : (optional) function to call when AJAX load is complete // DATA var data = null; if (opt.data) { data = new FormData(); for (var d in opt.data) { data.append(d, opt.data[d]); } } // AJAX var xhr = new XMLHttpRequest(); xhr.open('POST', opt.url, true); xhr.onload = function(){ if (xhr.status!=200) { console.log(xhr); alert("AJAX error. Server responded with error code " + xhr.status + " " + xhr.statusText); } else { if (opt.target) { document.getElementById(opt.target).innerHTML = this.response; } if (typeof opt.load == "function") { opt.load(this.response); } } }; xhr.send(data); }, add : function (id) { // add () : add item to cart // PARAM id : product ID cart.ajax({ url : "4b-ajax-cart.php", data : { req : "add", product_id : id }, load : function (res) { cart.count(); // @TODO alert(res); } }); }, count : function () { // count() : update items count cart.ajax({ url : "4b-ajax-cart.php", data : { req : "count", }, target : "page-cart-count" }); }, toggle : function (reload) { // toggle() : show/hide cart // PARAM reload : force cart reload? var pgPdt = document.getElementById("page-products"), pgCart = document.getElementById("page-cart"); if (reload || pgCart.classList.contains("ninja")) { cart.ajax({ url : "4b-ajax-cart.php", data : { req : "show", }, target : "page-cart", load : function () { pgPdt.classList.add("ninja"); pgCart.classList.remove("ninja"); } }); } else { pgPdt.classList.remove("ninja"); pgCart.classList.add("ninja"); } }, change : function (id) { // change() : change quantity var qty = document.getElementById("qty_"+id).value; cart.ajax({ url : "4b-ajax-cart.php", data : { req : "change", product_id : id, qty : qty }, load : function (res) { cart.count(); cart.toggle(1); // @TODO alert(res); } }); }, remove : function (id) { // remove() : remove item from cart document.getElementById("qty_"+id).value = 0; cart.change(id); }, checkout : function () { // checkout () : checkout cart.ajax({ url : "4b-ajax-cart.php", data : { req : "checkout", // @TODO // Change to checkout-email if you want an email to be sent on checkout // req : "checkout-email", name : document.getElementById("co_name").value, email : document.getElementById("co_email").value, }, load : function (res) { if (res=="OK") { window.location = "4d-thank-you.php"; } else { gen.nShow(res); } } }); return false; } }; window.addEventListener("load", cart.count);
  18. granderodeo

    Como mostrar o nome após realizar login

    Olá, criei uma página de login/registro/recuperação de senha, que ao efetuar o login queria que mostrasse o nome da pessoa que está logada, porém só consigo exibir o email, segue abaixo os códigos. loginProcess.php <?php ob_start(); session_start(); require_once 'inc/dbconnection.php'; require_once 'inc/functions.php'; $errorMsg = ""; $email =trim($_POST["lemail"]); $password =trim($_POST["lpassword"]); if(empty($email)){ $errorMsg .="<li>Email is required</li>"; } else { $email = filterEmail($email); if($email == FALSE){ $errorMsg .="<li>Invalid Email format</li>"; } } if(empty($password)) { $errorMsg .= "<li>Password required</li>"; } else { $password = $password; } if(empty($errorMsg)) { $query = $db->prepare("SELECT password FROM users WHERE email = ?"); $query->execute(array($email)); $pwd = $query->fetchColumn(); if(password_verify($password, $pwd)){ $_SESSION['email'] = $email; echo json_encode(['code' =>200, 'email'=>$_SESSION['email']]); exit; } else { echo json_encode(['code' =>400, 'msg'=>'Invalid UserName / Password']); exit; } } else { echo json_encode(['code'=>404, 'msg'=>$errorMsg]); } ?> dashboard.php <?php ob_start(); session_start(); require_once 'inc/dbconnection.php'; if(isset($_SESSION) && $_SESSION["email"]) { echo '<a href="logout.php"><span class="glyphicon glyphicon-log-out"></span>Sign Out</a><br>'; echo "Hallo ". $_SESSION['email']; } else { header("Location: index.php"); } Quando coloco o email aparece, mais quando coloco 'name' fica tudo em branco.
  19. granderodeo

    Ao redefinir senha eu não consigo mais realizar o login

    Bom dia, criei um sistema de login, com redefinição de senha por email. O sistema está funcionando direitinho, envia o link para redefinir para o email, e do email vou para a página para trocar a senha, efetuo a troca da senha e atualiza no banco de dados normalmente. Porém quando vou fazer o login da "login ou senha incorretos". Mais quando eu me cadastro no site e efetuo o login ele realiza o login, mais quando redefino a senha não consigo mais fazer o login. Não sei o que está acontencendo, ALGUÉM TEM UM SISTEMA ou alguma página de ajuda para criar uma página para redefinir a senha. Obrigado!
  20. granderodeo

    Criando página de produto php

    tentei fazer assim ele leva para página product.php, com o id, mais fica tudo em branco. index.php <a href="product.php?product_id=<?= $row['product_id'] ?>"> <img src="images/<?= $row['product_image']; ?>" class="card-img-top"> </a> product.php <?php require_once ("config_bebidas.php"); // Que liga ao banco de dados $products = $_GET["product_id"]; if (is_array($products)) { foreach ($products as $id => $row) { ?> <img src="images/<?= $row['product_image'] ?>" <?php }}; ?>
  21. granderodeo

    Criando página de produto php

    Olá tenho a página index.php e tenho a página product.php, ao clicar no produto na página inicial, quero que redirecione para página product.php mostrando os dados do determinado produto que cliquei, iniciei o código mais não está dando certo, Obrigado. index.php <?php if (is_array($products)) { foreach ($products as $id => $row) { ?> <div class="col-sm-6 col-md-4 col-lg-3 mb-2"> <div class="card-deck"> <div class="card p-2 border-secondary mb-2"> <a href="product.php?id=<?= $row['product_id'] ?>"> <div class="hover-image"> <img class="card-img-top border-secondary" src="images/<?= $row['product_image'] ?>"/> <a href="#"><span class="texto"></span></a> </div> </a> <h3 class="text-center"><?= $row['product_name'] ?></h3> <div class="text-center text-black rounded p-1" style="font-size: 20px;">Valor&nbsp;$<?= $row['product_price'] ?></div> <button class="btn btn-success btn-block" type="button" value="Add to cart" onclick="cart.add(<?= $row['product_id'] ?>);">Adicionar ao carrinho</button> </div> </div> </div> <?php } } else { echo "No products found."; } ?> product.php <?php $products = $_GET["product_id"]; if (is_array($products)) { foreach ($products as $id => $row) { }}; $row['product_name'] ?>
  22. granderodeo

    Como usar o select para chamar determinado nome em uma coluna

    na página index.php no href fiz da seguinte forma <a href="verproduto.php?id=<?php echo $post['id'];?>"><img src="<?= $row['product_image']; ?>" class="card-img-top"></a> mas não redireciona para a página verproduto.php
  23. granderodeo

    Como usar o select para chamar determinado nome em uma coluna

    Ok, mais se eu tenho uma página verproduto.php, só quero apenas mudar as informações nela de acordo com o produto que o cliente clicou, é possível?
  24. granderodeo

    Como usar o select para chamar determinado nome em uma coluna

    Pode citar um exemplo por favor, nunca fiz isso
  25. granderodeo

    Como criar uma página igual com conteúdos diferentes

    A página index.php, com o While eu chamo todos os produtos do banco de dados, oq eu gostaria é que ao clicar sobre o produto na index.php, ele fosse para um página com as informações daquele produto. Como uma loja virtual.
×

Informação importante

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