This commit is contained in:
Marklogo 2024-03-14 13:52:33 +01:00
parent e0be3772ad
commit 3439474297
9 changed files with 507 additions and 3 deletions

View File

@ -0,0 +1,38 @@
<?php
// La función header() permite enviar encabezados HTTP desde el servidor al cliente.
//Para que:
//- Tipo de Contenido (Content-Type): Especificar el tipo de contenido
header('Content-Type: text/html');
//- Redirecciones: Redirigir al usuario a otra página utilizando el encabezado Location.
header('Location: http://www.ejemplo.com/nueva_pagina.php');
//- Redirigir despues de un tiempo - header('Refresh: segundos; url=URL');
header('Refresh: 5; url=http://www.ejemplo.com/otra_pagina.php');
//-Control de Caché: Controlar cómo se almacenan en caché las páginas web.
header('Cache-Control: no-cache, no-store, must-revalidate');
//- Codificación (Content-Encoding): Especificar la codificación del contenido que se está enviando.
header('Content-Type: text/html; charset=utf-8');
//- Descarga de Archivos: Forzar la descarga de archivos adjuntos mediante encabezados específicos.
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="nombre_archivo.pdf"');
//- Control de Cookies: Configurar cookies para ser enviadas al cliente.
header('Set-Cookie: nombre=valor; expires=Fecha; path=Ruta; domain=Dominio', false);
/////Construir una URL que incluya parámetros GET (LOCATION,REFRESH)
$pagina = 'pagina.php';
$id = 123;
$nombre = 'Ejemplo';
$url = $pagina . '?id=' . urlencode($id) . '&nombre=' . urlencode($nombre);
echo $url;
//pagina.php?id=123&nombre=Ejemplo
?>

View File

@ -0,0 +1,80 @@
<?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 = "Logomark8";
$nombre_base_datos = "tienda";
// Desactivar los informes de errores de MySQLi
mysqli_report(MYSQLI_REPORT_OFF);
// 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
$consulta_sql = "SELECT * FROM productos";
// mysqli_query() Dos parametros indentificador de conexión y consulta.
// Si la consulta es SELECT devuelve las filas de datos
// Si la consulta es INSERT, UPDATE, DELETE, etc devolverá un valor boleano.
$resultado = mysqli_query($conexion, $consulta_sql);
//var_dump($resultado);
// Manejar el error de consulta
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexion));
}
// Procesar los resultados
// mysqli_fetch_assoc(): Retorna una fila de resultados como un array asociativo.
var_dump(mysqli_fetch_assoc($resultado));
echo "<br>";
// mysqli_fetch_array(): Retorna una fila de resultados como un array asociativo, numérico, o ambos.
//mysqli_fetch_array(mysqli_result $resultado, int $tipo = MYSQLI_BOTH): array|false
var_dump(mysqli_fetch_array($resultado));
echo "<br>";
// mysqli_fetch_row(): Retorna una fila de resultados como un array numérico.
var_dump(mysqli_fetch_row($resultado));
echo "<br>";
// mysqli_fetch_object(): Retorna una fila de resultados como un objeto.
var_dump(mysqli_fetch_object($resultado));
echo "<br>";
// mysqli_data_seek(): Mueve el puntero interno del resultado a una fila específica.
mysqli_data_seek($resultado,3);
var_dump(mysqli_fetch_assoc($resultado));
echo "<br>";
// mysqli_field_count(): Retorna el número de columnas en el resultado.
echo mysqli_field_count($conexion);
echo "<br>";
// mysqli_num_rows(): Retorna el número de filas en el resultado.
echo mysqli_num_rows($resultado);
echo "<br>";
// mysqli_free_result(): Libera la memoria asociada con el resultado.
// mysqli_free_result($resultado);
// Comprobar que no esta vacio el resultado
if (mysqli_num_rows($resultado) > 0) {
while($fila = mysqli_fetch_assoc($resultado)) {
echo "Campo1: " . $fila["producto_id"]. " - Campo2: " . $fila["nombre"]. "<br>";
}
} else {
echo "No se encontraron resultados";
}
// Cerrar la conexión
mysqli_close($conexion);
?>

View File

@ -1,6 +1,4 @@
<?php
//Pasos básicos para la realización de una consulta SQL a la base de datos desde PHP
@ -10,6 +8,9 @@ $nombre_usuario = "root";
$contraseña = "laquesea";
$nombre_base_datos = "laquesea";
// Desactivar los informes de errores de MySQLi
mysqli_report(MYSQLI_REPORT_OFF);
// 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);

View File

@ -0,0 +1,7 @@
INSERT INTO Usuarios (nombre_usuario, contrasena, cliente_id, correo_electronico)
VALUES '$nombre_usuario', '$hash_contrasena', (SELECT cliente_id FROM Clientes WHERE correo_electronico = '$correo'), '$correo'
INSERT INTO Usuarios (nombre_usuario, contrasena, cliente_id, correo_electronico)
SELECT '$nombre_usuario', '$hash_contrasena', cliente_id, '$correo'
FROM Clientes WHERE correo_electronico = '$correo'

View File

@ -0,0 +1,102 @@
<!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>Listado Productos</title>
</head>
<body>
<form action="" method="post">
<label for="fechaIni">Fecha 1:</label>
<input type="date" id="fechaIni" name="fechaIni" value="1970-01-01" required><br><br>
<label for="fechaFin">Fecha 2:</label>
<input type="date" id="fechaFin" name="fechaFin" value="<?php echo date('Y-m-d', strtotime('+1 day')); ?>" required><br><br>
<label for="precioMin">Precio minimo:</label>
<input type="text" id="precioMin" name="precioMin" value=0 required><br><br>
<label for="precioMax">Precio maximo:</label>
<input type="text" id="precioMax" name="precioMax" value=1000000 required><br><br>
<label for="nombre">Nombre producto:</label>
<input type="text" id="nombre" name="nombre"><br><br>
<label for="id">Id producto:</label>
<input type="text" id="id" name="id"><br><br>
<input type="submit" value="Enviar">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$fechaIni = $_POST['fechaIni'];
$fechaFin = date('Y-m-d', strtotime($_POST['fechaFin'])) . ' 23:59:59';
$precioMin = $_POST['precioMin'];
$precioMax = $_POST['precioMax'];
$nombre = empty($_POST['nombre']) ? "" : $_POST['nombre'];
$id = $_POST['id'];
$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());
}
$consulta_sql = "SELECT * FROM productos WHERE fecha_alta BETWEEN '$fechaIni' AND '$fechaFin'
AND precio BETWEEN '$precioMin' AND '$precioMax'
AND nombre LIKE '%$nombre%'";
if (!empty($id)) {
$consulta_sql = " $consulta_sql AND producto_id ='$id'";
}
$resultado = mysqli_query($conexion, $consulta_sql);
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexion));
}
echo ' <table border="1">
<thead>
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Precio</th>
<th>Fecha Alta</th>
</tr>
</thead>
<tbody>';
if (mysqli_num_rows($resultado) > 0) {
while ($fila = mysqli_fetch_assoc($resultado)) {
echo "<tr>";
echo "<td>" . $fila["producto_id"] . "</td>";
echo "<td>" . $fila["nombre"] . "</td>";
echo "<td>" . $fila["precio"] . "</td>";
echo "<td>" . date("d/m/Y", strtotime($fila["fecha_alta"])) . "</td>";
echo "</tr>";
}
} else {
echo "<tr><td colspan='2'>No se encontraron resultados</td></tr>";
}
echo '
</tbody>
</table>';
mysqli_free_result($resultado);
mysqli_close($conexion);
}
?>
</body>
</html>

View File

@ -0,0 +1,62 @@
<!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>Registro Clientes</title>
</head>
<body>
<form action="" method="post">
<label for="email">Correo Electronico:</label>
<input type="text" id="email" name="email" required>
<label for="password">Contraseña:</label>
<input type="text" id="password" name="password" required>
<input type="submit" value="Enviar">
</form>
</body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
$password = $_POST['password'];
$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());
}
$consulta_sql = "SELECT * FROM usuarios WHERE correo_electronico = '$email'";
$resultado = mysqli_query($conexion, $consulta_sql);
if ($resultado && mysqli_num_rows($resultado) > 0) {
$usuario = mysqli_fetch_assoc($resultado);
if (password_verify($password, $usuario['contraseña'])) {
echo "Correcto";
session_start();
$_SESSION['email'] = $email;
header("Location: realizar_pedido.php");
exit();
} else {
echo "<p>Contraseña incorrecta. Por favor, intenta de nuevo.</p>";
}
} else {
echo "<p>No se encontró ningún usuario con el correo electrónico proporcionado.</p>";
}
mysqli_close($conexion);
}
?>
</html>

View File

@ -0,0 +1,97 @@
<!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>Modificador Productos</title>
</head>
<body>
<form action="" method="post">
<label for="id">Id producto:</label>
<input type="text" id="id" name="id"><br><br>
<input type="submit" value="Enviar">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['id']) && !isset($_POST['nombre'], $_POST['precio'])) {
$id = $_POST['id'];
$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());
}
$consulta_sql = "SELECT * FROM productos WHERE producto_id ='$id'";
$resultado = mysqli_query($conexion, $consulta_sql);
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexion));
}
if (mysqli_num_rows($resultado) > 0) {
$fila = mysqli_fetch_assoc($resultado);
$nombre_old = $fila["nombre"];
$precio_old = $fila["precio"];
?>
<form action="" method="post">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" value="<?php echo $nombre_old; ?>"><br><br>
<label for="precio">Precio:</label>
<input type="text" id="precio" name="precio" value="<?php echo $precio_old; ?>"><br><br>
<input hidden type="text" id="id" name="id" value="<?php echo $id; ?>">
<input type="submit" value="Actualizar">
</form>
<?php
mysqli_free_result($resultado);
} else {
echo "<p>No se ha encontrado ningun registro</p>";
}
mysqli_close($conexion);
}
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['nombre'], $_POST['precio'], $_POST['id'])) {
$nombre = $_POST['nombre'];
$precio = $_POST['precio'];
$id = $_POST['id'];
unset($_POST);
$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());
}
$actualizacion_sql = "UPDATE productos SET nombre='$nombre', precio='$precio' WHERE producto_id ='$id'";
$resultado_actualizacion = mysqli_query($conexion, $actualizacion_sql);
if (!$resultado_actualizacion) {
exit("Error al actualizar el registro: " . mysqli_error($conexion));
} else {
echo "<p>¡Registro actualizado correctamente!</p>";
}
mysqli_close($conexion);
}
?>
</body>
</html>

View File

@ -0,0 +1,116 @@
<!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>Registro Clientes</title>
</head>
<body>
<form action="" method="post">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" required>
<label for="email">Correo Electronico:</label>
<input type="text" id="email" name="email" required>
<label for="direccion">Direccion:</label>
<input type="text" id="direccion" name="direccion" required>
<label for="username">Nombre de Usuario:</label>
<input type="text" id="username" name="username" required>
<label for="password">Contraseña:</label>
<input type="text" id="password" name="password" required>
<input type="submit" value="Enviar">
</form>
</body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$direccion = $_POST['direccion'];
$username = $_POST['username'];
$password_raw = $_POST['password'];
$password = password_hash($password_raw, PASSWORD_DEFAULT);
$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());
}
if (getUserByEmail($email, $conexion) === true) {
echo "<p> Ya existe un cliente con ese correo </p>";
exit();
}
if (saveCliente($nombre, $email, $direccion, $conexion) === false) {
echo "<p> Ocurrio un problema al almacenar el registro de Cliente </p>";
exit();
} else {
if (saveUser($username, $email, $password, $conexion) === false) {
echo "<p> Ocurrio un problema al almacenar el registro de Cliente </p>";
exit();
} else {
echo "<p>El cliente ha sido registrado correctamente </p>";
$mensaje = "Puedes loguearte, ya estás registrado";
$mensaje_codificado = urlencode($mensaje);
header("Location: login.php?mensaje=".$mensaje_codificado);
exit;
}
}
mysqli_close($conexion);
}
function getUserByEmail($email, $conexionSql)
{
$consulta_sql = "SELECT * FROM clientes WHERE correo_electronico = '$email'";
$resultado = mysqli_query($conexionSql, $consulta_sql);
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexionSql));
}
return mysqli_num_rows($resultado) > 0 ? true : false;
}
function saveCliente($nombre, $email, $direccion, $conexionSql)
{
$insercion_sql = "INSERT INTO clientes (nombre, correo_electronico, direccion) VALUES ('$nombre', '$email', '$direccion')";
$resultado = mysqli_query($conexionSql, $insercion_sql);
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexionSql));
}
return $resultado;
}
function saveUser($username, $email, $password, $conexionSql)
{
// $insercion_sql = "INSERT INTO usuarios (nombre_usuario, contraseña, cliente_id, correo_electronico)
// VALUES ('$username', '$password', (SELECT cliente_id FROM clientes WHERE correo_electronico = '$email'),'$email')";
$insercion_sql = "INSERT INTO usuarios (nombre_usuario, contraseña, cliente_id, correo_electronico)
SELECT '$username', '$password', cliente_id, '$email' FROM clientes WHERE correo_electronico = '$email'";
$resultado = mysqli_query($conexionSql, $insercion_sql);
if (!$resultado) {
exit("Error al ejecutar la consulta: " . mysqli_error($conexionSql));
}
return $resultado;
}
?>
</html>

View File

@ -31,6 +31,8 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$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());
@ -46,7 +48,6 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
mysqli_close($conexion);
}
?>
</html>