Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Ordenar tabla en funcion de otras tabla (http://www.forosdelweb.com/f86/ordenar-tabla-funcion-otras-tabla-583368/)

SackDaGo 06/05/2008 03:57

Ordenar tabla en funcion de otras tabla
 
Muy buenas. Pues mi problema es el siguiente. Tengo una tabla en la que estan el nombre de los usuarios junto con los permisos que tiene cada uno. Una vez que se crea un nuevo usuario se genera automaticamente una tabla que se llama con el usuario y que contiene los datos de un formulario, entre ellos el nombre del pais desde el que se genera el formulario.

Consigo mostrar todos los datos de todos los usuarios en pantalla pero ahora necesito organizar todos esos datos ordenandoloso por paises...es un poco lio...

Esto es lo k llevo y...no se como ordenarlo.

$user_query="select * from users";
$user_result= mysql_query($user_query, $conx) or die('Error making query');
$user_session=$_SESSION['username'];

while($user_row=mysql_fetch_array($user_result))
{

$user_name=$user_row["user_name"];

$table=$user_name;
$personal_query="select * from $table ORDER By country ";
$personal_result= mysql_query($personal_query) or die(mysql_error());
if($table != admin){
echo " <br><br><br><br>";
}
/* Desplegamos cada uno de los registros dentro de una tabla */
echo "<table border=1 align=center bgcolor=#CE0000 cellpadding=4 cellspacing style=color:white>";



/*todos los registros */
while($row=mysql_fetch_array($personal_result))
{
if($table == $user_session)
{
echo "<tr>

<td width=85% height=20 colspan=3>
<p align=center><font face=Arial><font size=4 color=white><b>Request by $row[country]</b></font></font></p>
</td>
</tr>......

continuaria la tabla, pero no es muy relevante creo....

Muchas Gracias!

quimfv 07/05/2008 01:15

Re: Ordenar tabla en funcion de otras tabla
 
Cada usuario tiene una tabla en la BBDD??!!!???

Quim

SackDaGo 07/05/2008 03:20

Re: Ordenar tabla en funcion de otras tabla
 
sip, cada usuario tiene una tabla, por? deberia redisenar la base de datos? Es que soy un poco inexperto en MySql...

quimfv 07/05/2008 06:14

Re: Ordenar tabla en funcion de otras tabla
 
Sip, supongo que estamos hablando de los mismos conceptos, lo que se hace normalmente es definir una tabla "usuarios"

usuarios
idUsusario
nombre
direccion
country
...
username
password


o los campos que necesites y luego cada usuario individual se guarda en un registro de esta tabla, y luego claro el problema que planteas ya no tendria sentido

si quieres listar todos los ususarios

$personal_query="select * from usuarios ORDER By country ";

o si quieres listar un usuario concreto (en este caso el de la session)

$personal_query="select * from usuarios where username='$_SESSION['username']'";

si quieres dar un tratamiento especial al usuario de la session pero dentro de la lista general de usuarios usas el primer ejemplo y antes de mostrar cada registro compruebas si es el de la session con un if y lo muestras con el tratamiento especial...

Deberias buscar documentacion sobre normalizacion de bases de datos relacionales. Se trata de descomponer la información en unidades distintas pero todas las del mismo tipo se guardan (una sola vez) en una tabla que normalmente toma un nombre representativo del tipo de datos que guarda (vaya resumen me ha salido)...

Por ejemplo en la tabla usuarios que te proponia mas arriba el campo country podria contener un id_country en vez de el nombre del pais y luego deberias crear otra tabla "countrys" con dos campos id_country y nombre_country con todos los paises del mundo y relacionar las dos tablas, de esta manera reducimos el tamaño de la bbdd sin reducir la información que contiene, puesto que no guardamos muchas veces "REPUBLICA DE LOS ESTADOS UNIDOS DE EUROPA DEL SUR OESTE" sino que guardamos "1" que podria ser su identificador para cada usuario de ese pais, que obviamente ocupa mucha menos memoria.


Quim


La zona horaria es GMT -6. Ahora son las 05:40.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.