Try using Ajax and COOKIES, you create a PHP file that adds the requests to the list (that would be the cookie) and puts a javascript function that calls this file via ajax on the button "OK", takes the response from the XML file and adds to the JS page.
Example of how I used in a project:
PHP:
<?php // Página que adiciona os produtos no carrinho
$id = $_GET['id']; // ID do produto selecionado
if (!isset($_COOKIE['carrinho'])) { // Verifica se o carrinho está vazio
$carrinho = [0 => $id]; // A 1ª posição do array $carrinho (criado aqui) recebe o id do produto
setcookie('carrinho', serialize($carrinho), time()+60*60*24*14, '/'); // Serializa o array no COOKIE carrinho
} else {
$carrinho = unserialize($_COOKIE['carrinho']); // Se não estiver vazio, cria um array com todos os produtos do carrinho
$colocar = false; // Booleano que uso pra não repitir o mesmo produto
// Checo se o produto selecionado já está no carrinho
for ($i=0; $i < count($carrinho); $i++) {
if (!(in_array($id, $carrinho))) {
$colocar = true;
}
}
// Só adiciono ao carrinho se não tiver o produto nele ainda
if ($colocar == true) {
$carrinho[] = $id;
}
// Serializo o array dentro do COOKIE carrinho
setcookie('carrinho', serialize($carrinho), time()+60*60*24*14, '/');
}
// Mando o número de produtos no carrinho como resposta, apenas para atualizar a tela do usuário
echo count($carrinho);
?>
JS:
// Função que adiciona o produto no carrinho
function adicionarCarrinho(id) {
id = $(id).val(); // Pego o ID do produto como parâmetro (vc pode colocar o id no value do botão)
AjaxRequest();
if (!Ajax) {
alert("Erro na chamada Ajax");
} else {
Ajax.onreadystatechange = respostaCarrinho;
Ajax.open('GET', '_assets/ajax/adicionarCarrinho.php?id='+id); // Mando o ID para a página PHP por meio do Ajax
Ajax.send(null);
Ajax.close;
}
}
// Função de resposta
function respostaCarrinho() {
if (Ajax.readyState == 4) {
if (Ajax.status == 200) {
$("#itens").text(Ajax.responseText); // Mudo o valor escrito no carrinho
if (Ajax.responseText == '0') {
alert('Você não tem produtos no carrinho');
window.location.href='index.php'
}
}
}
}
So, sorry, one thing I didn’t comment, the products are already registered in the bank, calling the bank products would not be a problem, but rather add the list using them without reloading the page
– Rodrigo Prado
So, I don’t really know if this is the best way to do it, but in an old project I used ajax to call a page that set a cookie containing an array of products selected by the user.
– Victor S.
You can show me an example, I’m still in doubt, about how it works, I’m trying with Session, but it’s not working
– Rodrigo Prado
I left as an example the code I used in a course work, remembering that I am not completely sure q this would be the best method, I started a short time with Ajax, but for me it worked as expected.
– Victor S.