Well, I'm developing an online ordering system, initially just for learning purposes, but I came across something that I have no idea how to do and would greatly appreciate any kind of help.
In the products.php page I establish two connections with the DB and search the products in the products table by category and the additions in the table we add :
$sql = "SELECT p.id_produto, p.nome_produto, p.preco_produto, p.id_categoria, c.nome_categoria FROM produtos p, categorias c WHERE c.id_categoria = p.id_categoria ORDER BY p.id_categoria, p.nome_produto";
$stmt = $conexao->prepare($sql);
$stmt->execute();
$sql2 = "SELECT id_acrescimo, nome_acrescimo, preco_acrescimo FROM acrescimos ORDER BY nome_acrescimo";
$stmt2 = $conexao->prepare($sql2);
$stmt2->execute();
$num = $stmt->rowCount();
$categoria = null;
if($num>0)
{
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
extract($row);
if($categoria != $id_categoria)
{
if(!is_null($categoria)) { echo "</table>"; }
echo "<h1>{$nome_categoria}</h1>
<table>
<tr>
<th>NOME</th>
<th>PREÇO</th>
<th>QUANTIDADE</th>";
if($id_categoria == 1) echo" <th>ACRÉSCIMOS</th>";
echo "</tr>";
$categoria = $id_categoria;
}
$preco_produto_reajustado = number_format($preco_produto, 2, ",", ".");
echo "
<tr>
<td>
<div class='id-produto' style='display: none'>{$id_produto}</div>
<div class='nome-produto'>{$nome_produto}</div></td>
<td>R${$preco_produto_reajustado}
</td>
<td>
<input type='number' name='quantidade' value='1' min='1' max='20'/>
</td>";
if($id_categoria == 1)
{
echo "<td>";
while ($row = $stmt2->fetch(PDO::FETCH_ASSOC))
{
extract($row);
$preco_acrescimo_reajustado = number_format($preco_acrescimo, 2, ",", ".");
echo "
<input type='checkbox' name='{$nome_acrescimo}' value='{$nome_acrescimo}'/>{$nome_acrescimo} - R${$preco_acrescimo_reajustado} <input type='number' name='quantidade_acr[]' value='1' min='1' max='5'/><br/>
";
}
echo "</td>";
}
echo "<td>
<form class='adicionar'>
<button type='submit'>Adicionar</button>
</form>
</td>
</tr>";
}
echo "</table>";
}
As you could see from this code, if the corresponding category ID equals 1, another column will be created in the table . The Accruals column. And that's where my biggest problem lies. If you analyzed the code well, you could see that my output will look something like:
DidyounoticethecheckboxesintheAccrualscolumn?SowhatIamtryingtodo(unsuccessfully)is,intheclickbuttonontheAddbutton,getthevaluesofthecheckboxesselectedaccordinglywiththeirnamesandpricesinthetableweadded.Buthowtodothat?
IneedtogetthesevaluesandstoretheminvariablestolaterinsertthemintoSESSIONanddisplaythemalongwiththeothersintheuser'scart.Inproducts.phpIhaveajQueryfunctionthatstoresthedataoftheselectedrowinvariablestobeinsertedintotheirgivenvariablesinSESSION:
$(document).ready(function(){$('.adicionar').on('submit',function(){varid_produto=$(this).closest('tr').find('.id-produto').text();varnome_produto=$(this).closest('tr').find('.nome-produto').text();varquantidade=$(this).closest('tr').find('input').val();window.location.href="adicionar.php?id_produto=" + id_produto + "&nome_produto=" + nome_produto + "&quantidade=" + quantidade;
return false;
});
});