PHP - Cargar datos de una base dependiendo del tipo de usuario

 
Vista:
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Sebastian (35 intervenciones) el 15/05/2015 22:21:26
Saludos, es la primera vez que me conecto al foro espero me puedan ayudar.
Mis dudas son las siguientes:

En una base de datos tengo la tabla menus con 1 campo nombre con 8 registros insertados, lo que necesito es capturar esos registros y mostrarlos por grupos, es decir en una seccion de mi html mostrar del 1 al 4 en otra del 5 al 8 y asi sucesivamente.

Además los registros se deben mostrar dependiendo del tipo de usuario que se haya logeado al sistema, para ello tengo una tabla privilegios en la cual le asigno a cada tipo de usuario a que registros va a poder acceder.

Esta es mi funcion para obtener los registros del campo nombre por el tipo de usuario
1
2
3
4
5
6
7
8
9
function getMenusxTipoUser()
{
	global $conex;
	session_start();
	$respuesta = mysqli_query ($conex, "SELECT M.menu_nombre FROM privilegios P INNER JOIN menus M ON P.menu_id = M.menu_id WHERE tipousu_id='".$_SESSION['resultipo']."'");
 
	return $respuesta->fetch_all();
 
}

Ahora en mi html tengo un foreach que me obtiene todos los registros de mi tabla del campo nombre.
1
2
3
foreach ($respuesta as $fila):
		echo $fila[0];
	endforeach

Asi me muestra los registros a los que tiene permiso el tipo de usuario. Pero esto lo hace comparando los 8 registros insertados.

Yo necesito que en una seccion de mi html me compare los primeros 4 registros y me muestre solo a los que tenga permisos el usuario y en otra seccion me compara los siguientes 4 y haga el mismo proceso.

Intente utilizar un for ($i=1;$i<=4;$i++) pero no se como utilizarlo dentro mi html para las comparaciones.

Espero entiendan mi duda. Gracias por su ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cargar datos de una base dependiendo del tipo de usuario

Publicado por xve (6935 intervenciones) el 16/05/2015 18:57:27
Hola Sebastian, creo que seria algo así:
1
2
3
4
for ($i=0;$i<4;$i++)
{
    echo $respuesta[$i];
}

Recuerda que $respuesta es un array de valores, y el primer valor es el 0.

Nos puedes comentar si es esto lo que buscabas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Sebastian (35 intervenciones) el 16/05/2015 20:47:05
Hola xve, gracia por ayudarme

Estoy utilizando

1
2
for ($i=0;$i<=3;$i++)
echo implode($menus[$i])

Pero lo que hace es comparar los 8 registros insertados y solo cargarme los 4 primeros a los que tenga permisos ese usuario por ejemplo el usuario admin tiene permiso para lo registros
2
4
5
6
7
8
Y me muestra los registros
2
4
5
6
Yo lo que deseo es que solo me compare entre los 4 primeros, asi debería mostrarme solo los registros 2 y 4
2
4

Espero entiendas mi duda... No se si debería utilizar el for dentro de mi función para que haga lo q deseo????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Luis Palmer (3 intervenciones) el 16/05/2015 19:24:05
Hola lo que puedes hacer es agregar un campo más a tu tabla menú en la cual indicas la sección a la que irá la opción del menú, así tu consulta ya no sería sólo sobre un usuario con tu campo tipousu_id solamente, deberás enviar también la sección 1,2,3,n hasta las que tengas. Espero te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Sebastian (35 intervenciones) el 16/05/2015 22:01:05
Hola muchas gracias por tu ayuda.

No entiendo muy bien tu solución, es decir que en mi consulta en la parte del where deberia incluir otro con el campo seccion de mi tabla menu??? O en que parte de mi consulta deberia incluirlo

1
"SELECT M.menu_nombre FROM privilegios P INNER JOIN menus M ON P.menu_id = M.menu_id WHERE tipousu_id='".$_SESSION['resultipo']."'


Gracias por tu ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Luis (3 intervenciones) el 17/05/2015 01:08:12
Por ejemplo tienes una tabla menu con 8 opciones entiendo y tienes una tabla privilegios que asocia las opciones del menu con un usuario autorizado. si a esa tabla Menu donde guardas las opciones del menu le agregas una columna mas que se llame Seccion podrias indicar a cada opcion de tu menu en que seccion estara, despues de hacer un ALTER TABLE a tu tabla menus y agregues el Campo Seccion tu consulta tendra que ser de esta forma:

1
2
3
4
"SELECT M.menu_nombre FROM privilegios P
INNER JOIN menus M ON P.menu_id = M.menu_id 
WHERE 
tipousu_id='".$_SESSION['resultipo']." and M.Seccion=".$seccion."'

Asi con esa columna de apoyo podrias hacer varias consultas segun la cantidad de secciones que tengas para solo listar las opciones del menu de esa seccion, es mas limpio y siempre podras adicionar mas opciones de menu ubicandolo en la seccion que corresponda e indique en tu tabla.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Sebastian (35 intervenciones) el 17/05/2015 04:46:44
Gracias por tu ayuda.

Pude resolverlo de la siguiente manera: modifique el select de la siguiente manera para que haga la consulta entre las categorías que yo quiero por ejemplo para que me consulte entre la 1 y la 4:

1
2
3
"SELECT M.menu_nombre FROM privilegios P INNER JOIN menus M
ON P.menu_id = M.menu_id WHERE tipousu_id='".$_SESSION['resultipo']."'
AND M.menu_id BETWEEN '1' AND '4' ORDER BY p.menu_id ASC"

Y esta consulta irá a una determinada sección de mi html, así hago diferentes consultas para cada sección modificando el between entre 1 y 4; 5 y 8, y sucesivamente.

Posteriormente, necesito trabajar con asignación de privilegios, es decir incluiré un formulario en el cual se asigne más o se quite, a los 3 tipos de usuarios, los privilegios para acceder a distintos menús del sistema.

Mi duda es si con la manera en que resolví mi consulta no tendré inconvenientes al trabajar con la asignación de privilegios, o la opción que tu me brindas se adapta de mejor manera al problema planteado???

Gracias ayudarme..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Luis (3 intervenciones) el 17/05/2015 04:56:46
Digamos que en tu primera sección requieres un nuevo menú sería el numero 9 y para dar los privilegios tendrías que cambiar tu consulta el between ya no sería la solución Aun así tu solucion es valida si va quedar ahí. Tu solución no dará problemas para lo que piensas hacer luego ya que están fijas las opciones por cada seccion. Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cargar datos de una base dependiendo del tipo de usuario

Publicado por Sebastian (35 intervenciones) el 17/05/2015 05:28:02
Gracias por toda tu ayuda.

Efectivamente todas las opciones que va a tener mi programa son fijas para cada sección y no se pueden agregar nuevas.

Gracias por tu tiempo y espero seguir en contacto cuando más lo necesite...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar