For security reasons, I recommend using a Framework for creating virtual stores, because they offer greater security, creating stores in this way, it is usually for people who already have knowledge in the area, and are familiar with security measures, and programming norms, or even for those who simply want to understand the dynamics of a virtual store.
For illustration, I'll use a% multidimensional% for the database turn, and the respective articles in it. But first, let's start a session, and create an immutable variable (in the sense of resisting refeshes ):
session_start();
if(!isset($_SESSION['cesto'])){
$_SESSION['cesto'] = array();
}
And then% w / w of the products that will be used in the example:
// produtos
$produtos = array(
array(
'id' => 1,
'nome' => 'Lapis',
'preco' => 50
),
array(
'id' => 2,
'nome' => 'Marcador',
'preco' => 20
),
array(
'id' => 3,
'nome' => 'Borracha',
'preco' => 10
),
array(
'id' => 4,
'nome' => 'Mochila',
'preco' => 200
)
);
Next, you'll need to list them the way you want, but you'll have to define a method of capture array
or array
, of course for GET
you'd use ajax in order to be able to dynamize the process, in this case I will use POST
to construct a POST
containing the GET
of the product and the action .
// listar produtos
foreach($produtos as $produto){
print "<p>{$produto['nome']} ({$produto['preco']}) - <a href=\"?produto={$produto['id']}&a=adicionar\">adicionar</a></p>";
}
If you have the products, the list of products, variable that will keep them, now only the basket is missing, let's see:
// cesto
if(!empty($_SESSION['cesto'])){
$total = 0;
print "<strong>cesto (" . count($_SESSION['cesto']) . ")</strong><br>";
foreach($_SESSION['cesto'] as $item => $detalhes){
print $detalhes['nome'] . " x " . $detalhes['quantidade'] . "<br>";
$total += $detalhes['quantidade'] * $detalhes['preco'];
}
print "<strong>total: </strong>" . number_format($total, 2);
} else {
print "<strong>cesto vazio</strong>";
}
Now to make the basket work so we can add the items to it:
// adicionar itens ao carrinho
if(isset($_GET['produto']) && isset($_GET['a'])){
if($_GET['a'] == 'adicionar'){
if(!empty($_SESSION['cesto'])){
foreach($_SESSION['cesto'] as $item => $produto){
if($item == $_GET['produto']){
$_SESSION['cesto'][$item]['quantidade'] = $produto['quantidade'] + 1;
break;
} else {
foreach($produtos as $produto){
if($produto['id'] == $_GET['produto']){
$_SESSION['cesto'][$produto['id']] = ['nome'=>$produto['nome'], 'preco'=>$produto['preco'], 'quantidade'=>1];
break;
}
}
}
}
} else {
foreach($produtos as $produto){
if($produto['id'] == $_GET['produto']){
$_SESSION['cesto'][$produto['id']] = ['nome'=>$produto['nome'], 'preco'=>$produto['preco'], 'quantidade'=>1];
}
}
}
}
}
EDIT:
To return the products through the database, you can do this for example.
$produtos = array();
$stmt = $link->query("SELECT * FROM produtos");
while($linha = $stmt->fetch_assoc()){
array_push($produtos, $linha);
}
I recommend that you read this tutorial here, you can better see how to manipulate data in loops in>, and how to make connections to the database.
You can still see the full code here at pastebin .