PHP - Array solo recoge el último valor seleccionado

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por Augusto (11 intervenciones) el 14/10/2020 07:35:04
hola a todos buenos dias/tardes/noche
en el siguiente pedido de ayuda
se intenta armar un carrito de compras con sesiones
por medio de formulario + una función


vistaindex

problema
si selecciono todos retorna unicamente el ultimo array
entonces si selecciono el ultimo array si devuelve la seleccion
ultimaimgaen

pero en cualquier otro caso de seleccion retorna vacio
anteultima

abajo dejo el codigo

Productos.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php include 'index.php';
 ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="estilos.css">
    <title>Productos</title>
</head>
<body>
    <h2>Productos</h2>
<?php
$MostrarProd="SELECT * FROM productos";
if($resultado=$con->query($MostrarProd)) {
    while ($fila = mysqli_fetch_assoc($resultado)) {
?>
         <table class="tabla-prod"> </tr>
     <form method="POST" action="agregarProducto.php">
 
     <td>  <?php echo "<input type=hidden name=prod value=$fila[numProductos]>"." "."</input>"; ?> </td>
    <td>  <?php echo "<input type=hidden name=nombre value=$fila[nombre]>"."$fila[nombre]"."</input>"; ?>  </td>
    <td>  <?php echo "<input type=hidden name=precio value=$fila[precio]> "."$fila[precio]"."</input>"; ?>  </td>
    <td>  <?php echo "<input type=hidden name=cantidad value=$fila[cantidad]>"."$fila[cantidad]"."</input>"; ?>  </td>
    <td><input type="number" placeholder="Cantidad" name="Cantidadselec"></td>
    <td> <input type="submit" value="Agregar Al Carrito" name="agregar"></td><tr>
 
    <?php }}  ?>
    </form>
</table>
<p> <?php ?></p>
</body>
</html>




agregarProducto.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
include 'Funciones.php';
 
        if (isset($_POST["agregar"])){
            session_start();
            $numProductos=$_POST['prod'];
            $nombre=$_POST['nombre'];
            $precio=$_POST['precio'];
            $cantidad=$_POST['cantidad'];
            $Cantidadselec=$_POST['Cantidadselec'];
 
            if (empty($numProductos) || empty($nombre) || empty($precio) ||
                empty($cantidad) || empty($Cantidadselec) ) {
                    echo "están vacios";
                }else {ListaProducto($numProductos,$nombre,$precio,$Cantidadselec,$con);
                var_dump($_SESSION['Carrito']);
                }
 
        }
 
?>


Funciones.php

1
2
3
4
5
6
7
8
9
10
11
function   ListaProducto($numProductos,$nombre,$precio,$Cantidadselec,$con){
    $Carrito = array(
        "numProductos"=>$numProductos,
        "nombre" =>$nombre,
        "precio" =>$precio,
        "Cantidadselec" =>$Cantidadselec,
    );
 
    $_SESSION['Carrito']=$Carrito;
    return $_SESSION['Carrito'];
        }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por javier (547 intervenciones) el 14/10/2020 08:18:43
Hola

en los inputs el name, su valor ha de ser un array.

1
echo "<input type=hidden name=nombre[] value=$fila[nombre]>"."$fila[nombre]"."</input>";

lo que no entiendo es como van sin las comillas todos los valores de las propiedades de las etiquetas html y te los pilla bien. una cosa asi

1
echo "<input type='hidden' name='nombre[]' value='".$fila['nombre']."'>".$fila['nombre']."</input>";

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por Augusto (11 intervenciones) el 14/10/2020 18:50:25
hola se agradece el comentario
y lo que decís lo aplique al inicio deberia haber agregado al inicio lo que intente
pero lo agregue al indice prod[] lo que esto hace realmente es tomarlo como un array asociado a otro array
pero el resultado son los mismo valores resultantes en la captura del post pero con mas arrays para que todo sean del mismo array se
le indica el mismo prod[] a todos los campos pero lo que yo necesito es que retorne el resto de los arrays que son otras selecciones
dado que solo retorna correctamente el ultimo registro intente con checkbox
para identificar la seleccion con un label pero en cualquier caso retorna lo mismos valores en diferentes formas pero mismos
vacio o solo el ultimo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por javier (547 intervenciones) el 15/10/2020 07:48:39
hola,

veo que tienes un formulario por cada producto, asi solo puedes recoger un producto

tendrias que sacar el formulario del bucle WHILE y solo tener un boton de enviar

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por javier (547 intervenciones) el 15/10/2020 08:15:50
y te pasa eso de que si seleccionas solo el ultimo si que envia bien los valores es por que tienes mal hecho el formulario


por cada producto abres una etiqueta FORM, por que esta dentro del WHILE
pero solo cierras una vez el formulario por que lo cierras fuera del while y coincide con el ultimo producto, lo entiendes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Array solo recoge el último valor seleccionado

Publicado por Augusto (11 intervenciones) el 23/10/2020 02:03:27
cambie el while por un for debajo declare un array lo recorrí para que pueda pasar el valor que seleccione con un foreach el input submit y el resto deje fuera del for each pero dentro del for
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar