Foros del Web » Programando para Internet » PHP »

cómo recorrer estos arrays?

Estas en el tema de cómo recorrer estos arrays? en el foro de PHP en Foros del Web. En un formulario que va a tener tantas series de campos como el usuario solicite, necesito hacer algunas operaciones matemáticas y de sql. Los campos ...
  #1 (permalink)  
Antiguo 21/05/2010, 08:03
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 18 años, 3 meses
Puntos: 1
cómo recorrer estos arrays?

En un formulario que va a tener tantas series de campos como el usuario solicite, necesito hacer algunas operaciones matemáticas y de sql.
Los campos son: cantidad[], repuesto[], precio_venta[].

Para cada grupo de estos tres campos, debo obtener el precio de costo de repuesto[] de la base de datos, multiplicarlo por la cantidad[] y por otro lado, multiplicar la cantidad[] por el precio_venta[], y luego hacer la diferencia entre estos dos para ver cuál fue la ganancia.
luego debo insertar en el registro de operaciones, una operación por cada uno, en la que se indique el importe cobrado (precio_venta[]*cantidad[]) y el repuesto[], y además, generar una factura que contenga toooodos los ítems y su cantidad, y el precio final cobrado (es decir cantidad[], repuesto[], precio_venta[], (precio_venta[] * cantidad[]) y la suma total de todos los (precio_venta[] * cantidad[]).

Hasta ahora, lo único que pude hacer es obtener el precio de costo de los repuestos con este foreach:

Código:
		foreach ($repuesto as $repe) 
		{$sqlin="SELECT * from luga_repuestos lr inner join luga_listarepuestos llr 
			on lr.id_repuesto=llr.id where lr.id_repuesto='$repe'";
			$result = mysql_query($sqlin, $conexion);	
			while ($row=mysql_fetch_array($result))
				{
					$modelo=$row['modelo'];
					$descripcion=$row['descripcion'];
					$costo=$row['precio'];
				}	  
			echo "<p>$modelo ($descripcion) cuesta $costo</p>"; 	
		}
Pero no sé cómo multiplicarlo por cantidad[] porque no sé cómo incluirla en el foreach.

Agradeceré toda ayuda o sugerencia.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 21/05/2010, 08:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años, 8 meses
Puntos: 1517
Respuesta: cómo recorrer estos arrays?

En estos casos en mejor usar for o while. Te recomiendo for y vas recorriendo por el número que vaya corriendo en el ciclo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 21/05/2010, 08:47
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 14 años, 10 meses
Puntos: 10
Respuesta: cómo recorrer estos arrays?

Reemplaza tu while por este foreach a ver que pasa:

$row=mysql_fetch_array($result);
foreach($row as $k => $v){
echo "<li>".$k ." => ". $v;
foreach($v as $k2 => $v2){
echo "<li>".$k2 ." => ". $v2;
}
}
  #4 (permalink)  
Antiguo 21/05/2010, 10:57
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: cómo recorrer estos arrays?

abimaelrc, gracias por responder. Podría usar el for, pero no sé cómo manejar todas las variables al mismo tiempo,
¿se te ocurre cómo?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #5 (permalink)  
Antiguo 21/05/2010, 11:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años, 8 meses
Puntos: 1517
Respuesta: cómo recorrer estos arrays?

Algo sencillo para que entiendas
Código PHP:
Ver original
  1. for($i=0; $i<count($_POST['repuesto']); $i++){
  2.     echo 'Repuesto = '. $_POST['repuesto'][$i]
  3.         . ' Cantidad = ' .  $_POST['cantidad'][$i]
  4.         . ' Precio_venta = ' . $_POST['precio_venta'][$i];
  5. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 21/05/2010, 11:11
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: cómo recorrer estos arrays?

AH! ¿y así funciona?
Yo ponía for($i=0; $i<count($_POST['repuesto'],$_POST['cantidad'],$_POST['precio_venta'],); $i++) pensando que era necesario declararlos a todos de esa manera para que los leyera.

Bueno, muchas gracias.

lo intento en un rato y te cuento cómo me fue.

saludos,
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #7 (permalink)  
Antiguo 21/05/2010, 11:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años, 8 meses
Puntos: 1517
Respuesta: cómo recorrer estos arrays?

Si todos los campos tienen la misma cantidad no vas a tener problemas. Si no vas a tener que hacer una comprobación y luego hacer el for
Código PHP:
Ver original
  1. if(count($_POST['respuesto']) == count($_POST['cantidad']) && count($_POST['repuesto']) == count($_POST['precio_venta'])){
  2.    for(...
  3. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 21/05/2010, 13:49
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: cómo recorrer estos arrays?

Excelente. Me quedó así:

Código:
		for ($i=0;$i<count($repuesto);$i++) 

			{ 			
			$repe=$repuesto[$i];
			$sqlin="SELECT * from luga_repuestos lr inner join luga_listarepuestos llr 
			on lr.id_repuesto=llr.id where lr.id_repuesto='$repe'";
			$result = mysql_query($sqlin, $conexion);	
			while ($row=mysql_fetch_array($result))
			{
			$modelo=$row['modelo'];
			$descripcion=$row['descripcion'];
			$costo=$row['precio'];
			}	  
		
			$canti=$cantidad[$i];
			$impor=$importe[$i];

			$toti=($canti*$impor);
			$toti_cos=($canti*$costo);
			$dife=($toti-$toti_cos);
	 	
		}

ahora tendré que ponerme a trabajar con las consultas, pero creo que con esto está muy bien.

muchas gracias por la ayuda.

saludos,
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: arrays, recorrer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:47.