PHP - Obtener datos de un arreglo y guardarlas en variables

   
Vista:

Obtener datos de un arreglo y guardarlas en variables

Publicado por carlos (4 intervenciones) el 29/07/2016 23:01:28
Buenas tardes a todos.

Tengo el siguiente problema y la verdad soy nuevo programando

tengo guardado varios datos dentro de un arreglo, no se si se pueda obtener los ID que están dentro del arreglo y guardarlos en variables si es así, alguien me podría dar un ejemplo de como poder hacerlo gracias
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 kip

Obtener datos de un arreglo y guardarlas en variables

Publicado por kip (571 intervenciones) el 29/07/2016 23:20:06
Hola, podrías colocar la estructura de tu arreglo o el código de como lo armas?

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

Obtener datos de un arreglo y guardarlas en variables

Publicado por carlos (4 intervenciones) el 29/07/2016 23:34:20
claro mira tengo lo siguiente
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
include 'conexion.php';
if(isset($_SESSION['datos'])){
if(isset($_GET['id'])){
$arreglo=$_SESSION['datos'];
$encontro=false;
$numero=0;
for($i=0;$i<count($arreglo);$i++){
	if($arreglo[$i]['Id']==$_GET['id']){
		$encontro=true;
		$numero=$i;
	}
}
if($encontro==true){
	$arreglo[$numero]['Cantidad']=$arreglo[$numero]['Cantidad']+1;
	$_SESSION['datos']=$arreglo;
}else{
	$nombre="";
	$precio=0;
	$imagen="";
	$re=mysql_query("select * from productos where id_Producto=".$_GET['id']);
	while ($f=mysql_fetch_array($re)) {
		$nombre=$f['nombre'];
		$precio=$f['precio'];
		$imagen=$f['imagen'];
	}
	$datosNuevos=array('Id'=>$_GET['id'],
					'Nombre'=>$nombre,
					'Precio'=>$precio,
					'Imagen'=>$imagen,
					'Cantidad'=>1);
 
	array_push($arreglo, $datosNuevos);
	$_SESSION['datos']=$arreglo;

aquí ya es otro archivo donde quiero obtener los id y guardarlos en variables

1
2
3
4
$arreglo=$_SESSION['datos'];
for($i=0; $i<count($arreglo);$i++){
echo $id=($arreglo[$i]['Id']);              <---- aquí imprimo el id pero me aparecen todos juntos es decir 12
}

no se si me explico gracias por tu ayuda
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 kip

Obtener datos de un arreglo y guardarlas en variables

Publicado por kip (571 intervenciones) el 30/07/2016 01:48:55
Te imprime todo junto porque no colocas algun salto de linea en el echo, ademas si quieres almacenar en la variable $id todos los id que van iterando en el ciclo for pues lo estas haciendo mal, ya que te almacenar el valor del id de la ultima iteracion, si quieres guardar estos valores en varias variables puedes hacer asi:

Coloque un array de ejemplo sencillo, bidimensional como el tuyo.

1
2
3
4
5
6
7
$arreglo=[0=>['Id'=>1],1=>['Id'=>13],2=>['Id'=>14]];
for($i=0; $i<count($arreglo);$i++){
 ${'id'.$i}=($arreglo[$i]['Id']);
}
echo $id0;
echo $id1;
echo $id2;

De esta forma almacenas variables independientes que tendran casi el mismo nombre, salvo que variara segun el numero de iteraciones del ciclo for.

Podrias hacerlo de esta forma tambien:

1
2
3
4
5
6
7
8
$arreglo=[0=>['Id'=>1],1=>['Id'=>13],2=>['Id'=>14]];
for($i=0; $i<count($arreglo);$i++){
 $id['id'.$i]=($arreglo[$i]['Id']);
}
extract($id);
echo $id0;
echo $id1;
echo $id2;

Lo diferente en este codigo es que creas un array con los valores que desees pero se almacenaran en indices diferentes, debes tener en cuenta que cada indice tendra parecido pero variara por el numero de iteracion del ciclo for.

Espero haberme explicado, asi mismo espero te sirva, nos cuentas!

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

Obtener datos de un arreglo y guardarlas en variables

Publicado por carlos (4 intervenciones) el 01/08/2016 23:43:07
que tal kip, aun no puedo implementar lo que me comentaste, tal vez si te platico un poco mejor me puedas dar una idea de como poder hacerlo, lo que estoy haciendo es un punto de ventas y quiero hacer lo siguiente, que si la cantidad que esta en el arreglo es mayor que a la que tengo en mi stock en la base de datos no se ejecute nada y muestre un mensaje ... tengo lo siguiente cuando lo ejecuto me funciona pero solo hace la consulta al primer producto que esta en el arreglo, quiero decir que si el primer producto cumple la condición se ejecuta aun que los demás productos que estén en el arreglo sean mayores a la cantidad de la base de datos .
espero que puedas ayudarme

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
	$conex = mysql_connect("localhost","sisventas","sisventas")or die("no se pudo realizar la conexion");
	mysql_select_db("sisventas",$conex)or die("ERROR con la base de datos");
	session_start();
	if(!$_SESSION)
{
  echo '<script language = javascript>
  alert("usuario no autenticado")
  self.location = "index.php"
  </script>';
}
$person_id = $_SESSION['id_Usuarios'];
$hora= date("g:i:s-a");
$fecha = date('Y-m-j');
$nuevafecha = strtotime ( '+2 day' , strtotime ( $fecha ) ) ;
$nuevafecha = date ( 'Y-m-j' , $nuevafecha );
 
include "conexion.php";
		$arreglo=$_SESSION['datos'];
		$numeroventa=0;
		$re=mysql_query("select * from compras order by numeroventa DESC limit 1") or die(mysql_error());
		while (	$f=mysql_fetch_array($re)) {
		$numeroventa=$f['numeroventa'];
		}
		if($numeroventa==0){
			$numeroventa=1;
		}else{
			$numeroventa=$numeroventa+1;
		}
		$arreglo=$_SESSION['datos'];
				for($i=0;$i<count($arreglo);$i++){
				$re=mysql_query("select cantidad from productos where id_producto=".$arreglo[$i]['Id'])or die(mysql_error());
				while ($f=mysql_fetch_array($re)) {
				if($arreglo[$i]['Cantidad'] > $f['cantidad']){
					echo '<script language = javascript>
						  alert("cantidad excede el stock")
						  self.location = "stock.php"
						  </script>';
				}else{
				$x=($f['cantidad']-$arreglo[$i]['Cantidad']);
				mysql_query("update productos set cantidad=".$x." where id_Producto=".$arreglo[$i]['Id'])or die(mysql_error());
			}
	    }
	}
		for($i=0; $i<count($arreglo);$i++){
		mysql_query("insert into pedidos (usuario,id_Producto,fecha,hora,numeroventa,nombre,imagen,precio,nueva_Fecha,cantidad,subtotal) values(
			    ".$person_id.",
				'".$arreglo[$i]['Id']."',
				'".$fecha."',
				'".$hora."',
				".$numeroventa.",
				'".$arreglo[$i]['Nombre']."',
				'".$arreglo[$i]['Imagen']."',
				'".$arreglo[$i]['Precio']."',
				'".$nuevafecha."',
				'".$arreglo[$i]['Cantidad']."',
		     	'".($arreglo[$i]['Precio']*$arreglo[$i]['Cantidad'])."'
		      	)")or die(mysql_error());
			}
		$total=0;
		$tabla='<table border="1">
			<tr>
			<th>Nombre</th>
			<th>Cantidad</th>
			<th>Precio</th>
			<th>Subtotal</th>
			</tr>';
		for($i=0;$i<count($arreglo);$i++){
			$tabla=$tabla.'<tr>
				<td>'.$arreglo[$i]['Nombre'].'</td>
				<td>'.$arreglo[$i]['Cantidad'].'</td>
				<td>'.$arreglo[$i]['Precio'].'</td>
				<td>'.$arreglo[$i]['Cantidad']*$arreglo[$i]['Precio'].'</td>
				</tr>
			';
			$total=$total+($arreglo[$i]['Cantidad']*$arreglo[$i]['Precio']);
		}
		$tabla=$tabla.'</table>';
		echo $tabla;
 
?>
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