Get input value present in the selected row

1

Hello! I will try to explain my purpose in the best way possible. I started studying PHP a short time ago, I'm doing a system of registration and purchase of products only for learning, however I'm facing a small problem. I have my products registered with their proper keys in a datatable . I manipulate these products, logically, through a connection to the database. Next I have the productos.php page that aims to display the products in the database and allow the logged in user to add them to their shopping cart. The problem is: I'm not getting the quantity entered in the input for the requested product. Here is my file productos.php :

$sql = "SELECT id_produto, nome_produto, preco_produto FROM produtos ORDER BY id_produto";
$stmt = $conexao->prepare($sql);
$stmt->execute();

$num = $stmt->rowCount();

if($num>0)
{
        echo "<table>";
        echo "  <tr>";
        echo "      <th>NOME</th>";
        echo "      <th>PREÇO</th>";
        echo "      <th>QUANTIDADE</th>";
        echo "  </tr>";
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {
        extract($row);
        $preco_produto_reajustado = number_format($preco_produto, 2, ",", ".");
        echo "  <tr>";
        echo "      <td><div class='id-produto' style='display: none'>{$id_produto}</div>";
        echo "      <div class='nome-produto'>{$nome_produto}</div></td>";
        echo "      <td>R&#36;{$preco_produto_reajustado}</td>";
        echo "      <td>";
        echo "          <form class='adicionar'>";
        echo "          <input type='number' name='quantidade' value='1' min='1' max='20'/>";
        echo "          <button type='submit'>Adicionar</button>";
        echo "          </form>";
        echo "      </td>";
        echo "  </tr>";
    }
        echo "</table>";
}
else
{
    echo "Sem produtos.";
}

As you might have noticed, the add link points to the add.php file. In this file I create a SESSION and store the arrays I got from the previously selected row in productos.php . In this way, the product in question is stored in SESSION along with its details. Here's my add.php file:

<?php
    require_once("detectar-erros.php");
    session_start();

    $id_produto = isset($_GET['id_produto']) ? $_GET['id_produto'] : "";
    $nome_produto = isset($_GET['nome_produto']) ? $_GET['nome_produto'] : "";
    $quantidade = isset($_GET['quantidade']) ? $_GET['quantidade'] : "";

    if(!isset($_SESSION['carrinho']))
    {
        $_SESSION['carrinho'] = array();
    }

    if(array_key_exists($id_produto, $_SESSION['carrinho'])){

        header('Location: produtos.php?acao=existe&id_produto' . $id_produto . '&nome_produto=' . $nome_produto);
    }
    else    
    {
        $_SESSION['carrinho'][$id_produto]=$nome_produto;
        header('Location: produtos.php?acao=adicionado&id_produto' . $id_produto . '&nome_produto=' . $nome_produto);
    }
?>

I'm not sure how to set the input value for the variable $quantidade . How to proceed? Thanks in advance for any help and I apologize for any errors!

    
asked by anonymous 27.03.2015 / 16:13

1 answer

3

After researching and studying, I was able to solve my problem using jQuery and inserting the arrays inside the SESSION. I will post the code here so that in the future it can help anyone who has the same problem. On the productos.php page:

$(document).ready(function()
{
    $('.adicionar').on('submit', function()
    {
        var id_produto = $(this).closest('tr').find('.id-produto').text();
        var nome_produto = $(this).closest('tr').find('.nome-produto').text();
        var quantidade = $(this).closest('tr').find('input').val();
        window.location.href = "adicionar.php?id_produto=" + id_produto + "&nome_produto=" + nome_produto + "&quantidade=" + quantidade;
        return false;
    });
});
                                    
05.04.2015 / 23:51