Hola, acá podrás descargar la guía paso a paso.
Si encuentras errores no olvides comentármelo en la caja de comentarios del video
Para descargar clic
Hola, acá podrás descargar la guía paso a paso.
Si encuentras errores no olvides comentármelo en la caja de comentarios del video
Para descargar clic
Hola, en este lugar encontraras el enlace de descarga del proyecto final, esta comprimido en zip, solo debes descomprimirlo y abrirlo con netbeans
Para descargar clic
Bienvenido, en esta pagina podras descargar el archivo .SQL con la base de datos usada en el proyecto.
Recuerda que simplemente vas a loclahost, phmyadmin y das importar, cargas el archivo y continuar. y listo
Para descargar clic en la imagen
Hola, espero que estén muy bien, en esta oportunidad traigo un curso de 8 videos en el que aprenderemos a crear un software, o un sistema de información de ventas con Java Web, utilizando el motor de base de datos MySQL y aplicando el patrón Modelo Vista Controlador, como siempre mi interés es darles las bases para que puedan crear sus propias aplicaciones y considero que con el contenido de este curso y su capacidad de auto aprendizaje podrán hacer cualquier sistema.
Videos del curso.
1. Introducción. Creando nuestro sistema de ventas Java Web MVC
2. Crear la estructura MVC y la interfaz del login y la clase de conexión a la BD
3. Crear el sistema de autenticación con Java Web y MySQL
4. Crear el menú de navegación del sistema con Java Web
6. CRUD de empleados con Java Web, MySQL y MVC
7. Diseño del modulo de Ventas
8. Registrar venta e imprimir factura
Para descargar la base de datos clic Aquí
Para descargar el proyecto completo clic Aquí
Para descargar la Guía paso a paso del proyecto clic Aquí
Hola, en este vídeo aprenderemos de forma muy básica y sencilla como instalar la librería JDBC MySQL Connector, en nuestro proyecto Java en NetBeans 12 . Entenderás como conectarte a la base de datos, como insertar nuevos registros y como buscar. Espero que les sea de utilidad. les dejo el enlace al proyecto y el enlace al vídeo de como crear la BD.
val tvResultado = findViewById<TextView>(R.id.tvResultado) val queue = Volley.newRequestQueue(this) val url = "http://192.168.1.69/proyectoandroid/listaProductos.php"val stringRequest = StringRequest(Request.Method.GET,url, Response.Listener { response -> val jsonArray = JSONArray(response) for(i in 0 until jsonArray.length()){ val jsonObject = JSONObject(jsonArray.getString(i)) var text = jsonObject.get("nombreproducto") tvResultado.text = text.toString() Toast.makeText(applicationContext,text.toString(),Toast.LENGTH_LONG).show() } },Response.ErrorListener { error ->}) queue.add(stringRequest)
/*=============================================
Validad usuario unico =============================================*/ $("#nuevoUsuario").change(function(){ $(".alert").remove(); var usuario = $(this).val(); var datos = new FormData(); datos.append("validarUsuario",usuario); $.ajax({ url:"ajax/usuarios.ajax.php", method: "POST", data: datos, cache:false, contentType:false, processData:false, success:function(respuesta){ console.log("Respuesta",respuesta); if(respuesta!="false"){ console.log("Respuesta2",respuesta); $("#nuevoUsuario").parent().after("<div class='alert alert-warning'>Este nombre de usuario ya existe</div>"); $("#nuevoUsuario").val(""); } } }) }) |
/*=============================================
VALIDAR USUARIO UNICO =============================================*/ public $validarUsuario; public function ajaxValidarUsuario(){ $item = "usuario"; $valor = $this -> validarUsuario; $respuesta = ControladorUsuarios::ctrMostrarUsuarios($item,$valor); echo json_encode($respuesta); } |
/*=============================================
VALIDAR USUARIO UNICO =============================================*/ if(isset($_POST['validarUsuario'])){ $validarUsuario = new AjaxUsuarios(); $validarUsuario -> validarUsuario = $_POST['validarUsuario']; $validarUsuario -> ajaxValidarUsuario(); } |
/*=============================================
Eliminar Usuario =============================================*/ $(".btnEliminarUsuario").click(function(){ var idUsuario = $(this).attr("idUsuario"); var fotoUsuario = $(this).attr("fotoUsuario"); var usuario = $(this).attr("usuario"); Swal.fire({ title: '¡Estas seguro que deseas eliminar el Usuario?', text: "Si no es asi puedes presionar el boton cancelar", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Si, Borrar usuario' }).then((result) => { if (result.value) { window.location = "index.php?ruta=usuarios&idusuario="+idUsuario+"&usuario="+usuario+"&fotousuario="+fotoUsuario; } }) }) |
<?php
$borrarUsuario = new ControladorUsuarios(); $borrarUsuario -> ctrBorrarUsuario(); ?> |
static public function ctrBorrarUsuario(){
if(isset($_GET['idusuario'])){ $tabla = "usuarios"; $datos = $_GET['idusuario']; if($_GET['fotousuario']!=""){ unlink($_GET['fotousuario']); rmdir("vistas/img/usuarios/".$_GET['usuario']); } $respuesta = ModeloUsuarios::mdlBorrarUsuario($tabla,$datos); if($respuesta=="ok"){ echo"<script> Swal.fire({ title: 'Success!', text: '¡El usuario ha sido actualizaddo correctamente!', icon: 'success', confirmButtonText:'Ok' }).then((result)=>{ if(result.value){ window.location = 'usuarios'; } }) </script>"; } } } |
static public function mdlBorrarUsuario($tabla,$datos){
$stmt = conexion::conectar()->prepare("DELETE FROM $tabla WHERE id = :id"); $stmt -> bindParam(":id",$datos,PDO::PARAM_STR); if($stmt->execute()){ return "ok"; }else{ return "error"; } $stmt -> close(); $stmt = null; } |
if($value['estado']!="1"){
echo'<td><button class="btn btn-danger btnprueba btn-xs">Inactivo</button></td>';
}else{
echo'<td><button class="btn btn-success btnprueba btn-xs">Activo</button></td>';
}
|
if($respuesta['estado']==1){
$_SESSION['iniciarSesion']="ok";
$_SESSION['nombre']=$respuesta['nombre'];
$_SESSION['usuario']=$respuesta['usuario'];
$_SESSION['foto']=$respuesta['foto'];
$_SESSION['perfil']=$respuesta['perfil'];
echo '<script>
window.location="inicio";
</script>';
}else{
echo("<div class='alert alert-danger'>Usuario inactivo, contacte al administrador del sistema</div>");
}
|
if($value['estado']!="1"){
echo'<td><button class="btn btn-danger btnprueba btn-xs btnActivar" idUsuario="'.$value["id"].'" estadoUsuario="1">Inactivo</button></td>';
}else{
echo'<td><button class="btn btn-success btnprueba btn-xs btnActivar" idUsuario="'.$value["id"].'" estadoUsuario="0">Activo</button></td>';
}
|
$(".btnActivar").click(function(){
var idUsuario = $(this).attr("idUsuario");
var estadoUsuario = $(this).attr("estadoUsuario");
var datos = new FormData();
datos.append("activarId",idUsuario);
datos.append("activarUsuario",estadoUsuario);
$.ajax({
url:"ajax/usuarios.ajax.php",
method: "POST",
data: datos,
cache:false,
contentType:false,
processData:false,
success:function(respuesta){
}
})
})
|
/*=============================================
ACTIVAR USUARIO
=============================================*/
public $activarUsuario;
public $activarId;
public function ajaxActivarUsuario(){
$tabla = "usuarios";
$item1 = "estado";
$valor1 =$this -> activarUsuario;
$item2 = "id";
$valor2 =$this -> activarId;
$respuesta = ModeloUsuarios::mdlActualizarUsuario($tabla,$item1,$valor1,$item2,$valor2);
}
|
/*=============================================
ACTIVAR USUARIO
=============================================*/
if(isset($_POST['activarUsuario'])){
$activarUsuario = new AjaxUsuarios();
$activarUsuario -> activarUsuario=$_POST['activarUsuario'];
$activarUsuario -> activarId=$_POST['activarId'];
$activarUsuario ->ajaxActivarUsuario();
}
|
static public function mdlActualizarUsuario($tabla,$item1,$valor1,$item2,$valor2){
$stmt = conexion::conectar()->prepare("UPDATE $tabla SET $item1 = :$item1 WHERE $item2 = :$item2");
$stmt -> bindParam(":".$item1,$valor1,PDO::PARAM_STR);
$stmt -> bindParam(":".$item2,$valor2,PDO::PARAM_STR);
if($stmt->execute()){
return "ok";
}else{
return "error";
}
$stmt ->close();
$stmt = null;
}
|
//Fecha de login
date_default_timezone_set("America/Bogota");
$fecha = date("y-m-d");
$hora = date("H:i:s");
$fechaActual = $fecha." ".$hora;
$item1 = "ultimo_login";
$valor1 = $fechaActual;
$item2 = "id";
$valor2 = $respuesta['id'];
$actualizarLogin = ModeloUsuarios::mdlActualizarUsuario($tabla,$item1,$valor1,$item2,$valor2);
if($actualizarLogin=="ok"){
echo '<script>
window.location="inicio";
</script>';
}
|
<td>'.$value['ultimo_login'].'</td>
|
<td>
<div class="btn-group">
<button class="btn btn-warning btn-xs btnEditarUsuario" idUsuario="'.$value["id"].'" data-toggle="modal" data-target="#modalEditarUsuario"><i class="fas fa-pencil-alt"></i></button>
<button class="btn btn-danger btn-xs btnEliminarUsuario" idUsuario="'.$value["id"].'" fotoUsuario="'.$value["foto"].'" usuario="'.$value["usuario"].'"><i class="fa fa-times"></i></button>
</div>
</td>
|
<!--
Modal Editar Usuario -->
<div class="modal fade"
id="modalEditarUsuario" role="dialog">
<div class="modal-dialog">
<form role="form" method="post"
enctype="multipart/form-data">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"
id="exampleModalLabel">Agregar usuario</h5>
<button type="button"
class="close" data-dismiss="modal"
aria-label="Close">
<span
aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<div class="input-group">
<span
class="input-group-addon" style="margin:10px 10px 0px
0px;"><i class="fa fa-user"></i></span>
<input type="text"
name="editarNombre" class="form-control input-lg"
value="Nombre Usuario" required>
</div>
</div>
<div
class="form-group">
<div
class="input-group">
<span
class="input-group-addon" style="margin:10px 10px 0px
0px;"><i class="fa fa-key"></i></span>
<input type="text"
name="editarUsuario" class="form-control input-lg"
placeholder="Ingresar usuario" required>
</div>
</div>
<div
class="form-group">
<div
class="input-group">
<span class="input-group-addon"
style="margin:10px 10px 0px 0px;"><i class="fa
fa-lock"></i></span>
<input type="text"
name="editarPassword" class="form-control input-lg"
placeholder="Escriba la nueva contraseña" required>
</div>
</div>
<div
class="form-group">
<div class="input-group">
<span
class="input-group-addon" style="margin:10px 10px 0px
0px;"><i class="fa fa-user"></i></span>
<select class="form-control
input-lg" name="editarPerfil">
<option value=""
id="editarPerfil"></option>
<option
value="Administrador">Administrador</option>
<option
value="Vendedor">Vendedor</option>
<option
value="Especial">Especial</option>
</select>
</div>
</div>
<div class="form-group">
<div
class="panel">SUBIRFOTO</div>
<input type="file"
name="editarFoto" class="nuevaFoto center-block">
<p
class="center-block">Peso maximo de la foto 2Mb</p>
<img src="vistas/img/user.png" class="thumbnail center-block
previsualizar" width="100px">
</div>
</div>
<div class="modal-footer">
<button type="button"
class="btn btn-danger"
data-dismiss="modal">Salir</button>
<button type="submit"
class="btn btn-primary">Guardar</button>
</div>
</div>
<?php
$crearusuario = new ControladorUsuarios();
$crearusuario -> ctrCrearUsuario();
?>
</form>
</div>
</div>
|
$(".btnEditarUsuario").click(function(){
var idUsuario =
$(this).attr("idUsuario");
console.log("idUsuario",idUsuario);
})
|
/*=============================================
EDITAR USUARIO
=============================================*/
$(".btnEditarUsuario").click(function(){
var idUsuario =
$(this).attr("idUsuario");
var datos = new FormData();
datos.append("idUsuario", idUsuario);
$.ajax({
url:"ajax/usuarios.ajax.php",
method: "POST",
data: datos,
cache: false,
contentType: false,
processData: false,
dataType: "json",
success: function(respuesta){
console.log("Respuesta",respuesta);
});
})
|
require_once
"../controladores/usuarios.controlador.php";
require_once
"../modelos/usuarios.modelo.php";
class
AjaxUsuarios{
/*=============================================
EDITAR USUARIO
=============================================*/
public
$idUsuario;
public
function ajaxEditarUsuario(){
$item
= "id";
$valor
= $this->idUsuario;
$respuesta
= ControladorUsuarios::ctrMostrarUsuarios($item, $valor);
echo
json_encode($respuesta);
}
}
/*=============================================
EDITAR
USUARIO
=============================================*/
if(isset($_POST["idUsuario"])){
$editar
= new AjaxUsuarios();
$editar
-> idUsuario = $_POST["idUsuario"];
$editar ->
ajaxEditarUsuario();
}
|
$("#editarNombre").val(respuesta['nombre']);
$("#editarUsuario").val(respuesta['usuario']);
$("#editarPerfil").html(respuesta['perfil']);
if(respuesta['foto']!=""){
$(".previsualizar").attr("src",respuesta['foto']);
}
},
error : function(respuesta) {
console.log("Error",respuesta);
}
|
<input type="hidden"
name="passwordActual" id="passwordActual">
|
<input type="hidden" name="fotoActual"
id="fotoActual">
|
$("#editarNombre").val(respuesta['nombre']);
$("#editarUsuario").val(respuesta['usuario']);
$("#passwordActual").val(respuesta['password']);
$("#editarPerfil").html(respuesta['perfil']);
$("#editarPerfil").val(respuesta['perfil']);
$("#fotoActual").val(respuesta['foto']);
if(respuesta['foto']!=""){
$(".previsualizar").attr("src",respuesta['foto']);
}
},
error : function(respuesta) {
console.log("Error",respuesta);
}
|
<?php
$editarUsuario = new ControladorUsuarios();
$editarUsuario -> ctrEditarUsuario();
?>
|
}
$tabla = "usuarios";
if($_POST['editarPassword']!=""){
if(preg_match('/^[a-zA-Z0-9]+$/',$_POST['nuevoPassword'])){
$salt = md5($_POST['editarPassword']);
$passwordEncriptado = crypt($_POST['editarPassword'],$salt);
}else{
echo"<script>
Swal.fire({
title: 'Error!',
text: '¡No puedes usar caraceres especiales en el campo contraseña!',
icon: 'error',
confirmButtonText:'Ok'
});
</script>";
}
}else{
$passwordEncriptado = $_POST['passwordActual'];
}
$datos = array("nombre"=>$_POST['editarNombre'],
"usuario"=>$_POST['editarUsuario'],
"password"=>$passwordEncriptado,
"perfil"=>$_POST['editarPerfil'],
"ruta"=>$ruta);
$respuesta = ModeloUsuarios::mdlEditarUsuario($tabla, $datos);
if($respuesta=="ok"){
echo"<script>
Swal.fire({
title: 'Success!',
text: '¡El usuario ha sido actualizaddo correctamente!',
icon: 'success',
confirmButtonText:'Ok'
}).then((result)=>{
if(result.value){
window.location = 'usuarios';
}
})
</script>";
}
}else{
echo"<script>
Swal.fire({
title: 'Error!',
text: '¡No puedes usar caracteres especiales en el campo nombre!',
icon: 'error',
confirmButtonText:'Ok'
})
</script>";
}
}
}
|
static public function mdlEditarUsuario($tabla,$datos){
$stmt = conexion::conectar()->prepare("UPDATE $tabla SET nombre=:nombre,password=:password,perfil=:perfil,foto=:foto WHERE usuario=:usuario");
$stmt -> bindParam(":nombre",$datos['nombre'],PDO::PARAM_STR);
$stmt -> bindParam(":usuario",$datos['usuario'],PDO::PARAM_STR);
$stmt -> bindParam(":password",$datos['password'],PDO::PARAM_STR);
$stmt -> bindParam(":perfil",$datos['perfil'],PDO::PARAM_STR);
$stmt -> bindParam(":foto",$datos['ruta'],PDO::PARAM_STR);
if($stmt->execute()){
return "ok";
}else{
return "error";
}
$stmt ->close();
$stmt = null;
}
|
$_SESSION['iniciarSesion']="ok";
$_SESSION['nombre']=$respuesta['nombre'];
$_SESSION['usuario']=$respuesta['usuario'];
$_SESSION['foto']=$respuesta['foto'];
$_SESSION['perfil']=$respuesta['perfil'];
|
//codigo de menu.php
<?php
if($_SESSION['nombre']!=""){
echo'<a
class="d-block">'.$_SESSION['nombre'].'</a></div>';
}else{
echo'<a href="#"
class="d-block">Nombre de usuario</a>
</div>';
}
?>
|
//código
para encabezado.php
<?php
if($_SESSION['nombre']!=""){
echo ' <span
class="dropdown-item dropdown-header">'.$_SESSION["nombre"].'</span>';
}else{
echo '<span
class="dropdown-item dropdown-header">Nombre de
Usuario</span>';
}
?>
|
<?php
if($_SESSION['foto']!=""){
echo '<img
src="'.$_SESSION["foto"].'" class="img-circle
elevation-2" alt="User Image">';
}else{
echo '<img
src="vistas/dist/img/user2-160x160.jpg" class="img-circle
elevation-2" alt="User Image">';
}
?>
|
$salt =
md5($_POST['nuevoPassword']);
$passwordEncriptado =
crypt($_POST['nuevoPassword'],$salt);
$datos
= array("nombre"=>$_POST['nuevoNombre'],
"usuario"=>$_POST['nuevoUsuario'],
"password"=>$passwordEncriptado,
"perfil"=>$_POST['nuevoPerfil'],
"ruta"=>$ruta);
|
$salt =
md5($_POST['nuevoPassword']);
$passwordEncriptado =
crypt($_POST['nuevoPassword'],$salt);
$respuesta =
ModeloUsuarios::mdlMostrarUsuarios($tabla,$item,$valor);
if($respuesta['usuario']==$_POST['ingUsuario']&&$respuesta['password']==$passwordEncriptado){
|
<script
src="vistas/js/usuarios.js"></script>
|
style="height: 55px; width: 580px;
|
$(".nuevaFoto").change(function(){
var imagen =
this.files[0];
console.log("imagen",imagen["type"]);
//Validar el tamaño de la
imagen
/*=============================================
VALIDAMOS EL FORMATO DE LA IMAGEN
SEA JPG O PNG
=============================================*/
if(imagen["type"]
!= "image/jpeg" && imagen["type"] != "image/png"){
$(".nuevaFoto").val("");
Swal.fire({
title: "Error al subir la
imagen",
text: "¡La imagen debe estar en
formato JPG o PNG!",
type: "error",
confirmButtonText: "¡Cerrar!"
});
}else
if(imagen["size"] > 2000000){
$(".nuevaFoto").val("");
Swal.fire({
title: "Error al subir la
imagen",
text: "¡La imagen no debe pesar más
de 2MB!",
type: "error",
confirmButtonText: "¡Cerrar!"
});
}else{
var datosImagen =
new FileReader;
datosImagen.readAsDataURL(imagen);
$(datosImagen).on("load",
function(event){
var
rutaImagen = event.target.result;
$(".previsualizar").attr("src",
rutaImagen);
})
}
})
|
if(isset($_FILES['nuevaFoto']['tmp_name'])){
|
$ruta="";
if(isset($_FILES['nuevaFoto']['tmp_name'])){
list($ancho, $alto) = getimagesize($_FILES['nuevaFoto']['tmp_name']);
$nuevoancho = 500;
$nuevoalto = 500;
//Crear directorio
$directorio = "vistas/img/usuarios/".$_POST['nuevoUsuario'];
mkdir($directorio,0755);
//De acuerdo al tipo de imagen se hace el proceso de recorte de la foto
if($_FILES['nuevaFoto']['type']=="image/jpeg"){
$aleatorio = mt_rand(100,999);
$ruta = $directorio."/".$aleatorio.".jpg";
$origen = imagecreatefromjpeg($_FILES['nuevaFoto']['tmp_name']);
$destino = imagecreatetruecolor($nuevoancho, $nuevoalto);
imagecopyresized($destino, $origen, 0, 0, 0, 0, $nuevoancho, $nuevoalto, $ancho, $alto);
imagejpeg($destino,$ruta);
}
if($_FILES['nuevaFoto']['type']=="image/png"){
$aleatorio = mt_rand(100,999);
$ruta = $directorio."/".$aleatorio.".png";
$origen = imagecreatefrompng($_FILES['nuevaFoto']['tmp_name']);
$destino = imagecreatetruecolor($nuevoancho, $nuevoalto);
imagecopyresized($destino, $origen, 0, 0, 0, 0, $nuevoancho, $nuevoalto, $ancho, $alto);
imagepng($destino,$ruta);
}
}
|
stmt = conexion::conectar()->prepare("INSERT INTO $tabla (nombre,usuario,password,perfil,foto) VALUES (:nombre,:usuario,:password,:perfil,:foto)");
$stmt -> bindParam(":nombre",$datos['nombre'],PDO::PARAM_STR);
$stmt -> bindParam(":usuario",$datos['usuario'],PDO::PARAM_STR);
$stmt -> bindParam(":password",$datos['password'],PDO::PARAM_STR);
$stmt -> bindParam(":perfil",$datos['perfil'],PDO::PARAM_STR);
$stmt -> bindParam(":foto",$datos['ruta'],PDO::PARAM_STR);
|