PHP - saber si un valor esta dentro de una variable de session

 
Vista:

saber si un valor esta dentro de una variable de session

Publicado por noe (6 intervenciones) el 19/01/2021 04:32:05
hola foro !!!

buenas noches. esperando me puedan ayudar, les doy de antemano las gracias y es con lo que sigue
tengo el formulario este llama a carrito-agrega.php y lo inserta correctamente
los datos dentro de una variable de session

index.php-----
1
2
3
4
5
6
7
<form name="f" action="carrito-agrega.php" method="post">
   <input type="hidden" name="id" id="id" value="<?php echo $fila['id']; ?>" />
   <input type="hidden" name="nombre" id="nombre" value="<?php echo  $fila['nombre'];?>"/>
   <input type="hidden" name="precio" id="precio" value="<?php echo $fila['precio'];?>"/>
   <input type="hidden" name="cantidad" id="cantidad" value="<?php echo 1;?>"/>
   <input type="submit" name="btnAccion" value="Agregar al Carrito" class="btn" />
</form>

carrito-agrega.php-------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
session_start();
$escribe = 'si';
$pid = $_POST['id'];
$pno = $_POST['nombre'];
$pca = $_POST['cantidad'];
$ppr = $_POST['precio'];
$todo = [$pid,$pno,$pca,$ppr];
 
if (isset($_POST['btnAccion'])){
	if (isset($_SESSION['carrito'])) {
		array_push($_SESSION["carrito"], $todo);
	}else{
		$NumProd = count($_SESSION['carrito']);
		array_push($_SESSION['carrito'][$NumProd] = $todo);
	}
}
y lo que pretendo (no he podido hacerlo...) es que si se selecciona un id que ya este dentro del $_SESSION['carrito']
envie un mensaje que ya exite ese producto lo he intentado de 2 maneras pero no logro hacerlo me podrian indicar que estoy
haciendo mal?

modo 1-----------------------------
1
2
3
4
5
6
$key = array_column($_SESSION['carrito'],$pid);
if(in_array($_SESSION['carrito'], $key)){
  echo '<script>alert(ya existe)</script>';
}else{
  array_push($_SESSION["carrito"], $todo);
}

modo 2-------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach ($_SESSION["carrito"] as $indice => $detalle) {
    if ($detalle[1] == $pid) {
       $escribe = 'no';
       break;
    }
 }
 if ($escribe == 'si') {
 	echo 'no esta';
 	array_push($_SESSION["carrito"], $todo);
 }
 if ($escribe == 'no') {
 	echo 'si esta';
 }
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

saber si un valor esta dentro de una variable de session

Publicado por joel (1269 intervenciones) el 19/01/2021 11:06:01
Hola Noe, hal no haber puesto el id como clave del array, tienes que separar primero todos ids, es decir los primeros elementos del array para luego buscar el id... algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
session_start();
 
$_SESSION["carrito"][]=[1,'a',2,10];
$_SESSION["carrito"][]=[2,'b',2,10];
$_SESSION["carrito"][]=[3,'c',2,10];
 
$buscar=2;
 
// obtenemos los ids
$ids=array_map(function($el) {return $el[0];}, $_SESSION["carrito"]);
 
// revisamos si el id a buscar esta entre los ids
if (in_array($buscar, $ids)) {
    echo "Existe";
} else {
    echo "NO Existe";
}

Se entiende?
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

saber si un valor esta dentro de una variable de session

Publicado por Mauro (1032 intervenciones) el 19/01/2021 13:42:18
Algo que podrías intentar también es modificar el modo en que almacenas los elementos en la sesión para que sea más sencilla la búsqueda, simplemente debes quitar el $id del arreglo $todo y guardar así:

1
$_SESSION['carrito'][$id] = $todo;

Lo que debes tener en cuenta es que, de esta forma, si ya había algo en $_SESSION['carrito'][$id] se perderá pero nunca tendrás dos entradas para el mismo $id
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

saber si un valor esta dentro de una variable de session

Publicado por noe (6 intervenciones) el 19/01/2021 17:54:53
Hola Joel y Mauro !!!

Gracias por responder, tendrán algún ejemplo de cómo hacerlo? no tengo muchos conocimientos estoy empezando a aprender esta tecnología lo extraño de esto es que estoy viendo un video en youtube que te muestran pasa a paso de como armarlo un pequeño sistema muy simple de ventas y lo hago exactamente como lo indican y a mí no me funciona será la versión del php ? yo tengo la 5.6.30 lo 2 ejemplo extra los vi por separado y aun así no me funciona!!!!!!!!!!

GRACIAS
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

saber si un valor esta dentro de una variable de session

Publicado por Mauro (1032 intervenciones) el 20/01/2021 20:00:00
Tengo este artículo donde muestro cómo armar un carrito de compras, puede darte algunas ideas.

Consúltame cualquier cosa ;)
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: 162
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

saber si un valor esta dentro de una variable de session

Publicado por noe| (178 intervenciones) el 20/01/2021 20:13:55
Hola Mauro !!!

buenos días, gracias veré el articulo y mas tarde te comentare.
GRACIAS
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