totalmente neofito en programación PHP y MySQL "reportes de registros espcificos

Iniciado por Platanito Mx, 7 Marzo 2013, 20:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Platanito Mx

Tengo una BD en MySQL la cual tien diferentes tablas

Una tabla que se llama usuarios
Una tabla se llama computadoras donde tengo los campos: Marca, Modelo, Fabricante, SO, etc.
Pero en esa tabla no aparece la marca HP, lo que aparece es el numero 1, lo mismo con el fabricante, lo mismo con el SO
Una tabla que se llama marca, donde 1 = IBM, 2 = HP, 3 = Toshiba, etc. etc.

Quiero hacer un reporte en el cual escriba el nombre del usuario y me aparezcan los datos de la computadora que tiene asiganada, en este caos hablo de computadoras, pero tambien quiero que aparezca las impresoras, telefonos, perifericos, etc.

No sé por donde iniciar, busco en google reportes php mysql pero no aparece el cómo escribir lo que quiero buscar, o no encuentro como escribir el nombre y que haga la busqueda en las diferentes tablas, etc. etc.

quisiera que me ayudaran con una breve explicación, o que me digan...usa inner join, crea una vista primero, etc. etc. y para que puedas escribir el "nombre" y haga la busque sobre lo que escribiste haz esto y esto

Espero poder haber sido claro y me puedan ayudar, gracias.

1mpuls0

Vas por buen camino.

Supongo que a un usuario le corresponde una computadora.
Entonces como dices tienes tus tablas USUARIOS, COMPUTADORAS, MARCAS, MODELOS, SO.

En primer lugar debes tener ya registrada las computadoras antes de poder asignarlas al usuario.
en la tabla COMPUTADORAS debes además de tener los ID de la marca y modelos otro ID (un SK [SuperKey] de tipo autoincrement o podría ser el número de serie) también debes tener una llave foranea del usuario (fk) la cual tendria que poder ser null en todo caso y se va a actualizar cada vez que asignes una computadora. (computer_id, user_fk, computer_stamp, computer_model, computer_so, etc)

Por otro lado tienes los usuarios con sus atributos correspondientes (user_id, user_name, etc)

Una vez que tengas registrada las computadoras (no sé si el registro sea por formulario en php) se procede a la asignación de máquinas.

Utilizando INNER JOIN relacionas las tablas (USUARIOS-COMPUTADORAS y COMPUTADORAS-MARCAS-MODELOS-SO) para crear una vista y facilitar la tarea. (Al estar relacionadas estas solo te mostrará las computadoras que están asignadas junto con los usuarios)


Para finalizar en tu formulario donde tendrás un input tipo text en el cual se escribirá el nombre (no sé si del usuario o la computadora) y mediante AJAX o javascript puedes mostrar tu información en la misma página cada vez que se realice una consulta o bien del modo más facil puedes enviar por POST o GET el ID del usuario y recogerlo en otra página y mostrar la información.

En tu consulta a la vista tendrías algo como

SELECT * FROM ver_asignaciones WHERE user_name LIKE '%juan perez%'

Espero haberte ayudado un poco.

Saludos.



abc

Platanito Mx

Gracias Darhius

No sé que tan bueno sea lo siguiente:

Generar una vista para las computadoras por usuario
Generar una vista para las impresoras por usuario
Generar una vista para los telefonos por usuario
etc. etc.

despues hacer en PHP la conexion a la BD
después hacer la consulta en las tablas
¿esta bien?

s7evin


SELECT
  `los_campos_que_necesites`
FROM
  `usuario`
  INNER JOIN
    `computadora`
    ON `computadora`.`ID` = `usuario`.`computadora_ID`
  INNER JOIN
    `marca`.`ID`
    ON `computadora`.`marca_ID` = `marca`.`ID`
  /* y así con todas las tablas que necesites (no te pases jeje) */
WHERE
  `usuario`.`nombre` = "pericodelopalotes"
LIMIT 1 /* si solo quieres 1 solo resultado */


Ten en cuenta que con el INNER JOIN de `computadora` solo aparecerá el usuario si tiene asignado un PC, sino no deolverá resultado.
Si por el contrario necesitas que devuelva el usuario aunque no tenga asignado un PC, deberás usar otro tipo de JOIN, como puede ser el LEFT.

Espero que te sirva de ayuda.

Saludos!

1mpuls0

Cita de: Platanito Mx en 12 Marzo 2013, 16:12 PM
Gracias Darhius

No sé que tan bueno sea lo siguiente:

Generar una vista para las computadoras por usuario
Generar una vista para las impresoras por usuario
Generar una vista para los telefonos por usuario
etc. etc.

despues hacer en PHP la conexion a la BD
después hacer la consulta en las tablas
¿esta bien?

El punto es que una vista en realidad es una tabla, pero facilitan mucho las consultas sobre todo cuando tienes que relacionar información muy parecida.
En lo personal para mi es buena idea que realices la creación de las vistas ayudan mucho cuando se relaciona entre varias tablas.

abc