Q: No se pudo registrar todos los datos del usuario en base de datos mysql Estoy tratando de aprender MySQL.
Soy curiosa y he leido algunos tutoriales y me gusto uno en el que se crea un sistema de registro de empleados en una empresa.
En el sistema existen dos tipos de empleados, administrador y trabajador.
El proyecto esta creado con una plantilla CC Admin.
Podemos añadir nuevos usuarios y sus datos: Tipo Usuario, Departamento, Nombre, Apellidos, Email, Login, Clave de Ingreso, Clave de Asistencia.
Hasta ahora desde el panel puedo modificar todos los datos de los usuarios, puedo añadir nuevos tipos de usuarios, nuevos departamentos, etc, y todo esto se añade a la base de datos.
El problema me surge cuando trato de añadir un nuevo usuario desde el formulario de la interfaz, ya que recibo el siguiente error:
No se pudo registrar todos los datos del usuario

He tratado de añadir un usuario desde la phpMyAdmin, y este se muestra en la interfaz, pero cuando trato de acceder al panel con sus datos, no me lo permite, error:
Usuario y/o Password incorrectos
Como dige, soy nueva con las bases de datos y no como corregir esto. He tratado de hablar con el creador del código para que me ayudara, pero es imposible.
Tampoco se que que archivos mostrar, por que les añado la conexión a la DB
y el formulario con el que se añade a los usuarios.
Tengo un repositorio creado para esto, si fuera necesario se lo mostraria y con ello pueden ayudarme.
Usuario.php
<?php 
//incluir la conexion de base de datos
require "../config/Conexion.php";
class Usuario{


    //implementamos nuestro constructor
public function __construct(){

}

//metodo insertar registro
public function insertar($nombre,$apellidos,$login,$iddepartamento,$idtipousuario,$email,$clavehash,$imagen,$usuariocreado,$codigo_persona){
    date_default_timezone_set('Europe/Madrid');
    $fechacreado=date('Y-m-d H:i:s');
    $sql="INSERT INTO usuarios (nombre,apellidos,login,iddepartamento,idtipousuario,email,password,imagen,estado,fechacreado,usuariocreado,codigo_persona) VALUES ('$nombre','$apellidos','$login','$iddepartamento','$idtipousuario','$email','$clavehash','$imagen','1','$fechacreado','$usuariocreado','$codigo_persona')";
    return ejecutarConsulta($sql);

}

public function editar($idusuario,$nombre,$apellidos,$login,$iddepartamento,$idtipousuario,$email,$imagen,$usuariocreado,$codigo_persona){
    $sql="UPDATE usuarios SET nombre='$nombre',apellidos='$apellidos',login='$login',iddepartamento='$iddepartamento',idtipousuario='$idtipousuario',email='$email',imagen='$imagen' ,usuariocreado='$usuariocreado',codigo_persona='$codigo_persona'    
    WHERE idusuario='$idusuario'";
     return ejecutarConsulta($sql);

}
public function editar_clave($idusuario,$clavehash){
    $sql="UPDATE usuarios SET password='$clavehash' WHERE idusuario='$idusuario'";
    return ejecutarConsulta($sql);
}
public function mostrar_clave($idusuario){
    $sql="SELECT idusuario, password FROM usuarios WHERE idusuario='$idusuario'";
    return ejecutarConsultaSimpleFila($sql);
}
public function desactivar($idusuario){
    $sql="UPDATE usuarios SET estado='0' WHERE idusuario='$idusuario'";
    return ejecutarConsulta($sql);
}
public function activar($idusuario){
    $sql="UPDATE usuarios SET estado='1' WHERE idusuario='$idusuario'";
    return ejecutarConsulta($sql);
}

//metodo para mostrar registros
public function mostrar($idusuario){
    $sql="SELECT * FROM usuarios WHERE idusuario='$idusuario'";
    return ejecutarConsultaSimpleFila($sql);
}

//listar registros
public function listar(){
    $sql="SELECT * FROM usuarios";
    return ejecutarConsulta($sql);
}

public function cantidad_usuario(){
    $sql="SELECT count(*) nombre FROM usuarios";
    return ejecutarConsulta($sql);
}

//Función para verificar el acceso al sistema
    public function verificar($login,$clave)
    {
        $sql="SELECT u.codigo_persona,u.idusuario,u.nombre,u.apellidos,u.login,u.idtipousuario,u.iddepartamento,u.email,u.imagen,u.login, tu.nombre as tipousuario FROM usuarios u INNER JOIN tipousuario tu ON u.idtipousuario=tu.idtipousuario WHERE login='$login' AND password='$clave' AND estado='1'"; 
        return ejecutarConsulta($sql);  
    }
}

 ?>

La conexión con la base de datos
<?php 
require_once "global.php";

$conexion=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);

mysqli_query($conexion, 'SET NAMES "'.DB_ENCODE.'"');

//muestra posible error en la conexion
if (mysqli_connect_errno()) {
    printf("Ups parece que falló en la conexion con la base de datos: %s\n",mysqli_connect_error());
    exit();
}

if (!function_exists('ejecutarConsulta')) {
    Function ejecutarConsulta($sql){ 
global $conexion;
$query=$conexion->query($sql);
return $query;

    } 

    function ejecutarConsultaSimpleFila($sql){
global $conexion;

$query=$conexion->query($sql);
$row=$query->fetch_assoc();
return $row;
    }
function ejecutarConsulta_retornarID($sql){
global $conexion;
$query=$conexion->query($sql);
return $conexion->insert_id;
}

function limpiarCadena($str){
global $conexion;
$str=mysqli_real_escape_string($conexion,trim($str));
return htmlspecialchars($str);
}

}

 ?>

Y el archivo de configuración:
Este es el archivo que muestra los errores que se marcan en la interfaz al intentar añadir un nuevo usuario, usuario.php
<?php 
session_start();
require_once "../modelos/Usuario.php";

$usuario=new Usuario();

$idusuarioc=isset($_POST["idusuarioc"])? limpiarCadena($_POST["idusuarioc"]):"";
$clavec=isset($_POST["clavec"])? limpiarCadena($_POST["clavec"]):"";
$idusuario=isset($_POST["idusuario"])? limpiarCadena($_POST["idusuario"]):"";
$nombre=isset($_POST["nombre"])? limpiarCadena($_POST["nombre"]):"";
$apellidos=isset($_POST["apellidos"])? limpiarCadena($_POST["apellidos"]):"";
$login=isset($_POST["login"])? limpiarCadena($_POST["login"]):"";
$iddepartamento=isset($_POST["iddepartamento"])? limpiarCadena($_POST["iddepartamento"]):"";
$idtipousuario=isset($_POST["idtipousuario"])? limpiarCadena($_POST["idtipousuario"]):"";
$email=isset($_POST["email"])? limpiarCadena($_POST["email"]):"";
$codigo_persona=isset($_POST["codigo_persona"])? limpiarCadena($_POST["codigo_persona"]):"";
$password=isset($_POST["clave"])? limpiarCadena($_POST["clave"]):"";
$imagen=isset($_POST["imagen"])? limpiarCadena($_POST["imagen"]):"";
$usuariocreado=isset($_POST["nombre"])? limpiarCadena($_POST["nombre"]):"";
$idmensaje=isset($_POST["idmensaje"])? limpiarCadena($_POST["idmensaje"]):"";


switch ($_GET["op"]) {
    case 'guardaryeditar':

        if (!file_exists($_FILES['imagen']['tmp_name'])|| !is_uploaded_file($_FILES['imagen']['tmp_name']))  
        {
            $imagen=$_POST["imagenactual"];
        }else
        {

            $ext=explode(".", $_FILES["imagen"]["name"]);
            if ($_FILES['imagen']['type'] == "image/jpg" || $_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/png")
             {

               $imagen = round(microtime(true)).'.'. end($ext);
                move_uploaded_file($_FILES["imagen"]["tmp_name"], "../files/usuarios/" . $imagen);
            }
        }

        //Hash SHA256 para la contraseña
        $clavehash=hash("SHA256", $password);

        if (empty($idusuario)) {
            $idusuario=$_SESSION["idusuario"];
            $rspta=$usuario->insertar($nombre,$apellidos,$login,$iddepartamento,$idtipousuario,$email,$clavehash,$imagen,$usuariocreado,$codigo_persona);
            echo $rspta ? "Datos registrados correctamente" : "No se pudo registrar todos los datos del usuario";
        }
        else {
            $rspta=$usuario->editar($idusuario,$nombre,$apellidos,$login,$iddepartamento,$idtipousuario,$email,$imagen,$usuariocreado,$codigo_persona);
            echo $rspta ? "Datos actualizados correctamente" : "No se pudo actualizar los datos";
        }
    break;
    

    case 'desactivar':
        $rspta=$usuario->desactivar($idusuario);
        echo $rspta ? "Datos desactivados correctamente" : "No se pudo desactivar los datos";
    break;

    case 'activar':
        $rspta=$usuario->activar($idusuario);
        echo $rspta ? "Datos activados correctamente" : "No se pudo activar los datos";
    break;
    
    case 'mostrar':
        $rspta=$usuario->mostrar($idusuario);
        echo json_encode($rspta);
    break;

    case 'editar_clave':
        $clavehash=hash("SHA256", $clavec);

        $rspta=$usuario->editar_clave($idusuarioc,$clavehash);
        echo $rspta ? "Password actualizado correctamente" : "No se pudo actualizar el password";
    break;

    case 'mostrar_clave':
        $rspta=$usuario->mostrar_clave($idusuario);
        echo json_encode($rspta);
    break;
    
    case 'listar':
        $rspta=$usuario->listar();
        //declaramos un array
        $data=Array();


        while ($reg=$rspta->fetch_object()) {
            $data[]=array(
                "0"=>($reg->estado)?'<button class="btn btn-warning btn-xs" onclick="mostrar('.$reg->idusuario.')"><i class="fa fa-pencil"></i></button>'.' '.'<button class="btn btn-info btn-xs" onclick="mostrar_clave('.$reg->idusuario.')"><i class="fa fa-key"></i></button>'.' '.'<button class="btn btn-danger btn-xs" onclick="desactivar('.$reg->idusuario.')"><i class="fa fa-close"></i></button>':'<button class="btn btn-warning btn-xs" onclick="mostrar('.$reg->idusuario.')"><i class="fa fa-pencil"></i></button>'.' '.'<button class="btn btn-info btn-xs" onclick="mostrar_clave('.$reg->idusuario.')"><i class="fa fa-key"></i></button>'.' '.'<button class="btn btn-primary btn-xs" onclick="activar('.$reg->idusuario.')"><i class="fa fa-check"></i></button>',
                "1"=>$reg->nombre,
                "2"=>$reg->apellidos,
                "3"=>$reg->login,
                "4"=>$reg->email,
                "5"=>"<img src='../files/usuarios/".$reg->imagen."' height='50px' width='50px'>",
                "6"=>$reg->fechacreado,
                "7"=>($reg->estado)?'<span class="label bg-green">Activado</span>':'<span class="label bg-red">Desactivado</span>'
                );
        }

        $results=array(
             "sEcho"=>1,//info para datatables
             "iTotalRecords"=>count($data),//enviamos el total de registros al datatable
             "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
             "aaData"=>$data); 
        echo json_encode($results);

    break;


    case 'verificar':
        //validar si el usuario tiene acceso al sistema
        $logina=$_POST['logina'];
        $clavea=$_POST['clavea'];

        //Hash SHA256 en la contraseña
        $clavehash=hash("SHA256", $clavea);
    
        $rspta=$usuario->verificar($logina, $clavehash);

        $fetch=$rspta->fetch_object();

        if (isset($fetch)) 
        {
            # Declaramos la variables de sesion
            $_SESSION['idusuario']=$fetch->idusuario;
            $id=$fetch->idusuario;
            $_SESSION['nombre']=$fetch->nombre;
            $_SESSION['codigo_persona']=$fetch->codigo_persona;
            $_SESSION['imagen']=$fetch->imagen;
            $_SESSION['login']=$fetch->login;
            $_SESSION['tipousuario']=$fetch->tipousuario;
            $_SESSION['departamento']=$fetch->iddepartamento;

            require "../config/Conexion.php";

            $sql="UPDATE usuarios SET iteracion='1' WHERE idusuario='$id'";
            echo $sql; 
            ejecutarConsulta($sql);         

        }

        echo json_encode($fetch);

    break;

    case 'salir':
            
            $id=$_SESSION['idusuario'];
            $sql="UPDATE usuarios SET iteracion='0' WHERE idusuario='$id'";
            echo $sql; 
            ejecutarConsulta($sql);         


        //Limpiamos las variables de sesión   
        session_unset();
        //Destruìmos la sesión
        session_destroy();
        //Redireccionamos al login
        header("Location: ../index.php");

    break;

}
?>

