Comunidad de diseño web y desarrollo en internet online

Copiar variables creadas en un while de una tabla a otra

Citar            
MensajeEscrito el 13 Jun 2012 02:21 am
Hola amigos de Cristalab. El asunto es tal como indica el título. La duda surge de un mensaje anterior, pero como la consulta es aplicable a cualquier otro tipo de proyecto y por tratarse de algo bastante puntual, lo posteo para tener también una visión puntual.

Tengo la siguiente tabla en el html que es creada por medio de un buble while:

Código :

concepto | valor1 | valor2 | total
Los valores de los campos concepto, valor1 y valor2 los obtengo a partir de una consulta a la bd y la suma la muestro en la columna total. Como pueden ver, los valores 1 al 2 existen en la base de datos, pero el valor de total es creado de forma dinámica en cada iteración. Supongamos que la tabla, una vez creada, arroja 4 resultados, quedando así:

Código :

concepto    | valor1 | valor2 | total1
concepto1   | 2      | 2      | 4
concepto2   | 2      | 1      | 3
concepto3   | 3      | 2      | 5
Ahora bien, supongamos que tengo dos tablas y necesito de ambas mostrar sus respectivos totales en una tercera tabla a modo de resumen, recuperando los valores de la columna total de ambos. Algo así:

Código :

concepto  | total1 | total2
concepto1 | 4      | 10 
concepto2 | 3      | 8
concepto3 | 5      | 5 
En resumen, lo que necesito es rescatar todos los valores de total1 y total2 y mostrarlos en la tercera tabla.

Espero haber sido claro con la explicación y quedo atento a cualquier ayuda. Se los agradeceré muchísimo.

Buena Caza y Largas Lunas.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 13 Jun 2012 05:05 pm
Pues guarda los totales de cada fila en un array asociativo, uno por tabla. Luego para crear la tabla de totales, recorres ambos arrays.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Jun 2012 11:08 pm
Gracias DriverOp por responder. Supongamos que el ciclo while que genera la primera tabla es así:

Código PHP :

while($datos = mysql_fetch_array($resultado)){
$concepto = $datos['concepto'];
$valor1 = $datos['valor1'];
$valor2 = $datos['valor2'];
$total = $valor1+$valor2;
echo "<td>".$concepto."</td>";
echo "<td>".$valor1."</td>";
echo "<td>".$valor2."</td>";
echo "<td>".$total."</td>";
}
Entonces, la idea sería meter $concepto y $total en un array asociativo tal como me indicas. A partir de lo que entendí sería algo así:

Código PHP :

$resumen = array("concepto" => "$concepto", "total" => "$total");
Para mostrar los datos:

Código PHP :

echo $resumen['concepto'];
Ahora bien, el echo muestra en efecto todos los registros, pero sólo si se encuentra dentro del bucle. Cuando pongo el mismo echo fuera del bucle sólo me muestra el último registro. ¿Qué es lo que me falta hacer? Se me ocurre a priori generar un nuevo bucle a partir del array pero no lo he probado. ¿Sería esa la forma? ¿Y cómo sería?

Agradecido de antemano,

Buena Caza y Largas Lunas.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 14 Jun 2012 04:47 am
He separado en un array específico cada uno de los datos que necesito:

Código PHP :

$concepto = array("concepto" => "$concepto");
$total1 = array("total1" => "$total1");
$total2 = array("total2" => "$total2");
Sin embargo, sigo con el problema. Cuando pruebo dentro del bucle el echo muestra todo el listado, pero cuando lo hago fuera del bucle sólo muestra el último registro. He probado con un bucle foreach pero aún así sigue mostrando sólo el último registro obtenido en la consulta. ¿Qué está mal?

Código PHP :

foreach ($concepto as $valor) {
echo $concepto["concepto"];
}
La idea sería meter los tres array en uno solo y mostrar en un bucle los resultados de cada columna, pero no me sale. Me muestra siempre el último registro.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 14 Jun 2012 01:07 pm
Ejem, debe ser, dentro del while:

Código PHP :

$resumen[] = array("concepto" => "$concepto", "total" => "$total");


Y luego:

Código PHP :

foreach ($resumen as $key => $value) {
   echo "Concepto: ".$value['concepto']."<br />";
   echo "Total: ".$value['total']."<br />";
}


Para mostrarlo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Jun 2012 10:40 pm
Magnífico DirverOp!!! Sólo sigo con un pequeño detalle. Resulta que $concepto y $total1 los extraigo de la misma consulta. Sin embargo total2 sale de otra tabla, y por ende, de otro while. Es por eso que al principio había pensado declarar 3 arrays, uno por cada columna. Ahora bien, así como lo indicas, funciona perfecto, pero falta agregarle al array resumen el array total2. ¿Cómo lo agrego? Sorry, debo parecer un idiota pero traté toda la tarde de hacerlo y no me sale.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 14 Jun 2012 11:04 pm
Para ser más claro: El ejemplo de DriverOp funciona perfecto para mostrar $concepto y $total1. Sin embargo, aún falta agregar al array $resumen la información de $total2

Tabla1: Extraigo $concepto y $total1

Código PHP :

while($datos = mysql_fetch_array($resultado)){
$concepto = $datos['concepto'];
$valor1 = $datos['valor1'];
$valor2 = $datos['valor2'];
$total1 = $valor1+$valor2;
echo "<td>".$concepto."</td>";
echo "<td>".$valor1."</td>";
echo "<td>".$valor2."</td>";
echo "<td>".$total1."</td>";
$resumen[] = array("concepto" => "$concepto", "total1" => "$total1");
}
Tabla2: Como la columna concepto ya la obtuve en la primera tabla, ahora sólo necesito sacar lo que corresponde a $total2

Código PHP :

while($datos = mysql_fetch_array($resultado)){
$concepto = $datos['concepto'];
$valor1 = $datos['valor1'];
$valor2 = $datos['valor2'];
$total2 = $valor1+$valor2;
echo "<td>".$concepto."</td>";
echo "<td>".$valor1."</td>";
echo "<td>".$valor2."</td>";
echo "<td>".$total2."</td>";
$total2[] = array("total2" => "$total2");
}
Entonces, para poder mostrar los datos de ambas tablas:

Código PHP :

foreach ($resumen as $key => $value) {
echo "Concepto: ".$value['concepto']."<br />";
echo "Total1: ".$value['total1']."<br />";
echo "Total2: ".$value['total2']."<br />";
}
La pregunta es (y lo que traté de hacer toda la tarde sin éxito) ¿Cómo hago para meter en el array $resumen los registros de $total2?

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 16 Jun 2012 12:02 am
La siguiente línea en el while de la segunda tabla debería funcionar para agregar al array $resumen creado en la primera consulta los totales de la segunda consulta, sin embargo, me dice que $total2 no está definida. De verdad que me estoy volviendo loco con esto.

Código PHP :

while($datos = mysql_fetch_array($resultado)){
...
$resumen["total2"] = "$total2";
}
¿Por qué no agrega los datos al array?

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 16 Jun 2012 12:22 am
Por otro lado, si intento ingresar los datos de total2 (siempre dentro de su propio while) de la siguiente forma hace algo raro: lista los datos de total1 y me dice que total2 no está definido y justo debajo lista diciendo que $total1 no está definido y lista los datos de $total2.

Código PHP :

$resumenl[] = array("total2" => "$total2");
:cry:

Por eareddhel

83 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.