Foros del Web » Programando para Internet » PHP »

como ordeno mi resultado en columnas y no en filas

Estas en el tema de como ordeno mi resultado en columnas y no en filas en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en php y necesito ayuda, si alguien me puede ayudar se los agradeceria un monton, tengo un query que me ...
  #1 (permalink)  
Antiguo 11/12/2007, 19:59
 
Fecha de Ingreso: diciembre-2007
Ubicación: Guatemala
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
como ordeno mi resultado en columnas y no en filas

Hola a todos, soy nuevo en php y necesito ayuda, si alguien me puede ayudar se los agradeceria un monton, tengo un query que me genera la consulta y todo bien, el problema es que quiero mostrar mi consulta en columnas y no en filas como me lo muestra, mejor les explico un poco mas:


Tengo dos Tablas:

Cita:

Employees:

Employee_ID /Name

01 /Hansen Ola
02 /Svendson Tove
03 /Svendson Stephen
04 /Pettersen Kari

Orders:

Prod_ID /Product /Employee_ID

234 /Printer /01
657 /Table /03
865 /Chair /03
Lo que tengo es el siguiente query:

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

Este es el resultado del query:

Resultado
=======================
Name / Product

Hansen Ola / Printer
Svendson Tove /
Svendson Stephen / Table
Svendson Stephen / Chair
Pettersen Kari /

El problema es que, yo deseo ordenar el resultado de esta forma y no se como, porque siempre al existir mas informacion de un mismo cliente me lo muestra abajo de la primer fila y yo lo quiero asi:

Name /Product /Product

Hansen Ola /Printer /
Svendson Tove / /
Svendson Stephen /Table /Chair
Pettersen Kari / /

Nesecito la ayuda de alguin....

Gracias y saludos a todos.

Última edición por --eDDu--; 06/01/2008 a las 19:06
  #2 (permalink)  
Antiguo 12/12/2007, 08:13
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: como ordeno mi resultado en columnas y no en filas

Eso no lo vas a poder hacer con una consulta ya que necesitarías que devolviese un número diferente de campos para cada registro. Lo debes solucionar con código.
La idea es recorrer la lista de clientes e ir armando la salida para cada cliente. Algo como (usando las funciones correspondientes a tu base de datos):


Código PHP:
$res=base_query("SELECT Employees.Name, Orders.Product FROM Employees LEFT JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID");
if (
$res){
    
$salida="";
    
$cliAnt="";
    while (
$fila=base_fecth_array($res)){
        
$cli=$fila['Name'];
        
$prod=$fila['Product'];
        if (
$cli!=$cliAnt){
            
//Nuevo cliente
            
$salida.="<br>Cliente: $cli:";
            
$cliAnt=$cli;
        }else{
            
//El mismo de antes
            
$salida.="$prod :: ";
        }
    }

}else{
    
$salida="No hay nada que mostra";
}
echo(
$salida); 
__________________
Kelpie
  #3 (permalink)  
Antiguo 12/12/2007, 08:41
Avatar de bluetorch  
Fecha de Ingreso: diciembre-2007
Mensajes: 26
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: como ordeno mi resultado en columnas y no en filas

sino tambien podes hacer un "mysql_fetch_assoc" y manejarte con los campos en forma libre y ponerlos como quieras... es otra alternativa

saludos....
  #4 (permalink)  
Antiguo 12/12/2007, 14:51
 
Fecha de Ingreso: diciembre-2007
Ubicación: Guatemala
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como ordeno mi resultado en columnas y no en filas

Gracias amigos, voy a probar y les cuento.

Bye.
  #5 (permalink)  
Antiguo 06/01/2008, 18:58
 
Fecha de Ingreso: diciembre-2007
Ubicación: Guatemala
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como ordeno mi resultado en columnas y no en filas

Hola Kelpie, gracias por la ayuda pero no logro hacer que muestre el primer dato lo oculta y solo me muestra el segundo y los siguientes.


Código PHP:

$conexion 
mysql_connect('localhost''root''');
mysql_select_db('clientes_prueba');


//Ejecutamos la sentencia SQL
    
$tabla mysql_query("SELECT employees.Name, orders.Product FROM employees LEFT JOIN orders ON employees.Employee_ID=orders.Employee_ID");
    
if (
$tabla){
    
$salida="";
    
$cliAnt="";
    while (
$fila=mysql_fetch_array($tabla)){
        
$cli=$fila['Name'];
        
$prod=$fila['Product'];
        if (
$cli!=$cliAnt){
            
//Nuevo cliente
            
$salida.="<br>Cliente: $cli:";
            
$cliAnt=$cli;
        }else{
            
//El mismo de antes
            
$salida.="    $prod --- ";
        }
    }

}else{
    
$salida="No hay nada que mostra";
}
echo(
$salida); 
Este es mi resultado como ves no muestra el mes de Enero y si esta en la base de Datos
Cita:
Cliente: Edgar Dueñas: Febrero --- Marzo --- Abril --- Mayo --- Junio ---
Cliente: Sully Interiano:
Cliente: Joseline Dueñas: Febrero --- Marzo --- Abril --- Mayo --- Junio --- Julio --- Agosto ---
Cliente: Cristina de Leon:
Gracias por tu ayuda y este es el codigo.
Saludos a todos.
  #6 (permalink)  
Antiguo 06/01/2008, 22:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: como ordeno mi resultado en columnas y no en filas

Solo es cuestion de mostrar el producto tambien en el primer if:
Código PHP:

$conexion 
mysql_connect('localhost''root''');
mysql_select_db('clientes_prueba');


//Ejecutamos la sentencia SQL
    
$tabla mysql_query("SELECT employees.Name, orders.Product FROM employees LEFT JOIN orders ON employees.Employee_ID=orders.Employee_ID");
    
if (
$tabla){
    
$salida="";
    
$cliAnt="";
    while (
$fila=mysql_fetch_array($tabla)){
        
$cli=$fila['Name'];
        
$prod=$fila['Product'];
        if (
$cli!=$cliAnt){
            
//Nuevo cliente
            
$salida.="<br>Cliente: $cli: $prod ---";
            
$cliAnt=$cli;
        }else{
            
//El mismo de antes
            
$salida.="    $prod --- ";
        }
    }

}else{
    
$salida="No hay nada que mostra";
}
echo(
$salida); 
Saludos.
  #7 (permalink)  
Antiguo 07/01/2008, 06:19
 
Fecha de Ingreso: diciembre-2007
Ubicación: Guatemala
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como ordeno mi resultado en columnas y no en filas

Muchas gracias a todos, alfin solucione mi problema.

Saludos.
  #8 (permalink)  
Antiguo 07/01/2008, 22:23
 
Fecha de Ingreso: diciembre-2007
Ubicación: Guatemala
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Sonrisa Re: como ordeno mi resultado en columnas y no en filas

Alguien me puede decir como alinear el resultado en columnas, para que no se vea asi.

Cita:
Cliente: Edgar Dueñas: Enero -- Febrero --- Marzo --- Abril --- Mayo --- Junio ---
Cliente: Sully Interiano:
Cliente: Joseline Dueñas: Enero -- Febrero --- Marzo --- Abril --- Mayo --- Junio --- Julio ---
Cliente: Cristina de Leon:
Podria mostrarlo dentro de una tabla, para que todo este alineado en columna, pero no se como mostrar mi resultado en una tabla o celda a puro codigo e tratado de usar un poco de html dentro pero no funciona.

Gracias por toda la ayuda porque soy un aprendis y quiero aprender a usar php, lo mas que he echo son consultas simples, inserciones, actualizaciones... lo mas simple que puede existir.

Este es el codigo PHP

Código PHP:
$conexion mysql_connect('localhost''root''');
mysql_select_db('clientes_prueba');


//Ejecutamos la sentencia SQL
    
$tabla mysql_query("SELECT employees.Name, orders.Product FROM employees LEFT JOIN orders ON employees.Employee_ID=orders.Employee_ID");
    
if (
$tabla){
    
$salida="";
    
$cliAnt="";
    while (
$fila=mysql_fetch_array($tabla)){
        
$cli=$fila['Name'];
        
$prod=$fila['Product'];
        if (
$cli!=$cliAnt){
            
//Nuevo cliente
            
$salida.="<br>Cliente: $cli: $prod ---";
            
$cliAnt=$cli;
        }else{
            
//El mismo de antes
            
$salida.=" $prod --- ";
        }
    }

}else{
    
$salida="No hay nada que mostra";
}
echo(
$salida); 
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:36.