CRUD
This commit is contained in:
parent
06fc0ee834
commit
29f5fc3d08
42
Practicas/Practicas_SQL/codigo/INTRO_SQL_EVENTOS.sql
Normal file
42
Practicas/Practicas_SQL/codigo/INTRO_SQL_EVENTOS.sql
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
---------Eventos en MySQL
|
||||
--Capacidad de MySQL de ejecutar tareas en intervalos regulares o en momentos específicos.
|
||||
--Para que?
|
||||
--Tareas de mantenimiento en tu base de datos, limpieza de registros antiguos, optimización de tablas, promociones o períodos de prueba...
|
||||
|
||||
--Verificar si esta activado el programador de eventos
|
||||
SHOW VARIABLES LIKE 'event_scheduler';
|
||||
|
||||
--Activarlo si no esta encendido
|
||||
SET GLOBAL event_scheduler = ON;
|
||||
|
||||
--Mostrar los eventos existentes
|
||||
SHOW EVENTS;
|
||||
|
||||
--Crear un evento estructura básica
|
||||
CREATE EVENT event_name
|
||||
ON SCHEDULE schedule
|
||||
DO
|
||||
event_body;
|
||||
|
||||
--Creación de un evento (aumenta los precios un 5% cada mes)
|
||||
CREATE EVENT actualizar_precios
|
||||
ON SCHEDULE
|
||||
EVERY 1 MONTH
|
||||
DO
|
||||
UPDATE productos SET precio = precio * 1.05;
|
||||
|
||||
|
||||
--ON SCHEDULE (momento de ejecución del evento)
|
||||
--AT(en una fecha determinada)
|
||||
ON SCHEDULE AT 'YYYY-MM-DD HH:MM:SS'
|
||||
-- A una hora determinada(todos los días)
|
||||
ON SCHEDULE AT '09:00:00'
|
||||
--ON SCHEDULE EVERY(para indicar evento que se repite a intervalos entre dos fechas)
|
||||
ON SCHEDULE EVERY interval_type [STARTS initial_date] [ENDS ending_date]
|
||||
ON SCHEDULE EVERY 1 DAY
|
||||
STARTS CURRENT_DATE
|
||||
ENDS CURRENT_DATE + INTERVAL 1 WEEK
|
||||
|
||||
|
||||
|
||||
|
||||
148
Practicas/Practicas_SQL/codigo/INTRO_SQL_FUNCTION.sql
Normal file
148
Practicas/Practicas_SQL/codigo/INTRO_SQL_FUNCTION.sql
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
---Uso de funciones en MYSQL
|
||||
|
||||
--Pensadas para realizar cálculos y devolver resultados mediante RETURN, devuelven un valor con un tipo definido.
|
||||
|
||||
--Pueden ser invocadas desde una consulta, por ejemplo:
|
||||
SELECT nombre_funcion(parametros) FROM tabla
|
||||
--No pueden operar con transacciones
|
||||
|
||||
----Vocabulario básico para crear una función en MySQL:
|
||||
|
||||
CREATE FUNCTION: sentencia para crear la función.
|
||||
|
||||
NOMBRE_DE_LA_FUNCION: nombre de la función debe ser único en la base de datos.
|
||||
|
||||
RETURNS: Especificamos el tipo de dato que vamos a retornar como INT, VARCHAR, FLOAT, etc.
|
||||
|
||||
BEGIN ... END: Define el cuerpo de la función.
|
||||
|
||||
DECLARE: declarar variables.
|
||||
|
||||
SET: asignar valores a variables.
|
||||
|
||||
INTO: Se utiliza en combinación con una consulta SQL para asignar los resultados de la consulta a variables.
|
||||
|
||||
RETURN: sentencia para devolver el resultado.
|
||||
|
||||
PARAMETROS: son los parametros que le pasamos a la función (parametro1 INT,parametro2 FLOAT)
|
||||
|
||||
---Tipos de función
|
||||
-- DETERMINISTIC: Indica que la función siempre produce el mismo resultado para los mismos valores de entrada.
|
||||
-- NO SQL: no realiza operaciones en la base de datos.
|
||||
-- READS SQL DATA: puede leer datos de la base de datos, pero no modificarlos. (Hay que indicarlo cuando sea el caso)
|
||||
|
||||
|
||||
--- Estructura básica de una función MySQL
|
||||
DELIMITER //
|
||||
CREATE FUNCTION nombre_funcion (variable tipo)
|
||||
RETURNS tipo
|
||||
BEGIN
|
||||
--INICIO DE ACCIONES
|
||||
DECLARE numero INT; -- Declara la variable numero como INT
|
||||
SELECT count(*) INTO numero FROM clientes; --Realiza una consulta para contar el número de filas en la tabla clientes y asigna el resultado a la variable numero.
|
||||
RETURN numero;
|
||||
--FIN DE ACCIONES
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
--Ejemplo
|
||||
|
||||
CREATE FUNCTION calcular_area_circulo (radio FLOAT)
|
||||
RETURNS FLOAT
|
||||
BEGIN
|
||||
DECLARE area FLOAT; -- Declaración de variable local
|
||||
SET area = PI() * POW(radio, 2); -- Cálculo del área
|
||||
RETURN area; -- Devolución del resultado
|
||||
END;
|
||||
|
||||
--Llamada a la función
|
||||
SELECT calcular_area_circulo(5);
|
||||
|
||||
--Podemos llamar a una función desde diferentes contextos, incluyendo consultas SQL, procedimientos almacenados, disparadores (triggers) y funciones definidas por el usuario.
|
||||
|
||||
|
||||
--Otro ejemplo función que devuelve el nombre del mes en español
|
||||
DELIMITER //
|
||||
|
||||
CREATE FUNCTION nombre_mes(numero_mes INT) RETURNS VARCHAR(20)
|
||||
BEGIN
|
||||
DECLARE nombre VARCHAR(20);
|
||||
|
||||
CASE numero_mes
|
||||
WHEN 1 THEN SET nombre = 'Enero';
|
||||
WHEN 2 THEN SET nombre = 'Febrero';
|
||||
WHEN 3 THEN SET nombre = 'Marzo';
|
||||
WHEN 4 THEN SET nombre = 'Abril';
|
||||
WHEN 5 THEN SET nombre = 'Mayo';
|
||||
WHEN 6 THEN SET nombre = 'Junio';
|
||||
WHEN 7 THEN SET nombre = 'Julio';
|
||||
WHEN 8 THEN SET nombre = 'Agosto';
|
||||
WHEN 9 THEN SET nombre = 'Septiembre';
|
||||
WHEN 10 THEN SET nombre = 'Octubre';
|
||||
WHEN 11 THEN SET nombre = 'Noviembre';
|
||||
WHEN 12 THEN SET nombre = 'Diciembre';
|
||||
ELSE SET nombre = 'Mes no válido';
|
||||
END CASE;
|
||||
|
||||
RETURN nombre;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
-- Principales estructuras para controlar el flujo de código
|
||||
|
||||
--IF-THEN-ELSE: Permite ejecutar un bloque de código si una condición especificada es verdadera y otro bloque si la condición es falsa.
|
||||
|
||||
IF condición THEN
|
||||
-- Código a ejecutar si la condición es verdadera
|
||||
ELSE
|
||||
-- Código a ejecutar si la condición es falsa
|
||||
END IF;
|
||||
|
||||
--CASE: Evalúa una lista de condiciones y devuelve un valor único correspondiente a la primera condición verdadera. Se puede usar en su forma simple o en su forma de expresión, donde se puede utilizar para asignar valores a una variable.
|
||||
|
||||
CASE
|
||||
WHEN condición1 THEN valor1
|
||||
WHEN condición2 THEN valor2
|
||||
...
|
||||
ELSE valor_por_defecto
|
||||
END;
|
||||
Ejemplo de asignación de valor mediante CASE:
|
||||
|
||||
Otro ejemplo:
|
||||
SET variable =
|
||||
CASE
|
||||
WHEN condición1 THEN valor1
|
||||
WHEN condición2 THEN valor2
|
||||
...
|
||||
ELSE valor_por_defecto
|
||||
END;
|
||||
|
||||
|
||||
--WHILE: Permite ejecutar un bloque de código repetidamente mientras una condición especificada sea verdadera.
|
||||
|
||||
WHILE condición DO
|
||||
-- Código a ejecutar mientras la condición sea verdadera
|
||||
END WHILE;
|
||||
|
||||
|
||||
--LOOP: Se utiliza para crear bucles que se ejecutan indefinidamente hasta que se alcanza una condición de salida.
|
||||
|
||||
LOOP
|
||||
-- Código a ejecutar
|
||||
IF condición_de_salida THEN
|
||||
LEAVE; -- Termina el bucle
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
|
||||
--ITERATE: Se utiliza dentro de un bucle para saltar a la siguiente iteración del bucle.
|
||||
|
||||
ITERATE; -- Salta a la siguiente iteración del bucleç
|
||||
|
||||
|
||||
--LEAVE: Se utiliza dentro de un bucle para salir del bucle.
|
||||
|
||||
LEAVE; -- Sale del bucle
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
|
||||
--Stored Procedures--Procedimientos almacenados
|
||||
|
||||
-- Que son ?
|
||||
-- Son bloques de código SQL que se almacenan en la base de datos y se pueden llamar y ejecutar repetidamente(funciones????)
|
||||
|
||||
--Direfencias con las funciones
|
||||
--Tipo de retorno:
|
||||
---Funciones: Devuelven un único valor como resultado y pueden ser utilizadas en cualquier lugar donde se espera una expresión.
|
||||
---Procedimientos almacenados: No devuelven valores explícitos, aunque pueden producir resultados indirectos, como modificar datos en tablas o generar resultados a través de cursores de salida.
|
||||
|
||||
--Uso en consultas:
|
||||
---Funciones: Pueden ser invocadas directamente dentro de consultas SELECT, INSERT, UPDATE o DELETE.
|
||||
---Procedimientos almacenados: No pueden ser directamente invocados dentro de consultas, pero pueden ser llamados desde aplicaciones o desde otros procedimientos almacenados.
|
||||
|
||||
|
||||
--Cambios en la base de datos
|
||||
---Funciones: No pueden realizar operaciones de modificación de datos directamente sobre las tablas.
|
||||
---Procedimientos almacenados: Pueden contener sentencias SQL que modifican datos en las tablas, como INSERT, UPDATE o DELETE.
|
||||
|
||||
--Parametros
|
||||
---Funciones: Pueden aceptar parámetros de entrada y devolver un valor como resultado.
|
||||
---Procedimientos almacenados: Pueden aceptar parámetros de entrada y/o salida, pero no devuelven un valor explícito.
|
||||
|
||||
|
||||
-- Vocabulario
|
||||
|
||||
CREATE PROCEDURE: crear un nuevo procedimiento.
|
||||
|
||||
BEGIN y END: para delimitar el cuerpo del procedimiento almacenado, donde se encuentra las instrucciones a ejecutar.
|
||||
|
||||
DELIMITER: para cambiar el delimitador de sentencia temporalmente)
|
||||
|
||||
DECLARE: para declarar variables locales dentro del procedimiento almacenado.
|
||||
|
||||
IN indica que el parámetro es de entrada,
|
||||
OUT indica que es de salida
|
||||
INOUT indica que es tanto de entrada como de salida.
|
||||
|
||||
IF, ELSEIF, ELSE, END IF: para condicionar la ejecución de bloques.
|
||||
|
||||
CASE: para evaluar múltiples condiciones.
|
||||
|
||||
LOOP: para crear un bucle infinito.
|
||||
|
||||
REPEAT: para ejecutar bucles.
|
||||
|
||||
LEAVE: para salir de un bucle o de un bloque de código etiquetado.
|
||||
|
||||
ITERATE: para saltar a la siguiente iteración de un bucle.
|
||||
|
||||
RETURN: para devolver un valor de un procedimiento almacenado.
|
||||
|
||||
CALL: para llamar y ejecutar un procedimiento almacenado.
|
||||
|
||||
|
||||
--Para que ?
|
||||
---Procedimiento para insertar datos:
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE insertar_usuario(
|
||||
IN p_nombre VARCHAR(50),
|
||||
IN p_apellido VARCHAR(50),
|
||||
IN p_email VARCHAR(100)
|
||||
)
|
||||
BEGIN
|
||||
INSERT INTO usuarios(nombre, apellido, email) VALUES (p_nombre, p_apellido, p_email);
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
---Procedimiento para actualizar datos:
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE actualizar_usuario(
|
||||
IN p_id INT,
|
||||
IN p_nombre VARCHAR(50),
|
||||
IN p_apellido VARCHAR(50),
|
||||
IN p_email VARCHAR(100)
|
||||
)
|
||||
BEGIN
|
||||
UPDATE usuarios SET nombre = p_nombre, apellido = p_apellido, email = p_email WHERE id = p_id;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
---Procedimiento para eliminar datos:
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE eliminar_usuario(
|
||||
IN p_id INT
|
||||
)
|
||||
BEGIN
|
||||
DELETE FROM usuarios WHERE id = p_id;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
---Procedimiento para obtener datos filtrados:
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE obtener_usuarios_por_apellido(
|
||||
IN p_apellido VARCHAR(50)
|
||||
)
|
||||
BEGIN
|
||||
SELECT * FROM usuarios WHERE apellido = p_apellido;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
---Otro ejemplo con parametros de entrada
|
||||
CREATE PROCEDURE calcular_precio_total(
|
||||
IN producto_id INT,
|
||||
IN cantidad_comprada INT,
|
||||
OUT precio_total DECIMAL(10,2)
|
||||
)
|
||||
BEGIN
|
||||
-- Declarar una variable para almacenar el precio del producto
|
||||
DECLARE precio_unitario DECIMAL(10,2);
|
||||
|
||||
-- Obtener el precio unitario del producto
|
||||
SELECT precio INTO precio_unitario FROM productos WHERE id = producto_id;
|
||||
|
||||
-- Calcular el precio total
|
||||
SET precio_total = precio_unitario * cantidad_comprada;
|
||||
END;
|
||||
|
||||
|
||||
---Llamar al procedimiento
|
||||
CALL calcular_precio_total(1, 5, @precio_total);
|
||||
SELECT @precio_total;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
---Procedimiento para realizar cálculos y retornar resultados:
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE calcular_total_pedidos_periodo(
|
||||
IN p_fecha_inicio DATE,
|
||||
IN p_fecha_fin DATE,
|
||||
OUT total_pedidos DECIMAL(10,2)
|
||||
)
|
||||
BEGIN
|
||||
SELECT SUM(total) INTO total_pedidos FROM pedidos WHERE fecha BETWEEN p_fecha_inicio AND p_fecha_fin;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
---Llamada al procedimiento
|
||||
CALL calcular_total_pedidos_periodo('2024-01-01', '2024-03-31', @total_pedidos);
|
||||
SELECT @total_pedidos;
|
||||
|
||||
|
||||
|
||||
|
||||
35
Practicas/Practicas_SQL/codigo/INTRO_SQL_TRIGGERS.sql
Normal file
35
Practicas/Practicas_SQL/codigo/INTRO_SQL_TRIGGERS.sql
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
---------Que son los triggers ?
|
||||
|
||||
--Son bloques de código SQL que se ejecutan automáticamente en respuesta a ciertos eventos en una tabla, como la inserción, actualización o eliminación de registros.
|
||||
|
||||
---------Consideraciones:
|
||||
--Eventos de Activación: Los triggers se activan en respuesta a eventos específicos que ocurren en una tabla, como INSERT, UPDATE o DELETE.
|
||||
|
||||
--Momento de Activación: Los triggers pueden ser "BEFORE" (antes de que ocurra el evento que lo activa) o "AFTER" (después de que ocurra el evento que lo activa).
|
||||
|
||||
--Acceso a los Datos: Dentro de un trigger, puedes acceder a los datos antiguos y nuevos utilizando las palabras clave OLD y NEW respectivamente.
|
||||
|
||||
--Tablas y Disparadores Relacionados: Es posible tener múltiples triggers asociados con una sola tabla para diferentes eventos (INSERT, UPDATE, DELETE), y también es posible tener múltiples triggers para el mismo evento en una tabla.
|
||||
|
||||
--Cascada de Triggers: Si un trigger modifica la tabla en la que está definido, esto puede activar otros triggers.
|
||||
|
||||
--Restricciones de Transacción: Los triggers se ejecutan dentro del contexto de la transacción que activa el evento, lo que significa que los cambios realizados por un trigger pueden ser revertidos si la transacción es revertida.
|
||||
|
||||
--Rendimiento: pueden afectar el rendimiento de las operaciones en la base de datos.
|
||||
|
||||
--Seguridad y Privilegios: el trigger es controlado por su creador.
|
||||
|
||||
--Depuración y Mantenimiento: Es importante probarlos y documentarlos.
|
||||
|
||||
|
||||
|
||||
--------Estructura básica de un TRIGGER
|
||||
CREATE TRIGGER nombre_trigger
|
||||
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_tabla
|
||||
FOR EACH ROW | FOR EACH STATEMENT -- Por cada fila afectada o una vez por todo el evento.
|
||||
BEGIN
|
||||
-- Código del trigger aquí
|
||||
END;
|
||||
|
||||
|
||||
|
||||
18
Practicas/Practicas_SQL/codigo/INTRO_SQL_VISTAS.sql
Normal file
18
Practicas/Practicas_SQL/codigo/INTRO_SQL_VISTAS.sql
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
---------Vistas en MySQL
|
||||
|
||||
--Es una consulta SQL almacenada representa una tabla virtual que no contiene datos físicos, pero proporciona una representación lógica de los datos almacenados en una o más tablas.
|
||||
|
||||
--Para que?
|
||||
-- Para simplificar las consultas SQL y para restringir el acceso a ciertos datos.
|
||||
|
||||
-- Codigo básico Vistas
|
||||
CREATE OR REPLACE VIEW nombre_vista AS
|
||||
SELECT columna1, columna2, ...
|
||||
FROM tabla1
|
||||
JOIN tabla2 ON condiciones
|
||||
WHERE condiciones
|
||||
GROUP BY columna_grupo
|
||||
HAVING condiciones_grupo
|
||||
ORDER BY columna_orden
|
||||
LIMIT cantidad_filas;
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
function connection(){
|
||||
$nombre_servidor = "localhost";
|
||||
$nombre_usuario = "root";
|
||||
$contraseña = "Logomark8";
|
||||
$nombre_base_datos = "tienda";
|
||||
mysqli_report(MYSQLI_REPORT_OFF);
|
||||
$conexion = mysqli_connect($nombre_servidor, $nombre_usuario, $contraseña, $nombre_base_datos);
|
||||
if (!$conexion) {
|
||||
exit("Error de conexión: " . mysqli_connect_error());
|
||||
}
|
||||
return $conexion;
|
||||
}
|
||||
?>
|
||||
156
Practicas/Practicas_SQL/ejercicios/tienda/crud/css/style.css
Normal file
156
Practicas/Practicas_SQL/ejercicios/tienda/crud/css/style.css
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Segoe UI', sans-serif;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.users-form form{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
width: 30%;
|
||||
margin: 10px auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.users-form form input{
|
||||
font-family: 'Segoe UI', sans-serif;
|
||||
}
|
||||
|
||||
.users-form form input[type=text],
|
||||
.users-form form input[type=password],
|
||||
.users-form form input[type=email]{
|
||||
padding: 8px;
|
||||
border:2px solid #aaa;
|
||||
border-radius:4px;
|
||||
outline:none;
|
||||
transition:.3s;
|
||||
}
|
||||
|
||||
.users-form form input[type=text]:focus,
|
||||
.users-form form input[type=password]:focus,
|
||||
.users-form form input[type=password]:focus{
|
||||
border-color:dodgerBlue;
|
||||
box-shadow:0 0 6px 0 dodgerBlue;
|
||||
}
|
||||
|
||||
.users-form form input[type=submit]{
|
||||
border: none;
|
||||
padding: 12px 50px;
|
||||
text-decoration: none;
|
||||
transition-duration: 0.4s;
|
||||
cursor: pointer;
|
||||
border-radius: 5px;
|
||||
background-color: white;
|
||||
color: black;
|
||||
border: 2px solid #60a100;
|
||||
}
|
||||
|
||||
.users-form form input[type=submit]:hover {
|
||||
background-color: #60a100;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.users-table table{
|
||||
border: 1px solid #ccc;
|
||||
border-collapse: collapse;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.detail-table table{
|
||||
border: 1px solid #ccc;
|
||||
border-collapse: collapse;
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
width: 60%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
table tr {
|
||||
background-color: #f8f8f8;
|
||||
border: 1px solid #ddd;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table th{
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
font-size: .85em;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
|
||||
.users-table--detail{
|
||||
background: #09adc8;
|
||||
padding: 6px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.users-table--edit{
|
||||
background: #009688;
|
||||
padding: 6px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.users-table--delete{
|
||||
background: #b11e1e;
|
||||
padding: 6px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Estilos básicos para el menú */
|
||||
nav {
|
||||
background-color: #333;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav li {
|
||||
display: inline;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
nav a {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
background-color: #555;
|
||||
}
|
||||
|
||||
/* Estilos para los enlaces activos */
|
||||
nav .active a {
|
||||
background-color: #007bff;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$pedido_id = $_GET["pedido_id"];
|
||||
|
||||
|
||||
// Borrar en productos
|
||||
$sql = "DELETE FROM pedidos WHERE pedido_id='$pedido_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
if ($query) {
|
||||
Header("Location: index_pedidos.php");
|
||||
} else {
|
||||
$mensaje = "Se ha producido un error al borrar el registro.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_pedidos.php?mensaje=" . $mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$producto_id = $_GET["producto_id"];
|
||||
|
||||
|
||||
// Borrar en productos
|
||||
$sql = "DELETE FROM productos WHERE producto_id='$producto_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
if ($query) {
|
||||
Header("Location: index_productos.php");
|
||||
} else {
|
||||
$mensaje = "Se ha producido un error al borrar el registro.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_productos.php?mensaje=" . $mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$cliente_id=$_GET["cliente_id"];
|
||||
|
||||
// Borrar en usuarios
|
||||
// $sql_usuarios="DELETE FROM usuarios WHERE cliente_id='$cliente_id'";
|
||||
// $query_usuarios = mysqli_query($con, $sql_usuarios);
|
||||
|
||||
// Borrar en clientes
|
||||
$sql="DELETE FROM clientes WHERE cliente_id='$cliente_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
|
||||
//if($query AND $query_usuarios){
|
||||
if($query){
|
||||
Header("Location: index_clientes.php");
|
||||
}else{
|
||||
$mensaje ="Se ha producido un error al borrar el registro.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
// Recuperar los datos del formulario
|
||||
$producto_id = $_POST["producto_id"];
|
||||
$nombre = $_POST["nombre"];
|
||||
$precio = $_POST["precio"];
|
||||
|
||||
|
||||
// Actualizo en productos
|
||||
$sql = "UPDATE productos SET nombre='$nombre', precio='$precio' WHERE producto_id='$producto_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
|
||||
if($query){
|
||||
$mensaje ="Producto actualizado.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_productos.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}else{
|
||||
$mensaje ="Se ha producido un error al actualizar.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_productos.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
34
Practicas/Practicas_SQL/ejercicios/tienda/crud/edit_user.php
Normal file
34
Practicas/Practicas_SQL/ejercicios/tienda/crud/edit_user.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
// Recuperar los datos del formulario
|
||||
$cliente_id = $_POST["cliente_id"];
|
||||
$nombre = $_POST["nombre"];
|
||||
$correo = $_POST["correo"];
|
||||
$direccion = $_POST["direccion"];
|
||||
$nombre_usuario = $_POST["nombre_usuario"];
|
||||
$contrasena = $_POST["contrasena"];
|
||||
|
||||
// Actualizo en clientes
|
||||
$sql = "UPDATE clientes SET nombre='$nombre', correo_electronico='$correo', direccion='$direccion' WHERE cliente_id='$cliente_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
|
||||
// Actualizo en usuarios
|
||||
$sql_usuarios = "UPDATE usuarios SET nombre_usuario='$nombre_usuario', contraseña='$contrasena' WHERE cliente_id='$cliente_id'";
|
||||
$query_usuarios = mysqli_query($con, $sql_usuarios);
|
||||
|
||||
|
||||
if($query AND $query_usuarios){
|
||||
$mensaje ="Usuario actualizado.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}else{
|
||||
$mensaje ="Se ha producido un error al actualizar.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 117 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 283 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 320 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 131 KiB |
|
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$sql = "SELECT * FROM clientes_usuarios";
|
||||
$query = mysqli_query($con, $sql);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<title>Clientes CRUD</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="active"><a href="index_clientes.php">Clientes</a></li>
|
||||
<li><a href="index_productos.php">Productos</a></li>
|
||||
<li><a href="index_pedidos.php">Pedidos</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="users-table">
|
||||
<h2>Registro de Clientes</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<form action="insert_user.php" method="POST">
|
||||
<label for="nombre">Nombre:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="correo">Correo electrónico:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="direccion">Dirección:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="nombre_usuario">Nombre de usuario:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="contrasena">Contraseña:</label>
|
||||
</td>
|
||||
<td>
|
||||
</td> <!-- Celda vacía para el botón de envío -->
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="text" name="nombre" id="nombre" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="email" name="correo" id="correo" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="direccion" id="direccion" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nombre_usuario" id="nombre_usuario" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="contrasena" id="contrasena" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="submit" value="Registrarse">
|
||||
</td>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<?php if (isset($_GET['mensaje'])) echo "<p>" . $_GET['mensaje'] . "</p>"; ?>
|
||||
</div>
|
||||
|
||||
<div class="users-table">
|
||||
<h2>Clientes registrados</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Cliente ID</th>
|
||||
<th>Nombre</th>
|
||||
<th>Correo Electrónico</th>
|
||||
<th>Dirección</th>
|
||||
<th>Nombre usuario</th>
|
||||
<th>Password</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php while ($fila = mysqli_fetch_array($query)) { ?>
|
||||
<tr>
|
||||
<th><?php echo $fila['cliente_id'] ?></th>
|
||||
<th><?php echo $fila['nombre'] ?></th>
|
||||
<th><?php echo $fila['correo_electronico'] ?></th>
|
||||
<th><?php echo $fila['direccion'] ?></th>
|
||||
<th><?php echo $fila['nombre_usuario'] ?></th>
|
||||
<th><?php echo $fila['contraseña'] ?></th>
|
||||
<th><a href="update_user.php?cliente_id=<?php echo $fila['cliente_id'] ?>" class="users-table--edit">Editar</a></th>
|
||||
<th><a href="delete_user.php?cliente_id=<?php echo $fila['cliente_id'] ?>" class="users-table--delete">Eliminar</a></th>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
104
Practicas/Practicas_SQL/ejercicios/tienda/crud/index_pedidos.php
Normal file
104
Practicas/Practicas_SQL/ejercicios/tienda/crud/index_pedidos.php
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$sql = "SELECT * FROM pedidos";
|
||||
$query = mysqli_query($con, $sql);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<title>Predidos CRUD</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a href="index_clientes.php">Clientes</a></li>
|
||||
<li><a href="index_productos.php">Productos</a></li>
|
||||
<li class="active"><a href="index_pedidos.php">Pedidos</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- <div class="users-table">
|
||||
<h2>Registro de Productos</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<form action="insert_producto.php" method="POST">
|
||||
<label for="nombre">Nombre:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="correo">Precio:</label>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="text" name="nombre" id="nombre" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="precio" id="precio" required>
|
||||
</td>
|
||||
<td>
|
||||
<td>
|
||||
<input type="submit" value="Registrarse">
|
||||
</td>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<?php if (isset($_GET['mensaje'])) echo "<p>" . $_GET['mensaje'] . "</p>"; ?>
|
||||
</div> -->
|
||||
|
||||
<div class="users-table">
|
||||
<h2>Pedidos registrados</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pedido ID</th>
|
||||
<th>Cliente ID</th>
|
||||
<th>Fecha</th>
|
||||
<th>Estado</th>
|
||||
<th>Total</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php while ($fila = mysqli_fetch_array($query)) { ?>
|
||||
<tr>
|
||||
<th><?php echo $fila['pedido_id'] ?></th>
|
||||
<th><?php echo $fila['cliente_id'] ?></th>
|
||||
<th><?php echo $fila['fecha'] ?></th>
|
||||
<th> <select id="estado_pedido" onchange="cambiarEstado(<?php echo $fila['pedido_id'] ?>,this.value)">
|
||||
<option <?php echo $fila['estado'] === 'pendiente' ? 'selected' : ''; ?> value="pendiente">Pendiente</option>
|
||||
<option <?php echo $fila['estado'] === 'en_preparacion' ? 'selected' : ''; ?> value="en_preparacion">En preparacion</option>
|
||||
<option <?php echo $fila['estado'] === 'enviado' ? 'selected' : ''; ?> value="enviado">Enviado</option>
|
||||
<option <?php echo $fila['estado'] === 'completado' ? 'selected' : ''; ?> value="completado">Completado</option>
|
||||
</select></th>
|
||||
|
||||
<th><?php echo $fila['total'] ?></th>
|
||||
<th><a href="update_producto.php?producto_id=<?php echo $fila['pedido_id'] ?>" class="users-table--edit">Ver Detalle</a></th>
|
||||
<th><a href="delete_pedido.php?pedido_id=<?php echo $fila['pedido_id'] ?>" class="users-table--delete">Eliminar</a></th>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<script>
|
||||
function cambiarEstado(pedido_id, estado) {
|
||||
window.location.href = "update_estado_pedido.php?pedido_id=" + pedido_id + "&estado=" + estado;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$sql = "SELECT * FROM productos";
|
||||
$query = mysqli_query($con, $sql);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<title>Productos CRUD</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a href="index_clientes.php">Clientes</a></li>
|
||||
<li class="active"><a href="index_productos.php">Productos</a></li>
|
||||
<li><a href="index_pedidos.php">Pedidos</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="users-table">
|
||||
<h2>Registro de Productos</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<form action="insert_producto.php" method="POST">
|
||||
<label for="nombre">Nombre:</label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="correo">Precio:</label>
|
||||
</td>
|
||||
<td>
|
||||
</td> <!-- Celda vacía para el botón de envío -->
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="text" name="nombre" id="nombre" required>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="precio" id="precio" required>
|
||||
</td>
|
||||
<td>
|
||||
<td>
|
||||
<input type="submit" value="Registrarse">
|
||||
</td>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<?php if (isset($_GET['mensaje'])) echo "<p>" . $_GET['mensaje'] . "</p>"; ?>
|
||||
</div>
|
||||
|
||||
<div class="users-table">
|
||||
<h2>Productos registrados</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Producto ID</th>
|
||||
<th>Nombre</th>
|
||||
<th>Precio</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php while ($fila = mysqli_fetch_array($query)) { ?>
|
||||
<tr>
|
||||
<th><?php echo $fila['producto_id'] ?></th>
|
||||
<th><?php echo $fila['nombre'] ?></th>
|
||||
<th><?php echo $fila['precio'] ?></th>
|
||||
<th><a href="update_producto.php?producto_id=<?php echo $fila['producto_id'] ?>" class="users-table--edit">Editar</a></th>
|
||||
<th><a href="delete_producto.php?producto_id=<?php echo $fila['producto_id'] ?>" class="users-table--delete">Eliminar</a></th>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
// Verificar si se ha enviado el formulario
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
|
||||
// Recuperar los datos del formulario
|
||||
$nombre = $_POST["nombre"];
|
||||
$precio = $_POST["precio"];
|
||||
|
||||
|
||||
// Desactivar los informes de errores de MySQLi
|
||||
mysqli_report(MYSQLI_REPORT_OFF);
|
||||
|
||||
|
||||
$insercion_sql = "INSERT INTO productos (nombre, precio) VALUES ('$nombre', '$precio')";
|
||||
|
||||
$resultado = mysqli_query($con, $insercion_sql);
|
||||
if (!$resultado) {
|
||||
$mensaje = "Error al crear al producto.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_productos.php?mensaje=" . $mensaje_codificado);
|
||||
exit();
|
||||
} else {
|
||||
$mensaje = "Producto creado correctamente.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_productos.php?mensaje=" . $mensaje_codificado);
|
||||
exit();
|
||||
}
|
||||
// Liberar el resultado
|
||||
mysqli_free_result($resultado);
|
||||
// Cerrar la conexión
|
||||
mysqli_close($con);
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
// Verificar si se ha enviado el formulario
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
|
||||
// Recuperar los datos del formulario
|
||||
$nombre = $_POST["nombre"];
|
||||
$correo = $_POST["correo"];
|
||||
$direccion = $_POST["direccion"];
|
||||
$nombre_usuario = $_POST["nombre_usuario"];
|
||||
$contrasena = $_POST["contrasena"];
|
||||
|
||||
// Desactivar los informes de errores de MySQLi
|
||||
mysqli_report(MYSQLI_REPORT_OFF);
|
||||
|
||||
// Verificar si el correo electrónico ya está en la base de datos
|
||||
$consulta_correo = "SELECT * FROM clientes WHERE correo_electronico = '$correo'";
|
||||
$resultado_correo = mysqli_query($con, $consulta_correo);
|
||||
|
||||
if (mysqli_num_rows($resultado_correo) > 0 ) {
|
||||
$mensaje ="El correo electrónico ya está registrado.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
} else {
|
||||
// Insertar el nuevo cliente en la tabla Clientes
|
||||
$insercion_cliente = "INSERT INTO clientes (nombre, correo_electronico, direccion) VALUES ('$nombre', '$correo', '$direccion')";
|
||||
if (mysqli_query($con, $insercion_cliente)) {
|
||||
// Insertar el nuevo usuario en la tabla Usuarios
|
||||
$hash_contrasena = password_hash($contrasena, PASSWORD_DEFAULT); // Encriptar la contraseña
|
||||
$insercion_usuario = "INSERT INTO usuarios (nombre_usuario, contraseña, cliente_id, correo_electronico)
|
||||
SELECT '$nombre_usuario', '$hash_contrasena', cliente_id, '$correo'
|
||||
FROM clientes WHERE correo_electronico = '$correo'";
|
||||
|
||||
|
||||
if (mysqli_query($con, $insercion_usuario)) {
|
||||
|
||||
// Redirigir al usuario a la página de realizar pedidos
|
||||
$mensaje = "El usuario ha sido registrado";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
} else {
|
||||
$mensaje ="Error al inscribir al usuario.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
|
||||
$mensaje ="Error al inscribir al cliente.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_clientes.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Liberar el resultado
|
||||
mysqli_free_result($resultado_correo);
|
||||
// Cerrar la conexión
|
||||
mysqli_close($con);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$pedido_id = $_GET['pedido_id'];
|
||||
$estado = $_GET['estado'];
|
||||
|
||||
$sql = "UPDATE pedidos SET estado='$estado' WHERE pedido_id='$pedido_id'";
|
||||
$query = mysqli_query($con, $sql);
|
||||
|
||||
if($query){
|
||||
$mensaje ="Pedido actualizado.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_pedidos.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}else{
|
||||
$mensaje ="Se ha producido un error al actualizar.";
|
||||
$mensaje_codificado = urlencode($mensaje);
|
||||
header("Location: index_pedidos.php?mensaje=".$mensaje_codificado);
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$producto_id = $_GET['producto_id'];
|
||||
|
||||
$sql = "SELECT * FROM productos
|
||||
WHERE producto_id = '$producto_id'";
|
||||
|
||||
$query = mysqli_query($con, $sql);
|
||||
$fila = mysqli_fetch_array($query);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<title>Editar producto</title>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="users-form">
|
||||
<form action="edit_producto.php" method="POST">
|
||||
<input type="hidden" name="producto_id" id="producto_id" value="<?= $fila['producto_id'] ?>" />
|
||||
<label for="nombre">Nombre:</label>
|
||||
<input type="text" name="nombre" id="nombre" value="<?= $fila['nombre'] ?>" required>
|
||||
<br><br>
|
||||
<label for="precio">Precio:</label>
|
||||
<input type="text" name="precio" id="precio" value="<?= $fila['precio'] ?>" required>
|
||||
<br><br>
|
||||
<input type="submit" value="Actualizar">
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
include("connection.php");
|
||||
$con = connection();
|
||||
|
||||
$cliente_id = $_GET['cliente_id'];
|
||||
|
||||
$sql = "SELECT * FROM clientes_usuarios
|
||||
WHERE cliente_id = '$cliente_id'";
|
||||
|
||||
$query = mysqli_query($con, $sql);
|
||||
$fila = mysqli_fetch_array($query);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<title>Editar usuarios</title>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="users-form">
|
||||
<form action="edit_user.php" method="POST">
|
||||
<input type="hidden" name="cliente_id" id="cliente_id" value="<?= $fila['cliente_id'] ?>" />
|
||||
<label for="nombre">Nombre:</label>
|
||||
<input type="text" name="nombre" id="nombre" value="<?= $fila['nombre'] ?>" required>
|
||||
<br><br>
|
||||
<label for="correo">Correo electrónico:</label>
|
||||
<input type="email" name="correo" id="correo" value="<?= $fila['correo_electronico'] ?>" required>
|
||||
<br><br>
|
||||
<label for="direccion">Dirección:</label>
|
||||
<input type="text" name="direccion" id="direccion" value="<?= $fila['direccion'] ?>" required>
|
||||
<br><br>
|
||||
<label for="nombre_usuario">Nombre de usuario:</label>
|
||||
<input type="text" name="nombre_usuario" id="nombre_usuario" value="<?= $fila['nombre_usuario'] ?>" required>
|
||||
<br><br>
|
||||
<label for="contrasena">Contraseña:</label>
|
||||
<input type="password" name="contrasena" id="contrasena" value="<?= $fila['contraseña'] ?>" required>
|
||||
<br><br>
|
||||
|
||||
<input type="submit" value="Actualizar">
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user