Foros del Web » Programando para Internet » PHP »

logica de prog o relacion de tablas?

Estas en el tema de logica de prog o relacion de tablas? en el foro de PHP en Foros del Web. tengo 2 tablas en una base de datos, una pose los nombres de los usuarios y sus datos personales, la otra posee 6 tipos de ...
  #1 (permalink)  
Antiguo 30/06/2006, 17:11
 
Fecha de Ingreso: febrero-2006
Mensajes: 79
Antigüedad: 18 años, 2 meses
Puntos: 0
logica de prog o relacion de tablas?

tengo 2 tablas en una base de datos, una pose los nombres de los usuarios y sus datos personales, la otra posee 6 tipos de asignaciones (que son las mismas para todos los usuarios) pero no todos tienen las mismas asignaciones, por ejemplo usuario roberto imprimo las asignaciones en pantalla, que pueden ser 1,3,5... usuario alejandro asignaciones 2,3,5, 6. y asi dependiendo de qeu usuario selecciono. la pregunta es, para esto tengo que crear una relacion de tablas? o por medio de php al realizar las consultas podria obtener las asignaciones de cada usuario?... no se si es muy confuso, pero espero me ayuden que estoy bastante perdido sin encontrar la solucion, de antemano le agradezco a todos. saludos
  #2 (permalink)  
Antiguo 30/06/2006, 17:15
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
NO me queda claro, que son als asignacion y como las calculas.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 30/06/2006, 17:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 79
Antigüedad: 18 años, 2 meses
Puntos: 0
Cita:
Iniciado por TolaWare
NO me queda claro, que son als asignacion y como las calculas.
saludos, gracias por contestar, ok la segunda tabla de asignaciones serian el trabajo que tiene que hacer cada uno de los usuarios, por decir un empleado de una compañia. estas asignaciones para este ejemplo digo que son 6. podrian ser
1.aseo (salario)
2.seguridad (salario)
3.mensajeria (salario)
4.revision de documentos (salario)
5.reparaciones (salario)
6.gerencia (salario)

cada una de estas labores tiene un salario. lo que deseo hacer es
teniendo mi tabla de empleados, asignarle a cada empleado sus diferentes asignaciones, por ejemplo
roberto Asignacion 1. y 3.
simon asignacion 2. y 3.
raul asignacion 6.
cristobal asignacion 5. y 2.
esos es lo que quisiera. cual podria ser la finalidad de todo este enrredo? en base al nunmero de asignaciones por persona, calcular su salario etc. bueno espero haber sido mas claro. saludos
  #4 (permalink)  
Antiguo 30/06/2006, 17:30
 
Fecha de Ingreso: febrero-2006
Mensajes: 79
Antigüedad: 18 años, 2 meses
Puntos: 0
saludos spider boy, asi lo habia pensado, pero, es ahi donde no estoy muy claro en como hacerlo. ponte que quisiera hacer la consulta de cuantos usuarios tienen la asignacion de aseo?.. bueno no se si estoy enrredando esto mas pero, ya saben como es de dificil pedir ayuda cuando no esta uno muy claro. espero me entiendan.
  #5 (permalink)  
Antiguo 30/06/2006, 17:35
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
tendrías que crear un nuevo campo en la tabla de usuarios llamada "asignaciones"... y luego las ingresas... yo personalmente lo haría de esta manera... se me ocurrió en el momento... aunque no creo que sea la mejor...

ejemplo: (campo en tabla usuarios) asignaciones: 1-4-7

luego, para obtener los datos según sean las asignaciones, la obtienes por medio de una consulta sql (obvio) y le haces un explode al guión...

ej: $query = mysql_query("SELECT asignaciones FROM usuarios WHERE usuario='$usuario'");
$row = mysql_fetch_assoc($query);

$asig = explode("-", $row['asignaciones']);

luego...

$query2 = mysql_query("SELECT salario FROM asignaciones WHERE asignacion='$asig[0]'"); // $asig[0] corresponde a la asignación número 1 dada en el ej. de más arriba...


PERDÓN... PERO HASTA AHÍ LLEGÓ LA IDEA... jojojo...

Ahora... contar cuantos usuarios tienen una misma asignación...

siguiendo con el ejemplo del explode...

$query3 = mysql_query("SELECT usuario FROM usuarios WHERE asignacion='$asig[0]'");
while($row = mysql_fetch_assoc($query3))
{
$num = mysql_num_rows($query3);
echo $num; // y se supone que debería darte el número de usuarios con esa asignación...
}


PD: ATENCIÓN! POSIBLEMENTE TODO LO QUE ESCRIBÍ FUE UNA ESTUPIDEZ... MIENTRAS ESCRIBIA PERDÍ EL HILO DE LA IDEA... ASÍ QUE NOSÉ SI HABRÁ CORDURA EN MI POST...

Perdón :(
  #6 (permalink)  
Antiguo 30/06/2006, 17:39
 
Fecha de Ingreso: febrero-2006
Mensajes: 79
Antigüedad: 18 años, 2 meses
Puntos: 0
muchisimas gracias spider boy, exactamente diste en el clavo con lo que nesecitaba saber en esta parte:

ej: $query = mysql_query("SELECT asignaciones FROM usuarios WHERE usuario='$usuario'");
$row = mysql_fetch_assoc($query);
$asig = explode("-", $row['asignaciones']);
$query2 = mysql_query("SELECT salario FROM asignaciones WHERE asignacion='$asig[0]'"); // $asig[0] corresponde a la asignación número 1 dada en el ej. de más arriba...
  #7 (permalink)  
Antiguo 30/06/2006, 17:44
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
yo separaria la tabla de usuarios, la tabla de asignaciones y haria una 3ª tabla que tuviera las relaciones:

USUARIOS
ID, NOMBRE, + DATOS...

ASIGNACION:
ID, TITULO, REMUNERACION, + DATOS...

ASIGNACIONES:
ID_USUARIO, ID_ASIGNACION

luego haces las consultas asi:

SELECT * FROM asignaciones WHERE id=<ID DEL USUARIO>

para calcular la remuneracion total, hay varias formas. Una es usar JOIN en la consulta y que te aparezca la remuneracion por la asignacion como un campo más en la consulta anterior, y luego recorrer el resultado de la consulta con PHP he ir sumando. la otra es usar alguna funcion interna del servidor de base de datos que ocupes para calcular la suma.
  #8 (permalink)  
Antiguo 30/06/2006, 17:48
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Jojojo... que bueno... de verdad que me alegro haberle dado en el clavo por lo menos a una duda... pero lo que me complicaba era en caso de que tuviera más de una asignación... la idea era hacer solo una consulta para obtener todos los salarios...

prueba con esto...

(despues del explode)

for($i = 1; $i <= count($asig); $i++) {
$query2 = mysql_query("SELECT salario FROM asignaciones WHERE asignacion='$asig[$i]'");
$row = mysql_fetch_assoc($query2);
echo $row['salario']."<br>";
}

otra cosa... como dijeron arriba, hay muchas otras formas... yo hago lo que puedo por ayudar... no soy muy diestro en el tema... así que prueba todas las opciones que te den :)
  #9 (permalink)  
Antiguo 30/06/2006, 18:13
Avatar de Heros  
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 1
ok definitivamente este problema es de modelado de base de datos.. la solucion que plantea arraukano es la mas conveniente porque las tablas poseen relacion de n a n y por lo tanto se hace necesario crear una nueva tabla (asignaciones) que va contener las claves primarias de las otras dos tablas.. luego ya tienes que implementar el lenguaje de programación php adecuado para hacer las inserciones a las tablas.
un saludo
__________________
im knowing mi digitalself...
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 06:32.