I have a problem with showing some data in a select button, it happens that by default it always shows me the first one in the row, I made the test by entering different values in the database, it takes me but not listing it. When entering a new user as I said before I see the data "secretary mayor" who would be the one assigned with the code_cargo.
I leave the pages with which I am interacting to be able to do the process, I hope you help me I'm almost sure it's a tiny problem that can be fixed quickly. greetings to all
registrar.php
<?php
require '../scripts/funciones.php';
if(! haIniciadoSesion() || ! esAdmin() )
{
header('Location: index.html');
}
conectar();
$usuarios = getUsuario();
desconectar();
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Panel de Administración</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- Custom styles for this template -->
<link href="../css/dashboard.css" rel="stylesheet">
<!-- Validaciones en JavaScript -->
<script src="validar-usuario.js" type="text/javascript"></script>
<!-- CSS ME -->
<link rel="stylesheet" type="text/css" href="../css/estilos.css">
</head>
<body>
<?php include './menu-superior.php'; ?>
<div class="container-fluid">
<div class="row">
<?php include './sidebar.php'; ?>
<!-- <?php include './menu-lateral.php'; ?> -->
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" >
<h1 class="page-header">Agregar Nuevo Usuario:</h1>
<form action="registro.php" method="post" onsubmit="return validar();">
<div class="form-group">
<label for="email">Usuario:</label>
<input style="width: 20%;" type="text" class="form-control" id="txtUsuario" name="txtUsuario" placeholder="Ingrese Usuario" required="required" >
</div>
<div class="form-group">
<label for="pwd">Clave:</label>
<input style="width: 20%;" type="password" class="form-control" id="txtClave" name="txtClave" placeholder="Ingrese Clave"required="required" >
</div>
<div class="form-group">
<label for="pwd">Cargo:</label>
<select style="width: 20%;" name="cargo" size="0" >
<?php
$conexion = mysql_connect('localhost','root','','intranet');
mysql_select_db('intranet',$conexion);
$sentencia = "SELECT * FROM cargo order by cod_cargo asc";
$query = mysql_query($sentencia);
while ($arreglo = mysql_fetch_array($query)){ ?>
<option value="<?php echo $arreglo ['cod_cargo']?>"><?php echo $arreglo['nom_cargo']?></option>
<?php } ?>
</select>
</div>
<!--
<div class="form-group">
<label for="pwd">Cargo:</label>
<input style="width: 20%;" type="text" class="form-control" id="txtCargo" name="txtCargo" placeholder="Ingrese Cargo" required="required" >
</div>
-->
<div class="form-group">
<label for="pwd">N° de Permiso (1 para admin y 0 para usuario):</label>
<br>
<input style="width: 20%;" type="number" class="form-control" id="txtAdmin" name="txtAdmin" placeholder="Ingrese N° de Permiso"required="required">
</div>
<hr>
<button type="submit" id="btnguardar" name="btnguardar" class="btn btn-primary">Guardar</button>
<input type="reset" name="btn-reset" value="Limpiar Campos" class="btn btn-primary">
</form>
</div>
<?php
if(isset($_POST['btnguardar'])){
require("registro.php");
}
?>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</body>
</html>
registro.php
<?php
$conexion;
require '../scripts/funciones.php';
conectar();
// CREACION DE VARIABLES $USUARIO, $CLAVE, $CARGO Y $PERMISO PARA ALMACENAR LOS DATOS
$usuario = $_POST['txtUsuario'];
$clave = $_POST['txtClave'];
$cargo = $_POST['cargo'];
$permiso = $_POST['txtAdmin'];
// CONSULTA PARA INSERTAR LOS DATOS RECOGIDOS EN LAS VARIABLES DENTRO DEL FORMULARIO
//$insertar = mysqli_query($conexion, "INSERT INTO usuarios VALUES('".$usuario."', '".$clave."', '".$cargo."', '".$permiso."')");
$insertar = mysqli_query($conexion, "INSERT INTO usuarios VALUES ('".$usuario."','".$clave."','".$cargo."','".$permiso."')");
// EJECUCION DE CONSULTA
$resultado = mysqli_query($conexion, $insertar);
// IF PARA VERIFICAR SI EL USUARIO SE REGISTRO O NO, DE LO CONTRARIO INGRESE NUEVAMENTE LOS DATOS
if(!$resultado){
echo'<script>alert("Usuario registrado satisfactoriamente!")</script>';
echo'<script>alert("Ahora elija los permisos para el usuario.")</script>';
echo '<script>location.href ="permisos.php"</script>';
}else
{
echo '<script>alert("Error, Usuario no Registrado.")</script>';
}
mysqli_close($conexion);
?>
lista.php
<!-- VISTA -->
<?php
require '../scripts/funciones.php';
if(! haIniciadoSesion() || ! esAdmin() )
{
header('Location: index.html');
}
conectar();
$usuarios = getUsuario();
$cargo = getLista();
desconectar();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Panel de Administración</title>
<!--CSS PARA DARK TABLE -->
<!-- <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"> -->
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="../../assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="../css/dashboard.css" rel="stylesheet">
<!-- CSS ME -->
<link rel="stylesheet" type="text/css" href="../css/estilos">
</head>
<body>
<?php include './menu-superior.php'; ?>
<div class="container-fluid"">
<div class="row">
<?php include './sidebar.php'; ?>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main" >
<h1 class="page-header">Lista de Usuarios</h1>
<h4 class="sub-header">Usuarios registrados dentro de la BD</h4>
<!-- <h2 class="sub-header">Bienvenido, administrador.</h2>-->
<div class="table-responsive">
<table class="table table-striped" border="1">
<thead>
<tr>
<!-- <th style="background-color: #fff">N° de Anexo</th> -->
<th style="background-color: #fff">Nombre de Usuario</th>
<th style="background-color: #fff">Cargo</th>
<th style="background-color: #fff">Acción</th>
<th style="background-color: #fff">Acción</th>
</tr>
</thead>
<tbody>
<?php
// $i = 1;
foreach( $usuarios as $usuario ): ?>
<tr>
<!-- <td style="background-color: #fff"><?= $i++; ?></td> -->
<td style="background-color: #fff"><?= $usuario[0]?></td>
<td style="background-color: #fff"><?= $cargo[1]?></td>
<td style="background-color: #fff"><a href="editarUsuarios.php?usuario=<?= $usuario[0] ?>">Editar Datos</a></td>
<td style="background-color: #fff"><a href="eliminarUsuario.php?usuario=<?= $usuario[0] ?>">Eliminar Usuario</a></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
</body>
</html>
funciones.php
<?php
/* Variable Conexion global */
$conexion = null;
function conectar() /* Conexion a base de datos */
{
global $conexion; /* hace referencia a todas las variables globales */
$conexion = mysqli_connect('localhost','root','','intranet'); /* sentencia mysqli_connect para hacer conexion con la BD */
mysqli_set_charset ($conexion, 'utf8'); /* sentencia mysqli_set_charset establece el conjunto de caracteres predeterminados del cliente */
}
function conectarTabla()
{
global $conexion;
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "dbtuts";
mysql_connect($dbhost,$dbuser,$dbpass) or die('cannot connect to the server');
mysql_select_db($dbname) or die('database selection problem');
}
function tienePermiso($usuario, $idCat)
{
global $conexion;
$result = mysqli_query($conexion, "SELECT COUNT(*) AS total FROM permisos WHERE usuario='".$usuario."' AND ID_Categoria=".$idCat); /*sentencia que sirve para hacer una consulta a la base de datos */
$row = mysqli_fetch_assoc($result);
$numero = $row['total'];
return $numero > 0;
}
/* Editar categoria por ID */
function editarCategoria($id, $nombre, $descripcion, $ruta)
{
global $conexion;
$conexion = mysqli_query($conexion, "UPDATE categorias SET categoria='".$nombre."', descripcion='".$descripcion."', ruta='".$ruta."' WHERE ID_Categoria = ".$id);
}
/* Editar Usuario */
function editarUsuario($usuario, $clave, $cargo)
{
global $conexion;
$conexion = mysqli_query($conexion, "UPDATE usuarios SET usuario='".$usuario."', clave='".$clave."' , cod_cargo='".$cargo."' where usuario='".$usuario."' ");
}
function getTodasCategorias() /*Funcion para obtener las categorias */
{
global $conexion;
$respuesta = mysqli_query($conexion, "select * from categorias");
return $respuesta->fetch_all(); /* sentencia fetch_all devuelve un grupo de arrays */
}
// int or numeric = .$id
// varchar = '$usuario'
function getCategoriaPorId($id)
{
global $conexion;
$respuesta = mysqli_query($conexion, "SELECT * FROM categorias WHERE ID_Categoria = ".$id);
return mysqli_fetch_row($respuesta);
}
/* Obtener usuario por ID */
function getUsuarioPorId($usuario)
{
global $conexion;
$respuesta = mysqli_query($conexion, "SELECT * FROM usuarios where usuario= '$usuario'" );
return mysqli_fetch_row($respuesta);
}
/* Filtrar Categorias por Usuario */
function getCategoriasPorUser()
{
global $conexion;
$respuesta = mysqli_query($conexion, "SELECT C.categoria, C.descripcion, C.ruta FROM permisos P INNER JOIN categorias C ON P.ID_Categoria = C.ID_Categoria WHERE usuario = '".$_SESSION['usuario']."'");
return $respuesta->fetch_all();
}
/* Funcion para obtener Usuario */
function getUsuario()
{
global $conexion;
$respuesta = mysqli_query($conexion, "SELECT * from usuarios WHERE admin<>1");
return $respuesta->fetch_all();
}
/* Funcion para obtener lista de cargos */
function getLista()
{
global $conexion;
$respuesta = mysqli_query ($conexion, "SELECT usuarios.usuario, cargo.nom_cargo from usuarios, cargo where usuarios.cod_cargo = cargo.cod_cargo");
return mysqli_fetch_row($respuesta);
}
/*Validación de Login al hacer conexion*/
function validarLogin($usuario, $clave)
{
global $conexion;
$consulta = "SELECT * FROM usuarios WHERE usuario='".$usuario."' AND clave='".$clave."'";
$respuesta = mysqli_query ($conexion, $consulta);
if($fila = mysqli_fetch_row($respuesta) )
{
session_start();
$_SESSION['usuario'] = $usuario;
$_SESSION['admin'] = $fila[3];
return true;
}
return false;
}
/* FUNCION PARA ELIMINAR PERMISOS EN EL USUARIO */
function eliminarPermisos($usuario)
{
global $conexion;
mysqli_query($conexion, "DELETE FROM permisos WHERE usuario='".$usuario."'");
}
/* FUNCION ELIMINAR USUARIOS */
function eliminarUsuario($usuario)
{
global $conexion;
mysqli_query($conexion, "DELETE FROM usuarios WHERE usuario='".$usuario."'");
}
/* FUNCION REGISTRAR USUARIO */
function registrarUsuario($usuario, $clave, $cargo, $admin)
{
global $conexion;
mysqli_query($conexion, "INSERT INTO usuarios VALUES('".$usuario."', '".$clave."', '".$cargo."', '".$admin."')");
}
/*
$this->conectar();
$sql = "INSERT INTO usuarios VALUES ('$usuario','$clave','$cargo','$admin')";
$sentencia = $this->m->query($sql);
if($this->m->affected_arrows > 0 ){
echo "Se registro satisfactoriamente";
}else{
echo "No se pudo registrar satisfactoriamente, intente nuevamente ";
}
*/
/* FUNCION PARA ASIGNAR PERMISOS, EN VALORES USUARIOS Y ID CAT*/
function asignarPermisos($usuario, $idCat)
{
global $conexion;
mysqli_query($conexion, "INSERT INTO permisos VALUES('".$usuario."', ".$idCat.")");
}
/*FUNCION PARA VERIFICAR LA CONEXION DEL ADMINISTRADOR AL SISTEMA */
function esAdmin()
{
return $_SESSION['admin'];
}
/* FUNCION PARA INICIO DE SESIÓN */
function haIniciadoSesion()
{
session_start();
return isset($_SESSION['usuario']);
}
/* FUNCION PARA DESCONECTAR SESIÓN */
function desconectar()
{
global $conexion;
mysqli_close($conexion);
}
?>
BD
create database intranet;
use intranet;
create table usuarios(
usuario varchar(45) PRIMARY KEY,
clave varchar(45) NOT NULL,
cod_cargo int (5) NOT NULL,
admin boolean NOT NULL,
foreign key (cod_cargo) references cargo (cod_cargo)
);
insert into usuarios values
('admin','123','1',1);
insert into usuarios values
('Cecilia','123456','2',0),
('Martin','123456','3',0),
('Leo','123456','4',0),
('José','123456','5',0);
create table cargo(
cod_cargo int (5) PRIMARY KEY,
nom_cargo varchar(30)
);
insert into cargo values ('1','Secretaria Alcaldia');
insert into cargo values ('2','Jefe de Gabinete');
insert into cargo values ('3','Secretaria de Administracion');
insert into cargo values ('4','Encargado de Informatica');
insert into cargo values ('5','Oficina de Partes');
insert into cargo values ('6','Encargada de OIRS');