Stack Overflow en español Asked by Abdiel Rodriguez on December 14, 2021
Tengo un script para mi sitio de ecommerce donde al momento de hacer el carrito me tope con el problema que guarda en el todos los productos que muestro en la pagina y no solo al que le doy clic
Codigo donde muestro todos los productos extraídos de la base de datos:
<?php foreach ($productos as $key => $value): ?>
<div class="col abcard" style="max-width: 412px;">
<div style="padding: 20px;" class="cont2card">
<img src="view/imgs/products/<?php echo $value["img"]; ?>" class="imgprdct" id="imgprdct">
<div class="abcon" >
<div class="justify-content-center <?php
if ($value["offer"]=="1"){
echo ofstyle;
}else{
echo ofstylenone;}
?>">
<b><?php
if ($value["offer"]=="1"){
echo "OFERTA";
}else{}
?></b>
</div>
<div>
<a href="index.php?pag=prd&prd=<?php echo $value["id"]; ?>" id="abapr">
<h5><?php echo $value["name"]; ?></h5>
</a>
</div>
<div id="<?php
if ($value["offer"]=="1"){
echo "ofprice";
}else{
echo "ofpricespace";
}?>" style="font-size: 12px; min-height: 18px;" >
<s><?php
if ($value["offer"]=="1"){
echo "$";
echo $value["price"];
}else{}
?></s>
<span style="color:#27ae60;"><?php
if ($value["offer"]=="1"){
echo "-";
echo $value["descn"];
echo "%";
}else{}
?></span><br>
</div>
<div style="display: flex; margin-bottom: 40px;">
<h4 >$<?php echo $value["pricef"]; ?></h4>
<p class="description"><?php echo $value["unidad"]; ?></p>
</div>
<div class="row abi justify-content-end align-items-center" style="">
<form method="post" name="<?php echo $value["id"]; ?>" id="<?php echo $value["id"]; ?>">
<input type="hidden" name="cartlink" value="index.php?pag=prd&prd=<?php echo $value["id"]; ?>">
<input type="hidden" name="cartname" value="<?php echo $value["name"]; ?>">
<input type="hidden" name="cartcondition" value="incart">
<input type="hidden" name="quantity" value="1">
<button class="align-items-center" type="submit" form="<?php echo $value["id"]; ?>" name="btnAction" value="agregar">
<span>Añadir al carrito</span>
<img src="view/imgs/car-icon_w.png" style="max-height: 2em;">
</button>
</form>
</div>
</div>
</div>
</div>
<?php
$registro = ControlFormularios::ctrCartUp();
if($registro == "ok"){
echo '<div class="alert alert-success" style="margin-top:20px;">Producto añadido al carrito</div>';
}?>
<?php endforeach ?>
Cuando doy al boton de submit si se registran los datos en la base de datos pero el problema es que se registra el producto la misma cantidad de veces que los productos que mostré, si tengo 10 productos se registra 10 veces el mismo producto en la db y en mi html todos los productos dicen tienen el mensaje "Producto registrado"
Codigo de mi control y mi modelo:
control
static public function ctrCartUp(){
if(isset($_POST["cartlink"])){
if (isset($_SESSION["email"])){
$user = $_SESSION["email"];
}else{
$user = "no-user";
}
$datacart = array(
"cartlink" => $_POST["cartlink"],
"cartname" => $_POST["cartname"],
"cartcondition" => $_POST["cartcondition"],
"user" => $user,
"quantity" => $_POST["quantity"],);
$respuesta = ModelForms::mdCartUp($datacart);
return $respuesta;
}
}
Modelo:
static public function mdCartUp($datacart){
$stmt = Conexion::conectar()->prepare("INSERT INTO cart(product, product_link, quantity, user, cond) VALUES (:product, :product_link, :quantity, :user, :condition)");
$stmt->bindParam(":product", $datacart["cartname"], PDO::PARAM_STR);
$stmt->bindParam(":product_link", $datacart["cartlink"], PDO::PARAM_STR);
$stmt->bindParam(":quantity", $datacart["quantity"], PDO::PARAM_STR);
$stmt->bindParam(":user", $datacart["user"], PDO::PARAM_STR);
$stmt->bindParam(":condition", $datacart["cartcondition"], PDO::PARAM_STR);
if($stmt->execute()){
return "ok";
}else{
print_r(Conexion::conectar()->errorInfo());
}
$stmt->close();
$stmt = null;
}
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP