How to pass product information with parameters and pull in shopping cart?

Asked

Viewed 43 times

0

i am new in the programming area and am creating an Ecommerce, until I came across the following situation when submitting my form via ajax.

Items sold on the site have parameters, for example:

The user can buy Project 01, but within Project 01, he can choose among some items, such as an electrical project, a structural project, among other projects still belonging to Project 01.

I am creating a session to store the parameters of each selected project.

But I’m not sure how I could store the data of a project inside an array that automatically stores the chosen items of its respective project.

This is my request where to send mu ajax to create my session.

<?php
    include('../config.php');
    //Declaração de sessões
    if (isset($_POST['nome']) && isset($_POST['codigo']) && isset($_POST['id']) && isset($_POST['valor'])) {

        $conteudo = [$_POST['nome'],(int)$_POST['codigo'],(int)$_POST['id'],$_POST['valor']];
        $idProjeto = (int)$_POST['id'];

        if (isset($_SESSION['pack']) == false) {
            $_SESSION['pack'] = [];
        }

        if (isset($_SESSION['pack'][$idProjeto]) == false) {
            $_SESSION['pack'][$idProjeto];
            $_SESSION['pack'][$idProjeto][1] = $conteudo;
        }else{
            $_SESSION['pack'][$idProjeto][] = $conteudo;
        }

        echo json_encode($_SESSION['pack']);
    }
?>

In my shopping cart I am rescuing my session this way.

    <ol>
    <!-- Aqui são os nome dos itens que foram selecionados no projeto pelo usuário -->
        <?php
            $retornoProjeto = $_SESSION['pack'];
            foreach ($retornoProjeto as $key2 => $retornoProjeto[]) {
                foreach ($retornoProjeto[$key2] as $key3 => $retorno2) {
                    if ($retornoProjeto[$key2][$key3][1] === $$_SESSION['carrinho']) {
        ?>      
        <li><?php echo $retornoProjeto[$key2][$key3][0]; ?></li>
        <hr>
        <?php 
            }
                }
                    } 
        ?>
        <ol>
        <!-- Aqui é o valor dos itens que foram selecionados no projeto pelo usuário -->
        <?php
            $retornoProjeto = $_SESSION['pack'];
            foreach ($retornoProjeto as $key2 => $retornoProjeto[]) {
                foreach ($retornoProjeto[$key2] as $key3 => $retorno2) {
                    if ($retornoProjeto[$key2][$key3][1] === $_SESSION['carrinho']) {
        ?>          
        <li>R$ <?php echo $retornoProjeto[$key2][$key3][3]; ?></li>
        <hr>
        <?php 
        }
            }
                } 
        ?>
        
        </ol>

Each Project sold has 7 optional items. If you can help me please would be very grateful!!! I really stuck on this part, first site hehe Thanks in advance!!

2 answers

0

I took a look at your code, and I have a suggested improvement, based on php Sniffer, code smeel and clean code. This makes it easier to understand and with fewer lines. Tip: try to study these 3 subjects, will help you a lot.

<?php
include('../config.php');

// Inicia a session
session_start();

if(!isset($_POST['nome'])){
    return "name is required";
}
if(!isset($_POST['codigo'])){
    return "code is required";
}
if(!isset($_POST['id'])){
    return "id is required";
}
if(!isset($_POST['valor'])){
    return "value is required";
}

$codigoProjeto = (int)$_POST['codigo'];
$idItem = (int)$_POST['id'];
$conteudo = [
    $_POST['nome'],
    (int)$_POST['codigo'],
    (int)$_POST['id'],
    $_POST['valor']
];

/* Eu NÃO tenho a $_SESSION['pack'][$codigoProjeto][$idItem] 
   -> Preciso criar minha SESSION e 
   inserir o conteúdo de $conteudo que é um array */

if (!isset($_SESSION['pack'][$codigoProjeto][$idItem])) {
    $_SESSION['pack'][$codigoProjeto][$idItem] = $conteudo;
}

/*Eu tenho a $_SESSION['pack'][$codigoProjeto][$idItem]; 
    e vou inserir mais um conteúdo nela */
$_SESSION['pack'][$codigoProjeto][$idItem] []= $conteudo;

echo json_encode($_SESSION['pack']);

0

I managed to solve my problem, this is my code where I send my request.

<?php 
include('../config.php');
//Declaração de sessões
if (isset($_POST['nome']) && isset($_POST['codigo']) && isset($_POST['id']) && isset($_POST['valor'])) {

    $codigoProjeto = (int)$_POST['codigo'];
    $idItem = (int)$_POST['id'];
    $conteudo = [$_POST['nome'],(int)$_POST['codigo'],(int)$_POST['id'],$_POST['valor']];

    if (isset($_SESSION['pack']) == false) {
        // Eu NÃO tenho a $_SESSION['pack'] -> Preciso criar minhssa SESSION e dizer que ela tem um array;
        $_SESSION['pack'] = [];
    }

    if (!isset($_SESSION['pack'][$codigoProjeto])) {
        // Eu NÃO tenho a $_SESSION['pack'][$codigoProjeto] -> Preciso passar o valor do meu $_SESSION['pack'][?] e dizer que o valor do array é o codigo do meu projeto e que dentro do código do meu projeto eu preciso criar outro array vazio e passar o identificador do item selecionado;
        $_SESSION['pack'][$codigoProjeto] = [];
        if (!isset($_SESSION['pack'][$codigoProjeto][$idItem])) {
            // Eu NÃo tenho a $_SESSION['pack'][$codigoProjeto][$idItem] -> Preciso passar o valor do id do checkbox;
            $_SESSION['pack'][$codigoProjeto][$idItem] = [];
            $_SESSION['pack'][$codigoProjeto][$idItem] = $conteudo;
        }else{
            // Eu tenho a $_SESSION['pack'][$codigoProjeto][$idItem] -> Preciso passar os valores dos meus parâmetros referente ao id do checkbox, e rodar um loop de incremento no id do item do checkbox;
            $_SESSION['pack'][$codigoProjeto][$idItem] = $conteudo;
        }
    }else{
        // Eu tenho a $_SESSION['pack'][$codigoProjeto];
        if (!isset($_SESSION['pack'][$codigoProjeto][$idItem])) {
            $_SESSION['pack'][$codigoProjeto][$idItem] = [];
            $_SESSION['pack'][$codigoProjeto][$idItem] = $conteudo;
        }else{
            $_SESSION['pack'][$codigoProjeto][$idItem] = $conteudo;
        }
    }

    echo json_encode($_SESSION['pack']);
}

?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.