Minha duvida e a seguinte, tenho uma pagina de produto http://127.0.0.1/ecommerce/produto.php?id=20
, e ao clicar em um botão compra, terá uma tela de confirmação da compra, qual a melhor maneira de estar conseguindo pegar os dados que estão cadastrados no id = 20
.
Use assim:
(PHP 5 >= 5.2.0, PHP 7)
<?php
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!empty($id)))
{
//o id é um número
}
else
{
// o id é inválido ou nulo
}
PHP < 5.2
<?php
$id = isset($_GET['id']) && is_numeric($_GET['id']) ? (int)$_GET['id']: NULL;
if (!empty($id))
{
//o id é um número
}
else
{
//o id é inválido ou nulo
}
As duas formas estão corretas, mas, se o seu PHP é maior ou igual 5.2 faça o primeiro método.
Link Referencias para leitura:
Bom cara, não sei se implementei corretamente mas segue abaixo o código da pagina de checkout.php
:
<!DOCTYPE html>
<html>
<?php
$conexao = mysqli_connect("127.0.0.1","root","","WD43");
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$dados = mysqli_query($conexao, "select * from produtos where id = '$id' ");
$produto = mysqli_fetch_array($dados);
?>
<head>
<meta charset="UTF-8">
<title>Checkout Mirror Fashion</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="css/bootstrap.css">
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>Ótima escolha!</h1>
<p>Obrigado por comprar na Mirror Fashion!
Preencha seus dados para efetivar a compra.</p>
</div>
</div>
<div class="panel panel-default">
<div class="painel-heading">
<h2 class="painel-title">Sua compra </h2>
</div>
</div>
<div class="painel-body">
<img src="img/produtos/foto<?= $produto['id']?>-<?= $produto['cor']?>.png" class="img-thumbnail img-responsive">
<?php
if (!empty($id))
?>
<dl>
<div class="container">
<dt>Produto</dt>
<dd><?= $produto['nome'] ?> </dd>
<dt>Preço</dt>
<dd><?= $produto['preco'] ?> </dd>
<dt>Cor</dt>
<dd><?= $produto['cor'] ?></dd>
<dt>Tamanho</dt>
<dd><?= $produto['tamanho'] ?></dd>
</div>
</dl>
</div>
</body>
</html>
Ve o que posso estar fazendo de errado ainda não puxa os dados
Cadê a checagem igual eu fiz se o id realmente foi preenchido.
Se não viu!
if (!empty .....
E ai se ele não encontrar você coloca um desvio no seu código!
Outra coisa se o número for inteiro faça assim:
$dados = mysqli_query($conexao, "select * from produtos where id = $id");
ou
$dados = mysqli_query($conexao, "select * from produtos where id = ". $id);
Ou seja, retire as asp simples., já que é um número a ser pesquisado.
Então quando passo o sql desta maneira ele retorna esse erro:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\Arquivos de programas\EasyPHP-DevServer-14.1VC9\data\localweb\ecommerce\checkout.php on line 9,
será que pode não estar pegando o Id da pagina do produto?
Depois dessa linha
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
faça assim
echo $id;
verifique se ele está pegando o $id
;
Você comece a aprender a debugar para que consiga resolver esses problemas básicos, nós, nunca vamos conseguir resolver isso já visto que o código roda ai!