Foros del Web » Programando para Internet » PHP »

Mostrar consulta en tabla

Estas en el tema de Mostrar consulta en tabla en el foro de PHP en Foros del Web. Hola amigos: Estoy muy contenta de que hayan recuperado sus páginas. Tengo un problema al mostrar una consulta. La cuestión es que hago una consulta ...
  #1 (permalink)  
Antiguo 23/02/2009, 12:49
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Información Mostrar consulta en tabla

Hola amigos:

Estoy muy contenta de que hayan recuperado sus páginas. Tengo un problema al mostrar una consulta. La cuestión es que hago una consulta a la BD donde tengo guardados varios productos de una orden pero al mostrarlo solo me da el último. Supongo que debo hacer un ciclo pero no entiendo como hacerlo. Esto es lo que tengo:

<?
include("func.php");
session_start();
$usuario = $_SESSION['user'];
$conexion = db_connect();
if (!$conexion)
return 0;
$result = mysql_query("SELECT idusuario, nombre, email, direccion, ciudad, estado, pais FROM login WHERE usuario ='$usuario'");
while ($registro = mysql_fetch_array($result)) {
$idusuario= $registro["idusuario"];
$nombre = $registro["nombre"];
$email = $registro["email"];
$direccion = $registro["direccion"];
$ciudad = $registro["ciudad"];
$estado = $registro["estado"];
$pais = $registro["pais"];
}
$result1 = mysql_query("SELECT orderid, fecha, monto FROM ordenes WHERE idusuario='$idusuario'");
while ($registro1 = mysql_fetch_array($result1)) {
$orderid = $registro1["orderid"];
$fecha = $registro1["fecha"];
$monto = $registro1["monto"];
}

$result2 = mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
while ($registro2 = mysql_fetch_array($result2)) {
$sku = $registro2["sku"];
$precio = $registro2["precio"];
$cantidad = $registro2["cantidad"];
}
?>

y así lo llamo en la tabla:

<td><div align="center"><strong>Cantidad</strong></div></td>
<td><div align="center"><strong>Descripcion</strong></div></td>
<td><div align="center"><strong>Precio</strong></div></td>
<td><div align="center"><strong>Total</strong></div></td>
</tr>
<tr>
<td><div align="center"><? echo $cantidad; ?></div></td>
<td><div align="center"><? echo $sku; ?></div></td>
<td><div align="center"><? echo $precio; ?></div></td>
<td><div align="center"><? echo $monto; ?></div></td>

no se como hacer para mostrar todos los productos pues de esta manera solo me muestra el último que se agregó al carrito.

Por favor ayudenme a entender cómo lo hago.

Gracias.
  #2 (permalink)  
Antiguo 23/02/2009, 13:04
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

Prueba de la siguiente manera

Código PHP:
<?php
.
.
.

echo 
"
<tr>
<td><div align=\"center\"><strong>Cantidad</strong></div></td>
              <td><div align=\"center\"><strong>Descripcion</strong></div></td>
              <td><div align=\"center\"><strong>Precio</strong></div></td>
              <td><div align=\"center\"><strong>Total</strong></div></td>
            </tr>
            "
;
$result2 mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
while (
$registro2 mysql_fetch_array($result2)) {
    
$sku $registro2["sku"];
    
$precio $registro2["precio"];
    
$cantidad $registro2["cantidad"];
$monto $precio $cantidad;

echo 

"
<tr>
             <td><div align=\"center\">$cantidad</div></td>
             <td><div align=\"center\">$sku</div></td>
             <td><div align=\"center\">$precio</div></td>
             <td><div align=\"center\">$monto</div></td>
"
;

 }

?>
SEgun me fije solo traes lo que te arroja en la ultima consulta, por tanto por que no agregarle debajo que imprima a medida que va generando.

Prueba a ver que sale..

salu2
  #3 (permalink)  
Antiguo 23/02/2009, 13:12
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

gracias vicram10, pero lo que me indicas hace lo mismo, me muestra solo una linea del último producto agregado. Lo que quiero es mostrar todas las lineas de productos que el usuario haya agregado a su pedido.

Cómo se hace eso???
  #4 (permalink)  
Antiguo 23/02/2009, 13:12
Avatar de Malagua  
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Mostrar consulta en tabla

Hola kimmy.

Como bien te indica Vicram10 el problema reside en que en la tabla solo escribes el último valor asignado a cada variable. Por eso que la cabecera la situa fuera del while y todos los resultados dentro del while para que dibuje un registro por línea.

Saludos
  #5 (permalink)  
Antiguo 23/02/2009, 13:16
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

pero lo coloqué como vicram10 dijo y me da solo uno. ????
  #6 (permalink)  
Antiguo 23/02/2009, 13:19
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

revisaste que esa orden tenga mas de 1 producto asignado?
  #7 (permalink)  
Antiguo 23/02/2009, 13:22
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

si tiene 3 productos distintos.
  #8 (permalink)  
Antiguo 23/02/2009, 13:25
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

podes por favor hacer un print screen de la ultima tabla para ver que campos tiene y los resultados,

el print screen lo puedes hacer de tu base de datos..

para poder mirarlo..

para tener mas ideas
  #9 (permalink)  
Antiguo 23/02/2009, 13:29
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

puedes probar antes:

cambiando

Código PHP:
while ($registro2 mysql_fetch_array($result2)) { 
por

Código PHP:
while ($registro2 mysql_fetch_row($result2)) { 
  #10 (permalink)  
Antiguo 23/02/2009, 13:31
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

orderid sku precio cantidad
191 Vestido Disney Princ 150.00 1
191 Vestido Disney Princ 150.00 1
191 Poncho Disney Prince 150.00 1

estos son los datos que están guardados en la tabla productos. orderid está correcto pues es la que se solicita y me trae solo los últimos datos, estos:

191 Poncho Disney Prince 150.00 1
  #11 (permalink)  
Antiguo 23/02/2009, 13:33
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

prueba lo ultimo que te pase
  #12 (permalink)  
Antiguo 23/02/2009, 13:33
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

con while ($registro2 = mysql_fetch_row($result2)) {
no me trae nada
  #13 (permalink)  
Antiguo 23/02/2009, 13:41
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

lo probé haciendo otra página aparte y si funcionó, debe ser algo malo que tengo en la primera página.

Gracias pues estaba confundida pensando que tenía que hacer otro ciclo.
  #14 (permalink)  
Antiguo 23/02/2009, 13:41
 
Fecha de Ingreso: mayo-2007
Mensajes: 49
Antigüedad: 17 años
Puntos: 1
Respuesta: Mostrar consulta en tabla

Creo que el problema radica en tu ultima sentencia while. solo tomas el ultimo item, deberías de guardar todo en un arreglo y no en variable sencilla:

Código PHP:
$result2 mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
while (
$registro2 mysql_fetch_array($result2)) {
$sku $registro2["sku"];
$precio $registro2["precio"];
$cantidad $registro2["cantidad"];

sustituyes tus variables (sku, precio, cantidad) por un arreglo:

Código PHP:
$result2 mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
while (
$registro2 mysql_fetch_array($result2)) {
$sku[] = $registro2["sku"];
$precio[] = $registro2["precio"];
$cantidad[] = $registro2["cantidad"];

asi cuando recorras los items de la orden lo haces con un foreach para iterar entre el arreglo.

Si no puedes con ese ejemplo, intentare poner algo mas elaborado. Suerte
  #15 (permalink)  
Antiguo 23/02/2009, 13:42
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

Agregale algo mas debajo de la consulta

Código PHP:
<?php
.
.
.

echo 
"
<tr>
<td><div align=\"center\"><strong>Cantidad</strong></div></td>
              <td><div align=\"center\"><strong>Descripcion</strong></div></td>
              <td><div align=\"center\"><strong>Precio</strong></div></td>
              <td><div align=\"center\"><strong>Total</strong></div></td>
            </tr>
            "
;
$result2 mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
if(
mysql_num_rows($result2)>0
{
while (
$registro2 mysql_fetch_array($result2)) {
    
$sku $registro2["sku"];
    
$precio $registro2["precio"];
    
$cantidad $registro2["cantidad"];
$monto $precio $cantidad;

echo 

"
<tr>
             <td><div align=\"center\">$cantidad</div></td>
             <td><div align=\"center\">$sku</div></td>
             <td><div align=\"center\">$precio</div></td>
             <td><div align=\"center\">$monto</div></td>
"
;

 }
}

?>
Prueba a ver si sale
  #16 (permalink)  
Antiguo 23/02/2009, 13:50
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

lo único que me queda solucionar ahora es que no me da los registros uno abajo de los otros sino que me los coloca tipo columna, no como fila. Cómo hago para que los inserte abajo???
  #17 (permalink)  
Antiguo 23/02/2009, 14:09
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

como lo solucionaste?...

por cierto si esta asi como el ultimo

<tr>
<td>
</td>
</tr>

automaticamente te pondra uno de bajo del otro por que crea una fila por cada consulta
  #18 (permalink)  
Antiguo 23/02/2009, 14:18
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

lo tengo así y ya encontré el error me faltaba cerrar un <tr>:

<?
echo
"
<tr>
<td><div align=\"center\"><strong>Cantidad</strong></div></td>
<td><div align=\"center\"><strong>Descripcion</strong></div></td>
<td><div align=\"center\"><strong>Precio</strong></div></td>
<td><div align=\"center\"><strong>Total</strong></div></td>
</tr>
<tr>";

$result2 = mysql_query("SELECT sku, precio, cantidad FROM productos WHERE orderid='$orderid'");
while ($registro2 = mysql_fetch_array($result2)) {
$sku = $registro2["sku"];
$precio = $registro2["precio"];
$cantidad = $registro2["cantidad"];
echo
"
<td><div align=\"center\">$cantidad</div></td>
<td><div align=\"center\">$sku</div></td>
<td><div align=\"center\">$precio</div></td>
<td><div align=\"center\">$monto</div></td>
</tr>
";
}
?>
  #19 (permalink)  
Antiguo 23/02/2009, 14:19
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Mostrar consulta en tabla

Muchas Gracias por ayudarme!!!
  #20 (permalink)  
Antiguo 23/02/2009, 14:22
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Mostrar consulta en tabla

ah yap.. de nada para eso estmos..

cualquier consulta solo hazla... salu2
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 16:51.