TransWikia.com

Carrito PHP registra todos los productos mostrados

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;
    }


Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP