SQL
This commit is contained in:
parent
2eb0e06e7b
commit
e0be3772ad
BIN
Practicas/Practicas_SQL/codigo/COMANDOS SQL.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/COMANDOS SQL.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 146 KiB |
83
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DDL.sql
Normal file
83
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DDL.sql
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
|
||||
-- Principales comandos DDL (Data Definition Language): Utilizado para definir estructuras de bases de datos y objetos como tablas, índices, y vistas.
|
||||
|
||||
-- CREATE DATABASE: permite crear una base de datos
|
||||
|
||||
CREATE DATABASE MiBaseDeDatos
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
-- CREATE TABLE: Se utiliza para crear una nueva tabla en la base de datos.
|
||||
|
||||
USE MiBaseDeDatos; -- indicamos que tabla vamos a usar
|
||||
|
||||
CREATE TABLE departamentos (
|
||||
id INT PRIMARY KEY,
|
||||
nombre VARCHAR(50)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE Empleados (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(50),
|
||||
dni VARCHAR(50) UNIQUE,
|
||||
salario DECIMAL(10, 2),
|
||||
fecha_contratacion DATE,
|
||||
departamento_id INT,
|
||||
CHECK (salario < 10000),
|
||||
CONSTRAINT fk_departamento
|
||||
FOREIGN KEY (departamento_id)
|
||||
REFERENCES departamentos(id)
|
||||
);
|
||||
|
||||
-- Restricciones
|
||||
Restricción Descripción
|
||||
NOT NULL Indica que una columna no puede contener un valor NULL
|
||||
UNIQUE Indica que cada fila de la columna debe tener un valor único
|
||||
PRIMARY KEY Combinación entre NOT NULL y UNIQUE. Asegura que una o más columnas tienen una identidad única
|
||||
FOREIGN KEY Asegura la integridad referencial de los datos
|
||||
CHECK Asegura que el valor de una columna cumple con una condición específica
|
||||
DEFAULT Establece un valor por defecto en una columna
|
||||
|
||||
|
||||
|
||||
-- ALTER TABLE: Se utiliza para modificar una tabla existente, agregando, modificando o eliminando columnas.
|
||||
|
||||
ALTER TABLE Empleados
|
||||
ADD COLUMN departamento VARCHAR(50), -- Añade
|
||||
MODIFY COLUMN salario DECIMAL(12, 2), -- Modifica el tipo
|
||||
DROP COLUMN fecha_contratacion, --Elimina
|
||||
RENAME TO Empleados2; -- Renombra la tabla
|
||||
|
||||
|
||||
-- Añadir una restricción
|
||||
|
||||
ALTER TABLE orders -- Tabla sobre la que actuamos
|
||||
ADD CONSTRAINT fk_customerNumber -- Nombre restricción
|
||||
FOREIGN KEY (customerNumber) -- Restricción
|
||||
REFERENCES customers(customerNumber); -- Tabla de la clave primaria
|
||||
|
||||
-- CREATE INDEX: Se utiliza para crear un índice en una tabla para acelerar la búsqueda de registros.
|
||||
CREATE INDEX idx_nombre ON Empleados(nombre);
|
||||
-- DROP INDEX: Se utiliza para eliminar un índice existente de la base de datos.
|
||||
DROP INDEX idx_nombre ON Empleados;
|
||||
|
||||
--CREATE VIEW: Se utiliza para crear una vista, que es una tabla virtual basada en los resultados de una consulta
|
||||
CREATE VIEW VistaEmpleados AS
|
||||
SELECT id, nombre, salario FROM Empleados WHERE departamento = 'Ventas';
|
||||
--DROP VIEW VistaEmpleados; para borrarla
|
||||
|
||||
--CREATE PROCEDURE: Se utiliza para crear un procedimiento almacenado, que es un conjunto de instrucciones SQL que se pueden ejecutar de forma repetida.
|
||||
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE ObtenerPedidosUsuario(usu_id INT )
|
||||
BEGIN
|
||||
SELECT * FROM pedidos WHERE cliente_id = usu_id;
|
||||
END//
|
||||
DELIMITER ;
|
||||
|
||||
--Para ejecutarlo
|
||||
CALL ObtenerPedidosUsuario('ID_DEL_USUARIO');
|
||||
--Para borrarlo
|
||||
DROP PROCEDURE ObtenerPedidosUsuario;
|
||||
78
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML.sql
Normal file
78
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML.sql
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
|
||||
-- Principales comandos DML (Data Manipulation Language) se utilizan para manipular los datos en una base de datos.
|
||||
--SELECT: Se utiliza para recuperar datos de una o más tablas de la base de datos.
|
||||
SELECT columna1, columna2 FROM tabla WHERE condicion;
|
||||
|
||||
--INSERT: Se utiliza para agregar nuevos registros a una tabla.
|
||||
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||
|
||||
--UPDATE: Se utiliza para actualizar registros existentes en una tabla. ¡¡¡¡¡¡¡WHERE!!!!!!!
|
||||
UPDATE tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion;
|
||||
|
||||
--DELETE: Se utiliza para eliminar registros de una tabla.
|
||||
DELETE FROM tabla WHERE condicion;
|
||||
|
||||
--REPLACE: En MySQL, REPLACE es similar a INSERT, pero si hay un registro existente con la misma clave primaria o única, se elimina antes de insertar el nuevo registro. Si no hay conflicto, se comporta igual que INSERT.
|
||||
REPLACE INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||
|
||||
--LOAD DATA INFILE: Se utiliza para cargar datos de un archivo CSV o de texto en una tabla de la base de datos.
|
||||
LOAD DATA INFILE 'archivo.csv' INTO TABLE tabla;
|
||||
|
||||
|
||||
--SELECT
|
||||
--SELECT DISTINCT solo valores diferentes, no repetidos.
|
||||
|
||||
--Operadores WHERE establecer una condición (puede ser múltiple AND OR) y WHERE NOT.
|
||||
|
||||
= Igual
|
||||
<> No igual (en algunas versiones de SQL es !=)
|
||||
> Mayor que
|
||||
< Menor que
|
||||
>= Mayor o igual que
|
||||
<= Menor o igual que
|
||||
BETWEEN Entre un rango de valores
|
||||
LIKE Buscar un patrón
|
||||
IN Especifica múltiples posibles valores para una columna
|
||||
LIMIT establecer un límite de filas
|
||||
|
||||
--LIKE para establecer patrones en combinación con WHERE
|
||||
% Sustituye por cero o más caracteres
|
||||
_ Sustituye por un sólo carácter
|
||||
[caracteres] Establece y crea rangos de caracteres a encontrar
|
||||
[^caracteres] ó [!caracteres] Establece y crea rangos de caracteres a evitar
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM productos
|
||||
WHERE precio BETWEEN 50 AND 100; -- Rango entre 50 y 100
|
||||
|
||||
|
||||
SELECT * FROM Clientes
|
||||
WHERE Ciudad LIKE '%[a-j]' --Que terminen en un rango entre a-j
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM clientes
|
||||
WHERE pais IN ('USA', 'Canadá', 'México'); -- Si coinciden con alguno de los valores
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM clientes
|
||||
WHERE id IN (SELECT cliente_id FROM pedidos WHERE total > 1000); -- Combinando dos SELECT
|
||||
|
||||
SELECT *
|
||||
FROM productos
|
||||
LIMIT 5 OFFSET 5; -- Limitidado a 5 registros y descartando los 5 primeros
|
||||
|
||||
-- LIMIT 10,5 o esta LIMIT 5 OFFSET 10
|
||||
|
||||
|
||||
--ORDER BY (ASC|DESC)
|
||||
--Ordenados según orden ascendente de NombreCliente y descendente de Ciudad
|
||||
SELECT * FROM Clientes
|
||||
ORDER BY NombreCliente DESC
|
||||
|
||||
SELECT * FROM Clientes
|
||||
ORDER BY NombreCliente ASC, Ciudad DESC
|
||||
|
||||
|
||||
192
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML_2.sql
Normal file
192
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML_2.sql
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
|
||||
-- Principales comandos DML (Data Manipulation Language) se utilizan para manipular los datos en una base de datos.
|
||||
--SELECT: Se utiliza para recuperar datos de una o más tablas de la base de datos.
|
||||
SELECT columna1, columna2 FROM tabla WHERE condicion;
|
||||
|
||||
--INSERT: Se utiliza para agregar nuevos registros a una tabla.
|
||||
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||
|
||||
--UPDATE: Se utiliza para actualizar registros existentes en una tabla. ¡¡¡¡¡¡¡WHERE!!!!!!!
|
||||
UPDATE tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion;
|
||||
|
||||
--DELETE: Se utiliza para eliminar registros de una tabla.
|
||||
DELETE FROM tabla WHERE condicion;
|
||||
|
||||
--REPLACE: En MySQL, REPLACE es similar a INSERT, pero si hay un registro existente con la misma clave primaria o única, se elimina antes de insertar el nuevo registro. Si no hay conflicto, se comporta igual que INSERT.
|
||||
REPLACE INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||
|
||||
--LOAD DATA INFILE: Se utiliza para cargar datos de un archivo CSV o de texto en una tabla de la base de datos.
|
||||
LOAD DATA INFILE 'archivo.csv' INTO TABLE tabla;
|
||||
|
||||
|
||||
--SELECT
|
||||
--SELECT DISTINCT solo valores diferentes, no repetidos.
|
||||
|
||||
--Operadores WHERE establecer una condición (puede ser múltiple AND OR) y WHERE NOT.
|
||||
|
||||
= Igual
|
||||
<> No igual (en algunas versiones de SQL es !=)
|
||||
> Mayor que
|
||||
< Menor que
|
||||
>= Mayor o igual que
|
||||
<= Menor o igual que
|
||||
BETWEEN Entre un rango de valores
|
||||
LIKE Buscar un patrón
|
||||
IN Especifica múltiples posibles valores para una columna
|
||||
LIMIT establecer un límite de filas
|
||||
|
||||
--LIKE para establecer patrones en combinación con WHERE
|
||||
% Sustituye por cero o más caracteres por% %es
|
||||
_ Sustituye por un sólo carácter prue_a
|
||||
[caracteres] Establece y crea rangos de caracteres a encontrar
|
||||
[^caracteres] ó [!caracteres] Establece y crea rangos de caracteres a evitar
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM productos
|
||||
WHERE precio BETWEEN 50 AND 100; -- Rango entre 50 y 100
|
||||
|
||||
|
||||
SELECT * FROM Clientes
|
||||
WHERE Ciudad LIKE '%[a-j]' --Que terminen en un rango entre a-j
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM clientes
|
||||
WHERE pais IN ('USA', 'Canadá', 'México'); -- Si coinciden con alguno de los valores
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM clientes
|
||||
WHERE id IN (SELECT cliente_id FROM pedidos WHERE total > 1000); -- Combinando dos SELECT
|
||||
|
||||
SELECT *
|
||||
FROM productos
|
||||
LIMIT 5 OFFSET 5; -- Limitidado a 5 registros y descartando los 5 primeros
|
||||
|
||||
-- LIMIT 10,5 o esta LIMIT 5 OFFSET 10
|
||||
|
||||
|
||||
--ORDER BY (ASC|DESC)
|
||||
--Ordenados según orden ascendente de NombreCliente y descendente de Ciudad
|
||||
SELECT * FROM Clientes
|
||||
ORDER BY NombreCliente DESC;
|
||||
|
||||
SELECT * FROM Clientes
|
||||
ORDER BY NombreCliente ASC, Ciudad DESC;
|
||||
|
||||
-- ***********Más contenido************* --
|
||||
|
||||
--ALIAS: para abreviar nombres de tablas y columnas, o para renombrar columnas.
|
||||
--COLUMNAS
|
||||
SELECT nombre
|
||||
AS nombre_ciudad
|
||||
FROM ciudad;
|
||||
|
||||
--TABLAS
|
||||
SELECT ci.nombre
|
||||
FROM ciudad AS ci;
|
||||
|
||||
--ALIAS sin AS
|
||||
SELECT nombre primer_nombre, apellido
|
||||
FROM empleados;
|
||||
|
||||
--*******************
|
||||
|
||||
--FUNCIONES DE AGREGACIÓN
|
||||
COUNT: Calcula el número de filas en un conjunto de resultados. No cuenta los nulos.
|
||||
SUM: Calcula la suma de los valores en una columna.
|
||||
AVG: Calcula el promedio de los valores en una columna.
|
||||
MAX: Devuelve el valor máximo en una columna.
|
||||
MIN: Devuelve el valor mínimo en una columna.
|
||||
|
||||
| id_empleado | nombre | departamento | salario |
|
||||
|-------------|----------|--------------|---------|
|
||||
| 1 | Juan | Ventas | 3000 |
|
||||
| 2 | María | Ventas | 3500 |
|
||||
| 3 | Pedro | Recursos Hum | 4000 |
|
||||
| 4 | Ana | Finanzas | 3800 |
|
||||
| 5 | José | Ventas | 3200 |
|
||||
|
||||
--COUNT Calcula el número de filas en un conjunto de resultados. No cuenta los nulos.
|
||||
SELECT COUNT(*) AS total_empleados
|
||||
FROM empleados;
|
||||
| total_empleados |
|
||||
|-----------------|
|
||||
| 5 |
|
||||
|
||||
--SUM Calcula la suma de los valores en una columna.
|
||||
SELECT SUM(salario) AS salarios_empleados
|
||||
FROM empleados;
|
||||
| salarios_empleados |
|
||||
|--------------------|
|
||||
| 17500 |
|
||||
|
||||
--AVG Calcula el promedio de los valores en una columna.
|
||||
SELECT AVG(salario) AS salario_promedio
|
||||
FROM empleados;
|
||||
| salario_promedio |
|
||||
|------------------|
|
||||
| 3500 |
|
||||
|
||||
--MAX Devuelve el valor máximo en una columna.
|
||||
SELECT MAX(salario) AS salario_maximo
|
||||
FROM empleados;
|
||||
| salario_maximo |
|
||||
|------------------|
|
||||
| 4000 |
|
||||
|
||||
--MIN Devuelve el valor mínimo en una columna.
|
||||
SELECT MIN(salario) AS salario_minimo
|
||||
FROM empleados;
|
||||
| salario_minimo |
|
||||
|------------------|
|
||||
| 3000 |
|
||||
|
||||
--**************
|
||||
--GROUP BY
|
||||
-- Para agrupar filas que comparten un valor común en una o más columnas y para aplicar funciones de agregación.
|
||||
--Agregación de datos - Salario promedio por departamento:
|
||||
SELECT departamento, AVG(salario) AS salario_promedio
|
||||
FROM empleados
|
||||
GROUP BY departamento;
|
||||
| departamento | salario_promedio |
|
||||
|----------------|------------------|
|
||||
| Ventas | 3233.33 |
|
||||
| Recursos Hum | 4000.00 |
|
||||
| Finanzas | 3800.00 |
|
||||
|
||||
--Agrupación por departamentos
|
||||
SELECT departamento, COUNT(*) AS cantidad_empleados
|
||||
FROM empleados
|
||||
GROUP BY departamento;
|
||||
| departamento | cantidad_empleados |
|
||||
|----------------|--------------------|
|
||||
| Ventas | 3 |
|
||||
| Recursos Hum | 1 |
|
||||
| Finanzas | 1 |
|
||||
|
||||
|
||||
--HAVING filtrar los resultados de una consulta que incluye una cláusula GROUP BY
|
||||
--Filtrado de resultados
|
||||
SELECT departamento, AVG(salario) AS salario_promedio --4
|
||||
FROM empleados --1
|
||||
GROUP BY departamento --2
|
||||
HAVING AVG(salario) > 3500; --3
|
||||
| departamento | salario_promedio |
|
||||
|----------------|------------------|
|
||||
| Recursos Hum | 4000 |
|
||||
| Finanzas | 3800 |
|
||||
|
||||
------------*********ORDEN*********-----------
|
||||
--Orden de escritura Orden de ejecución
|
||||
SELECT FROM
|
||||
DISTINCT JOIN
|
||||
FROM WHERE
|
||||
JOIN GROUP BY
|
||||
WHERE HAVING
|
||||
GROUP BY SELECT
|
||||
HAVING DISTINCT
|
||||
ORDER BY ORDER BY
|
||||
LIMIT OFFSET LIMIT OFFSET
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
|
||||
|
||||
<?php
|
||||
//Pasos básicos para la realización de una consulta SQL a la base de datos desde PHP
|
||||
|
||||
// Configuración de la conexión a la base de datos
|
||||
$nombre_servidor = "localhost";
|
||||
$nombre_usuario = "root";
|
||||
$contraseña = "laquesea";
|
||||
$nombre_base_datos = "laquesea";
|
||||
|
||||
// Establecer la conexión
|
||||
// mysqli_connect() devuelve un identificador de la conexión y si falla devuelve false.
|
||||
$conexion = mysqli_connect($nombre_servidor, $nombre_usuario, $contraseña, $nombre_base_datos);
|
||||
|
||||
// Verificar la conexión
|
||||
if (!$conexion) {
|
||||
//mysqli_conexionect_error() nos da información(una cadena) del error de conexión
|
||||
exit("Error de conexión: " . mysqli_connect_error());
|
||||
}
|
||||
|
||||
// Crear y ejecutar la consulta
|
||||
$insercion_sql = "INSERT INTO productos (nombre, precio) VALUES ('$nombre', '$precio')";
|
||||
|
||||
// mysqli_query() Dos parametros indentificador de conexión y consulta.
|
||||
// Si la consulta es INSERT, UPDATE, DELETE, etc devolverá un valor boleano.
|
||||
$resultado = mysqli_query($conexion, $insercion_sql);
|
||||
|
||||
//var_dump($resultado);
|
||||
// Manejar el error de consulta
|
||||
if (!$resultado) {
|
||||
exit("Error al ejecutar la inserción: " . mysqli_error($conexion));
|
||||
}else {
|
||||
echo "<p>La inserción ha sido realizada</p>";
|
||||
}
|
||||
|
||||
// Cerrar la conexión
|
||||
mysqli_close($conexion);
|
||||
?>
|
||||
|
||||
BIN
Practicas/Practicas_SQL/codigo/db-relaciontabla.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/db-relaciontabla.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 103 KiB |
BIN
Practicas/Practicas_SQL/codigo/mapaconceptual_SQL.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/mapaconceptual_SQL.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
Alumno 04
|
||||
|
||||
|
||||
- Precio medio de los productos(tienda)
|
||||
SELECT AVG(precio) AS 'Precio medio' FROM `productos`;
|
||||
|
||||
- Precio total de los productos de la tienda disponibles
|
||||
SELECT SUM(precio) AS 'Precio total' FROM `productos`;
|
||||
|
||||
- Productos que están por debajo de 100 Euros
|
||||
SELECT * FROM `productos` WHERE precio<100 ORDER BY precio DESC;
|
||||
|
||||
- Productos que contienen "inalámbrico"
|
||||
SELECT * FROM `productos` WHERE nombre like '%inalámbrico%';
|
||||
|
||||
- Productos cuyo precio termina en 5
|
||||
SELECT * FROM `productos` WHERE precio like '%5';
|
||||
|
||||
- Lista de productos con precio con IVA en una columna
|
||||
SELECT *,(precio*1.21) as 'Precio con iva' FROM `productos`;
|
||||
|
||||
- Producto con segundo mayor precio
|
||||
SELECT * FROM `productos` ORDER BY precio DESC LIMIT 1 OFFSET 1;
|
||||
58
Practicas/Practicas_SQL/ejercicios/tienda/estilo.css
Normal file
58
Practicas/Practicas_SQL/ejercicios/tienda/estilo.css
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* Estilos generales */
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f4f4f4;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
form {
|
||||
background-color: #fff;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
p {
|
||||
background-color: #fff;
|
||||
padding: 20px;
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
/* Estilos para etiquetas y campos de entrada */
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="email"],
|
||||
input[type="password"] {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
padding: 15px 20px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="submit"]:hover {
|
||||
background-color: #45a049;
|
||||
}
|
||||
|
||||
11
Practicas/Practicas_SQL/ejercicios/tienda/productos.csv
Normal file
11
Practicas/Practicas_SQL/ejercicios/tienda/productos.csv
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
1,Destornillador electrico,19.95
|
||||
2,Teléfono móvil,299.94
|
||||
3,Tablet,199.99
|
||||
4,Ordenador portátil,799.85
|
||||
5,Smartwatch,149.25
|
||||
6,Cámara digital,249.99
|
||||
7,Auriculares inalámbricos,99.50
|
||||
8,Altavoz Bluetooth,78.00
|
||||
9,Cargador USB,19.45
|
||||
10,Teclado inalámbrico,49.35
|
||||
11,Ratón óptico,29.75
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="estilo.css">
|
||||
<title>Regsitro Productos</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<form action="" method="POST">
|
||||
<label for="nombre">Nombre producto:</label><br>
|
||||
<input type="text" id="nombre" name="nombre" required><br><br>
|
||||
|
||||
<label for="precio">Precio Producto:</label><br>
|
||||
<input type="text" id="precio" name="precio" required><br><br>
|
||||
|
||||
<input type="submit" value="Enviar">
|
||||
</form>
|
||||
</body>
|
||||
|
||||
|
||||
<?php
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$nombre = $_POST['nombre'];
|
||||
$precio = $_POST['precio'];
|
||||
|
||||
$nombre_servidor = "localhost";
|
||||
$nombre_usuario = "root";
|
||||
$contraseña = "Logomark8";
|
||||
$nombre_base_datos = "tienda";
|
||||
|
||||
$conexion = mysqli_connect($nombre_servidor, $nombre_usuario, $contraseña, $nombre_base_datos);
|
||||
if (!$conexion) {
|
||||
exit("Error de conexión: " . mysqli_connect_error());
|
||||
}
|
||||
$insercion_sql = "INSERT INTO productos (nombre, precio) VALUES ('$nombre', '$precio')";
|
||||
|
||||
$resultado = mysqli_query($conexion, $insercion_sql);
|
||||
if (!$resultado) {
|
||||
exit("Error al ejecutar la inserción: " . mysqli_error($conexion));
|
||||
} else {
|
||||
echo "<p>La inserción ha sido realizada</p>";
|
||||
}
|
||||
mysqli_close($conexion);
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user