Foros del Web » Programando para Internet » PHP »

Armar tabla en PHP

Estas en el tema de Armar tabla en PHP en el foro de PHP en Foros del Web. SAludos amigos. Tengo un consulta en mysql que me arroja el siguiente resultado: /id_producto / id reporte / descripcion/ ******************************* 1 * 1 * clavo ...
  #1 (permalink)  
Antiguo 28/08/2009, 12:00
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Armar tabla en PHP

SAludos amigos.

Tengo un consulta en mysql que me arroja el siguiente resultado:

/id_producto / id reporte / descripcion/
*******************************
1 * 1 * clavo
2 * 1 * martillo
3 * 1 * tornillo
*******************************

Quiero armar en php un tabla pero que me la arroje de la siguiente forma

/id reporte / id_producto / descripcion / id_producto / descripcion / id_producto/ descri
************************************************** ******************
1 * 1 * clavo * 2 * martillo * 3 * torni
************************************************** ******************

he intentado hacerlo directamente con la consulta con inner join pero no obtengo el resultado deseado, por lo que quisiera hacerlo mediante php, quien me puede dar una mano en esto ya que es urgente gracias a todos.
  #2 (permalink)  
Antiguo 28/08/2009, 12:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Armar tabla en PHP

lee lo siguiente:
APORTE: Representación de datos con tablas
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/08/2009, 12:32
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Armar tabla en PHP

Mas o menos esta es la logica, ya tu puedes adaptar la presentacion a tus requerimientos utilizando lo que menciona pateketrueke
Código PHP:
$miCabecera=" Aqui pongo lo que quiero que aparezca en mi reporte";
$qry("SELECT Campo1,Campo2, Campo3 blablabla");
$result mysql_query($qry) or die("La siguiente consulta contiene algún error:<br>nSQL: <b>$qry</b>");
echo 
$miCabecera;
while (
$row mysql_fetch_object($result))
{
echo 
" <td>{ $row->Campo1} </td><td>{$row->Campo2}</td><td> {$row->Campo3} </td>....";

  #4 (permalink)  
Antiguo 28/08/2009, 12:32
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Armar tabla en PHP

ok mi codigo es el siguiente :


// ************ consulta sql general *********
//
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="nombre.xls"');
require '../../clases/Bd.clase.php';
$bd=Db::getInstance();
$sql= "SELECT ordenes.area_empresa,ordenes.sociedad,ordenes.agen cia,ordenes.cod_cep,ordenes.nombre_cliente
,ordenes.direccion_cliente,ordenes.persona_contact o,ordenes.tlf_cliente,ordenes.texto_aviso_1,ordene s.texto_aviso_2
,ordenes.marca,ordenes.modelo,ordenes.numero_inven tario,ordenes.numero_activo,ordenes.numero_serial_ fabricacion,ordenes.clase,
ordenes.descripcion_actividad,ordenes.numero_ods,o rdenes.fecha_inicio_extrema,ordenes.fecha_fin_extr ema,
ordenes.pto_trabajo_ejecutante,ordenes.status_ods, ordenes.texto_reparacion,ordenes.fecha_ejecucion,
ordenes.hora_inicio,ordenes.hora_fin,ordenes.id_re porte,producto_utilizado.id_producto,producto.desc ripcion,
producto_utilizado.cantidad_utilizada,producto.und _medida,tecnico.cod_almacen,producto_utilizado.lot e
FROM ORDENES INNER JOIN producto_utilizado ON producto_utilizado.id_reporte = ordenes.id_reporte
INNER JOIN TECNICO ON producto_utilizado.id_tecnico = tecnico.id
INNER JOIN PRODUCTO ON producto_utilizado.id_producto = producto.id";
$stmt=$bd->ejecutar($sql)or die(mysql_error());
echo "<table border=1>\n";
echo "<tr>\n";
echo "<th>AREA DE EMPRESA</th>\n";
echo "<th>SOCIEDAD</th>\n";
echo "<th>AGENCIA</th>\n";
echo "<th>CODIGO CEP</th>\n";
echo "<th>NOMBRE CLIENTE</th>\n";
echo "<th>DIRECCION</th>\n";
echo "<th>PERSONA CONTACTO</th>\n";
echo "<th>TELEFONO</th>\n";
echo "<th>TEXTO DEL AVISO 1</th>\n";
echo "<th>TEXTO DEL AVISO 2</th>\n";
echo "<th>MARCA</th>\n";
echo "<th>MODELO</th>\n";
echo "<th>NUMERO INVENTARIO</th>\n";
echo "<th>NUMERO ACTIVO</th>\n";
echo "<th>NUMERO SERIE FABRICANTE</th>\n";
echo "<th>CLASE</th>\n";
echo "<th>DESCRIPCION CLASE ACTIVIDAD</th>\n";
echo "<th>NUMERO ORDEN</th>\n";
echo "<th>FECHA INICIO EXTREMA</th>\n";
echo "<th>FECHA FIN EXTREMA</th>\n";
echo "<th>PTO TRABAJO EJECUTANTE</th>\n";
echo "<th>STATUS DE ORDEN</th>\n";
echo "<th>TEXTO DE REPARACION</th>\n";
echo "<th>FECHA EJECUCION</th>\n";
echo "<th>HORA INICIO</th>\n";
echo "<th>HORA FINAL</th>\n";
echo "<th>NUMERO REPORTE INTERNO</th>\n";
echo "<th>CODIGO MATERIAL</th>\n";
echo "<th>DESCRIPCION</th>\n";
echo "<th>CANTIDAD</th>\n";
echo "<th>UDM</th>\n";
echo "<th>ALMACEN</th>\n";
echo "<th>LOTE</th>\n";
echo "</tr>\n";
$i = 0;
do {
echo "<tr align=>\n";
echo "<td><div align=\"left\">".$row['area_empresa']."</div></td>\n";
echo "<td><div align=\"left\">".$row['sociedad']."</div></td>\n";
echo "<td><div align=\"left\">".$row['agencia']."</div></td>\n";
echo "<td><div align=\"left\">".$row['cod_cep']."</div></td>\n";
echo "<td><div align=\"left\">".$row['nombre_cliente']."</div></td>\n";
echo "<td><div align=\"left\">".$row['direccion_cliente']."</div></td>\n";
echo "<td><div align=\"left\">".$row['persona_contacto']."</div></td>\n";
echo "<td><div align=\"left\">".$row['tlf_cliente']."</div></td>\n";
echo "<td><div align=\"left\">".$row['texto_aviso_1']."</div></td>\n";
echo "<td><div align=\"left\">".$row['texto_aviso_2']."</div></td>\n";
echo "<td><div align=\"left\">".$row['marca']."</div></td>\n";
echo "<td><div align=\"left\">".$row['modelo']."</div></td>\n";
echo "<td><div align=\"left\">".$row['numero_inventario']."</div></td>\n";
echo "<td><div align=\"left\">".$row['numero_activo']."</div></td>\n";
echo "<td><div align=\"left\">".$row['numero_serial_fabricacion']."</div></td>\n";
echo "<td><div align=\"left\">".$row['clase']."</div></td>\n";
echo "<td><div align=\"left\">".$row['descripcion_actividad']."</div></td>\n";
echo "<td><div align=\"left\">".$row['numero_ods']."</div></td>\n";
echo "<td><div align=\"left\">".$row['fecha_inicio_extrema']."</div></td>\n";
echo "<td><div align=\"left\">".$row['fecha_fin_extrema']."</div></td>\n";
echo "<td><div align=\"left\">".$row['pto_trabajo_ejecutante']."</div></td>\n";
echo "<td><div align=\"left\">".$row['status_ods']."</div></td>\n";
echo "<td><div align=\"left\">".$row['texto_reparacion']."</div></td>\n";
echo "<td><div align=\"left\">".$row['fecha_ejecucion']."</div></td>\n";
echo "<td><div align=\"left\">".$row['hora_inicio']."</div></td>\n";
echo "<td><div align=\"left\">".$row['hora_fin']."</div></td>\n";
echo "<td><div align=\"left\">".$row['id_reporte']."</div></td>\n";
echo "<td><div align=\"left\">".$row['id_producto']."</div></td>\n";
echo "<td><div align=\"left\">".$row['descripcion']."</div></td>\n";
echo "<td><div align=\"left\">".$row['cantidad_utilizada']."</div></td>\n";
echo "<td><div align=\"left\">".$row['und_medida']."</div></td>\n";
echo "<td><div align=\"left\">".$row['cod_almacen']."</div></td>\n";
echo "<td><div align=\"left\">".$row['lote']."</div></td>\n";
$i=$i+1;
} while($row = mysql_fetch_array($stmt));
echo "<td><div align=\"left\">".$valores["total"]."</div></td>\n";
echo "</tr>\n";
echo "</table>\n";
?>

el codigo crea la tabla perfectamente, lo que no se como hacer, es que en base al mismo numero de reporte me coloque los repuestos en la misma fila y no me repita todos los datos, es decir que id_producto,descripcion, cantidad_utilizada, und_medidad, cod_almacen_ y lote se repitan en la misma fila si un reporte usa 20 repuestos deberian aparecer los 20 repuestos en la misma fila y no repetirse la informacion 20 veces.
  #5 (permalink)  
Antiguo 28/08/2009, 13:23
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Armar tabla en PHP

Man, porque no intentas como te propuse.
Cita:
while ($row = mysql_fetch_object($result))
{
echo "<td><div align=\"left\">".$row->area_empresa."</div></td>";
echo "<td><div align=\"left\">".$row->sociedad."</div></td>";
.
.
.

}
Otra consulta, para que usas el $i?
  #6 (permalink)  
Antiguo 28/08/2009, 13:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
upsss. lo de $i, se me paso quitarlo, era un contador pero olvide eliminar esa linea

creo que no me han entendido, voy a tratar de explicarme mejor.

lo que obtengo es:

id_reporte/id_producto/descripcion
1 / 1 / a
1 / 2 / b
1 / 3 / c

y lo que quiero es:
id_reporte/id_producto/descripcion/id_producto/descripcion/id_producto/descripcion
1 / 1 / a / 2 / b / 3 / c /

la idea es armarla de esta forma para ser exportada a otro sistema, la exportacion lo voy a hacer en excel, de hecho ya me funciona , pero se me repiten vario datos al tener diferentes productos, como lo menciono arriba en vez de obtener 1 registro obtengo 3 con datos repetidos

Última edición por GatorV; 30/08/2009 a las 18:30
  #7 (permalink)  
Antiguo 29/08/2009, 08:39
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Armar tabla en PHP

Me parece que tu tema va porque le estas poniendo un salto de linea al codigo. Por eso te propuse que revisaras tu codigo y lo mantuvieras como el ejemplo que te di.
Código PHP:

echo "<td><div align=\"left\">".$row->area_empresa."</div></td>"// <--Aqui no  he puesto el "\n" 
  #8 (permalink)  
Antiguo 11/09/2009, 09:22
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Armar tabla en PHP

gracias por todo!!!!!
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 09:54.