Cómo Crear una Aplicación de Monitoreo de Gastos Diarios en PHP: Guía Paso a Paso

En el mundo moderno, gestionar nuestros gastos diarios de manera eficiente es crucial para mantener nuestras finanzas en orden. Crear una aplicación de monitoreo de gastos puede ser una solución perfecta para esta necesidad. En este post, te guiaré paso a paso en cómo crear una aplicación de monitoreo de gastos diarios en PHP, utilizando MySQL para el almacenamiento de datos. Esta guía está diseñada tanto para principiantes como para desarrolladores experimentados que buscan un proyecto práctico.

Video Explicativo

Introducción

Antes de comenzar, asegúrate de tener instalado un servidor local como XAMPP o WAMP, que incluye PHP y MySQL. Además, necesitarás un editor de texto o IDE, como Visual Studio Code o Sublime Text.

Esta aplicación gratuita, hace parte de un compendio de más de 80 aplicaciones PHP grauita de libre distribución, te invito a darle una mirada a mi blog completo, ya que también cuento con más de 70 aplicaciones premium en su gran mayoría a 15 USD que te podrían servir.

Paso 1: Configuración del Entorno

  1. Instala un servidor local: Si aún no tienes uno, descarga e instala XAMPP o WAMP.
  2. Crea la base de datos: Abre phpMyAdmin y crea una nueva base de datos llamada expenses_db. Luego, crea una tabla llamada tbl_expense con los siguientes campos:
    • id (INT, PRIMARY KEY, AUTO_INCREMENT)
    • expense_date (DATE)
    • expense_amount (DECIMAL)

Paso 2: Estructura del Proyecto

Organiza tu proyecto de la siguiente manera:

expenses-app/
├── inc/
│   ├── header.php
│   ├── footer.php
│   └── db.php
├── css/
│   └── styles.css
├── index.php
└── endpoint/
    ├── add-expense.php
    └── delete-expense.php

Paso 3: Archivo de Conexión a la Base de Datos

Crea el archivo db.php dentro de la carpeta inc:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "expenses_db";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>

Paso 4: Encabezado y Pie de Página

Crea los archivos header.php y footer.php para incluir el encabezado y el pie de página en todas las páginas.

header.php:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Aplicación de Monitoreo de Gastos Diarios</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/styles.css">
</head>
<body>

footer.php:

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.min.js"></script>
</body>
</html>

Paso 5: Página Principal

Crea el archivo index.php con el siguiente contenido:

<?php include('inc/header.php'); ?>
<?php include('inc/db.php'); ?>

<div class="container">
    <h1 class="mt-5">Monitoreo de Gastos Diarios</h1>
    <button type="button" class="btn btn-primary mt-3" data-toggle="modal" data-target="#addExpenseModal">Añadir Gasto</button>

    <div class="modal fade" id="addExpenseModal" tabindex="-1" aria-labelledby="addExpenseLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="addExpenseLabel">Añadir Gasto</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Cerrar">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    <form action="endpoint/add-expense.php" method="POST">
                        <div class="form-group">
                            <label for="expenseDate">Fecha del Gasto</label>
                            <input type="date" class="form-control" id="expenseDate" name="expense_date" required>
                        </div>
                        <div class="form-group">
                            <label for="expenseAmount">Monto del Gasto</label>
                            <input type="number" class="form-control" id="expenseAmount" name="expense_amount" required>
                        </div>
                        <button type="submit" class="btn btn-primary">Añadir</button>
                    </form>
                </div>
            </div>
        </div>
    </div>

    <div class="mt-5">
        <h2>Gastos</h2>
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Fecha</th>
                    <th>Monto</th>
                    <th>Acción</th>
                </tr>
            </thead>
            <tbody>
                <?php
                $stmt = $conn->prepare("SELECT * FROM tbl_expense ORDER BY expense_date");
                $stmt->execute();
                $result = $stmt->fetchAll();

                foreach ($result as $row) {
                    echo "<tr>";
                    echo "<td>" . $row['expense_date'] . "</td>";
                    echo "<td>" . $row['expense_amount'] . "</td>";
                    echo '<td><a href="endpoint/delete-expense.php?id=' . $row['id'] . '" class="btn btn-danger btn-sm">Eliminar</a></td>';
                    echo "</tr>";
                }
                ?>
            </tbody>
        </table>
    </div>
</div>

<?php include('inc/footer.php'); ?>

Paso 6: Añadir y Eliminar Gastos

Crea los archivos add-expense.php y delete-expense.php en la carpeta endpoint.

add-expense.php:

<?php
include('../inc/db.php');

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $date = $_POST['expense_date'];
    $amount = $_POST['expense_amount'];

    $stmt = $conn->prepare("INSERT INTO tbl_expense (expense_date, expense_amount) VALUES (:date, :amount)");
    $stmt->bindParam(':date', $date);
    $stmt->bindParam(':amount', $amount);

    if ($stmt->execute()) {
        header("Location: ../index.php");
    } else {
        echo "Error al añadir el gasto.";
    }
}
?>

delete-expense.php:

<?php
include('../inc/db.php');

if (isset($_GET['id'])) {
    $id = $_GET['id'];

    $stmt = $conn->prepare("DELETE FROM tbl_expense WHERE id = :id");
    $stmt->bindParam(':id', $id);

    if ($stmt->execute()) {
        header("Location: ../index.php");
    } else {
        echo "Error al eliminar el gasto.";
    }
}
?>

Paso 7: Estilos CSS

Crea un archivo styles.css en la carpeta css para agregar estilos personalizados:

body {
    background-color: #f8f9fa;
}

.container {
    margin-top: 50px;
}

table {
    margin-top: 20px;
}

.modal-header {
    background-color: #007bff;
    color: #fff;
}

Repositorio de la Aplicación

Sistema de Control de Gastos en PHP y MySQL

Conclusión

¡Y eso es todo! Ahora tienes una aplicación funcional para el monitoreo de gastos diarios. Este proyecto no solo te ayuda a gestionar tus finanzas personales, sino que también mejora tus habilidades en PHP y MySQL. Recuerda siempre probar y mejorar tu código para adaptarlo a tus necesidades específicas. ¡Feliz codificación!

Etiquetado: / /

Transforma tu Peluquería con el Sistema de Gestión de Peluquerías Optimizado

La industria de la belleza, especialmente peluquerías, spas y centros de estética, requiere un manejo administrativo impecable y una experiencia de cliente fluida y satisfactoria. Con la tecnología avanzando a pasos agigantados, los sistemas de gestión han evolucionado para atender no solo las necesidades básicas de gestión, sino también para incorporar funcionalidades que optimicen cada aspecto del servicio al cliente. En este contexto, el Sistema de Gestión de Peluquerías Optimizado se destaca como una solución integral para estos negocios.

Video Explicativo del Sistema de Peluquerías en PHP y MySQL Optimizado

Sistema de Gestión de Peluquerías Optimizado

demo del Sistema de Gestión para Peluquerías Optimizado

En el siguiente enlace puedes acceder a landing page de la aplicación donde el usuario final puede principalmente realizar su reserva he interactuar con la página del sistema de peluquería realizado en PHP y MySQL:

https://demoscweb.com/peluqueria/index.php

Ambiente administrativo de la aplicación:

https://demoscweb.com/peluqueria/admin/index.php

El usuario de acceso es configuroweb y la contraseña es 1234abcd..

Fundamentos del Sistema de Gestión para Peluquerías

Antes de adentrarnos en las mejoras específicas de nuestra versión optimizada, es crucial entender las funcionalidades básicas que cualquier sistema de gestión de peluquerías debería ofrecer. Un sistema competente permite la generación de citas directamente desde su página de aterrizaje, lo cual facilita a los clientes elegir y reservar sus servicios preferidos sin complicaciones.

Además, un buen sistema debe ofrecer un ambiente administrativo robusto donde se puedan registrar clientes, asignarles servicios y generar facturas. La administración de los servicios también es fundamental, ya que estos se deben poder actualizar y gestionar fácilmente para reflejarse en la landing page del negocio.

Finalmente, es esencial que el sistema permita la visualización y edición de facturas, así como la actualización de las páginas de información como ‘Acerca de’ y los datos de contacto de la empresa. Estas funcionalidades básicas forman la columna vertebral de un sistema de gestión efectivo y eficiente.

Introduciendo el Sistema de Gestión de Peluquerías Optimizado

Ahora, con la introducción de nuestro Sistema de Gestión de Peluquerías Optimizado, llevamos estas funcionalidades básicas a un nivel superior. Este sistema no solo cumple con los requisitos estándar sino que también introduce mejoras significativas que transforman la gestión diaria y la interacción con el cliente. Aquí detallamos las mejoras clave que diferencian nuestro sistema del resto:

  1. Frontend Completamente Responsivo: Con un diseño adaptativo, nuestra interfaz garantiza que tanto los clientes como los administradores puedan interactuar con el sistema sin problemas, independientemente del dispositivo utilizado. Esto es crucial en un mundo donde el uso de dispositivos móviles es predominante.
  2. Comunicación Directa a Través de WhatsApp: Integramos un botón de WhatsApp flotante, permitiendo a los clientes comunicarse directamente con el negocio. Esto no solo mejora la accesibilidad sino que también aumenta la tasa de conversión de consultas a citas confirmadas.
  3. Visibilidad de Reservas: El botón de reserva es visible constantemente en la pantalla, asegurando que los clientes puedan reservar servicios en cualquier momento sin necesidad de navegar por el menú.
  4. Optimización de la Gestión Administrativa: Desde la corrección de errores que afectaban la contabilidad de citas rechazadas hasta la mejora en la impresión de facturas y la funcionalidad del cambio de usuario, cada aspecto ha sido meticulosamente mejorado para asegurar que la administración sea tan fluida como la experiencia del usuario.
  5. Mejoras en el Dashboard: La presentación de ventas totales ahora se puede ver por año, lo que facilita la planificación y análisis estratégico para la gestión.

Compra de la Aplicación

Para que la aplicación te funcione tanto en un servidor local como en un hosting, requeriras el archivo SQL que contiene la base de datos, las tablas y la lógica que se requiere para el login y se puedan gestionar los boletos, este sistema tiene un costo de 20 USD y lo puedes comprar por medio del siguiente enlace:

Pago vía Global66

Países válidos Argentina, Chile, Colombia, México y Perú.

Enlace de Pago

Pago vía Mercado Pago

Países válidos Argentina, Brasil, Chile, Colombia, México, Perú y Uruaguay.

link.mercadopago.com.co/configuroweb

Pago por Binance

También me puedes hacer el pago de los 20 USD por medio de Binance con USDT a mi cuenta de Binance:

msevillab@gmail.com

Pago vía Western Union

Favor contactarme vía whatsapp para más información en el siguiente enlace:

Contáctame vía Whatsapp

Otros medios de pago

Si resides en Colombia me puedes hacer el pago por Nequi, por un enlace PSE de Uala o desde fuera por Western Union, cualquier duda me puedes escribir a mi Whatsapp.

Pago por Nequi

Enlace PSE UALA en pesos colombianos

Enlace PSE UALA Colombia

Versión Gratuita del Sistema

También tengo una versión gratuita de la aplicación sin las mejoras que he mencionado anterior y la puedes ver el blog post relacionado en el siguiente enlace:

https://configuroweb.com/software-de-gestion-para-peluquerias-centros-de-estetica-belleza-y-spas/

Más de 150 aplicaciones de Libre Distribución

Te recomiendo que pases por mi blog, tengo más de 150 aplicaciones publicadas, tutoriales y publicaciones que te podrían servir en tu camino ninja desarrollador, puedes acceder a mi apartado gratuito o mi apartado de aplicaciones premium donde seguramente alguna de mis aplicaciones te podrá servir.

Conclusión: Por Qué Elegir Nuestro Sistema Optimizado

Elegir nuestro Sistema de Gestión de Peluquerías Optimizado significa optar por una herramienta que no solo maneja las operaciones diarias con eficacia sino que también mejora la interacción con los clientes y optimiza la gestión administrativa. Para los propietarios de negocios en la industria de la belleza, implementar este sistema representa un paso hacia el futuro, garantizando que su negocio no solo sobreviva sino que prospere en un mercado competitivo.

Implementar este sistema es un paso hacia adelante en la búsqueda de eficiencia, satisfacción del cliente y crecimiento empresarial. Con estas capacidades ampliadas, tu negocio está mejor equipado para enfrentar los desafíos del mañana y aprovechar al máximo las oportunidades de hoy.

Etiquetado: / /

Cómo Implementar un Sistema de Reseñas con PHP y MySQL en un Servidor Local

Introducción

En la era digital, contar con un Sistema de Reseñas en PHP y MySQL confiable en tu sitio web puede marcar una gran diferencia en cómo los clientes perciben tu producto o servicio. Implementar un sistema de reseñas no solo mejora la interacción con los usuarios sino que también aumenta la confianza y la credibilidad de tu marca. Este tutorial te guiará paso a paso en la configuración de un sistema de reseñas utilizando PHP y MySQL en un servidor local.

Video Explicativo

Sistema de Reseñas con PHP y MySQL

Requisitos Previos

Para seguir este tutorial, necesitarás:

  • Un servidor local como XAMPP o WAMP instalado en tu computadora.
  • Conocimientos básicos de PHP y MySQL.
  • Un editor de texto para modificar los archivos de código.

Paso 1: Configuración del Entorno Local

Primero, asegúrate de tener XAMPP o WAMP instalado y funcionando. Si necesitas ayuda para configurar tu servidor local, consulta este post sobre configuración de servidores locales donde detallo el proceso.

Paso 2: Creación de la Base de Datos y Tabla

Accede al panel de control de MySQL y crea una nueva base de datos llamada sistema-resenas. Luego, dentro de esta base, crea una tabla review_table con las siguientes columnas:

  • review_id INT AUTO_INCREMENT PRIMARY KEY
  • user_name VARCHAR(255)
  • user_rating INT
  • user_review TEXT
  • datetime BIGINT

A continuación te comparto el código SQL de la tabla que debes crear:

-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 12-04-2024 a las 09:18:28
-- Versión del servidor: 10.4.28-MariaDB
-- Versión de PHP: 8.2.4

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de datos: `sistema-resenas`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `review_table`
--

CREATE TABLE `review_table` (
  `review_id` int(11) NOT NULL,
  `user_name` varchar(200) NOT NULL,
  `user_rating` int(1) NOT NULL,
  `user_review` text NOT NULL,
  `datetime` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

--
-- Volcado de datos para la tabla `review_table`
--

INSERT INTO `review_table` (`review_id`, `user_name`, `user_rating`, `user_review`, `datetime`) VALUES
(6, 'Pedro', 0, 'El sonido del teléfono funciona mal', 1621935691),
(7, 'Juan', 3, 'La cámara tiene muy buena resolución pero las luces tienden a ser muy oscuras', 1621939888),
(8, 'Sebastián', 1, 'La batería no me gusta, tiene muy bajo rendimiento', 1621940010),
(9, 'Mauricio', 5, 'Es un excelente producto, un gran balance entre calidad y precio.', 1712898694);

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `review_table`
--
ALTER TABLE `review_table`
  ADD PRIMARY KEY (`review_id`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `review_table`
--
ALTER TABLE `review_table`
  MODIFY `review_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Paso 3: Desarrollo del Script PHP

El script submit_rating.php maneja tanto la inserción de nuevas reseñas como la recuperación de las ya existentes. Aquí te explico cómo funciona cada parte:

  • Conexión a la base de datos: Utilizamos PDO para una conexión segura a MySQL.
  • Insertar una reseña: Al recibir datos del formulario, el script inserta la reseña en la base de datos.
  • Recuperar y calcular estadísticas de reseñas: Calcula el promedio de calificaciones y cuenta el número de reseñas de cada tipo de calificación.

Paso 4: Integración con el Frontend

El frontend HTML y JavaScript se comunican con nuestro script PHP a través de solicitudes AJAX, permitiendo a los usuarios enviar y ver reseñas en tiempo real sin recargar la página.

Paso 5: Pruebas y Depuración

Es crucial probar el sistema en diferentes navegadores y dispositivos para asegurarse de que funciona correctamente en todos ellos. Utiliza las herramientas de desarrollo del navegador para revisar las solicitudes AJAX y las respuestas del servidor.

Conclusión

Implementar un sistema de reseñas es una excelente manera de añadir valor a tu sitio web. Este tutorial te proporciona las herramientas básicas para poner en marcha un sistema funcional.

Llamado a la Acción

Si te interesa profundizar más en PHP o necesitas asistencia personalizada, visita mis otros tutoriales sobre PHP o contáctame directamente en WhatsApp para cualquier desarrollo a medida o consulta adicional.

Para acceder al código fuente completo de este sistema de reseñas, visita el repositorio en GitHub.

Etiquetado: /

Cómo Crear y Ejecutar una Aplicación de Tareas CLI en Node.js

Crear una aplicación de línea de comandos (CLI) utilizando Node.js es una excelente manera de automatizar tareas y mejorar la productividad en el desarrollo. Hoy, te guiaré a través del desarrollo de una Aplicación de Tareas CLI en Node.js, una herramienta potente que permite agregar, ver, editar y eliminar tareas de manera eficiente. Esta guía completa cubre desde la instalación de Node.js hasta la implementación en un servidor local, y destaca la utilidad de las librerías yargs y chalk para enriquecer la funcionalidad y la interfaz de usuario de la aplicación.

Instalación de Node.js

Antes de sumergirnos en el desarrollo, es esencial tener Node.js instalado en tu sistema. Node.js es un entorno de ejecución para JavaScript en el servidor, que permite desarrollar aplicaciones de manera rápida y eficiente. Para instalar Node.js, visita su sitio web oficial Node.js, donde encontrarás las versiones recomendadas. Descarga el instalador adecuado para tu sistema operativo y sigue los pasos de instalación.

Configuración del Proyecto

Una vez instalado Node.js, abre una terminal y crea una nueva carpeta para tu proyecto. Navega a esta carpeta y ejecuta npm init -y para iniciar un nuevo proyecto de Node.js. Esto generará un archivo package.json, que gestiona las dependencias y la configuración del proyecto.

Uso de yargs y chalk

Para nuestra Aplicación de Tareas CLI, utilizaremos dos librerías fundamentales:

  • yargs: Facilita la creación de interfaces de línea de comandos y el análisis de argumentos de una manera sencilla. Es ideal para manejar comandos y opciones en aplicaciones CLI.
  • chalk: Permite añadir color a la salida de la terminal, lo que mejora significativamente la legibilidad y la experiencia del usuario.

Instala estas librerías con el siguiente comando:

npm install yargs chalk

Desarrollo de la Aplicación

El corazón de nuestra aplicación es el archivo index.js, donde definimos la lógica para agregar, ver, editar y eliminar tareas. Utilizamos yargs para definir comandos específicos para cada acción, y chalk para hacer que la salida sea más amigable.

Por ejemplo, para agregar una tarea, el usuario ejecutaría:

node index.js agregar --descripcion="Aprender Node.js"

Esta acción llama a la función agregarTarea, que almacena la tarea en un archivo tareas.json. Implementamos funciones similares para ver (verTareas), editar (editarTarea) y eliminar tareas (eliminarTarea), cada una accesible mediante comandos específicos.

Ejecución en un Servidor Local

Para probar la aplicación, simplemente ejecuta los comandos correspondientes en tu terminal. La aplicación corre directamente en tu servidor local, facilitando un entorno de prueba rápido y eficiente.

Repositorio del Sistema

Aplicación de Tarea CLI con Node.js

Profundizando en Node.js

Para aquellos interesados en profundizar más en el desarrollo de aplicaciones en Node.js, recomiendo visitar ConfiguroWeb, un recurso excelente donde se comparten aplicaciones y tutoriales gratuitos sobre Node.js.

Conclusión

El desarrollo de una Aplicación de Tareas CLI en Node.js no solo es un excelente proyecto para entender mejor las capacidades de Node.js, sino también una herramienta útil para cualquier desarrollador. Al integrar librerías como yargs y chalk, la aplicación no solo es funcional sino también agradable de usar. Este proyecto es un punto de partida para explorar más sobre la creación de aplicaciones CLI, y animo a todos a experimentar y expandir sobre esta base.

Recuerda, el mundo de Node.js es vasto y ofrece infinitas posibilidades para los desarrolladores creativos y eficientes. ¡Explora, aprende y construye sin límites!

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: /

Mejora Tu Productividad con Este Software de Lista de Tareas en JavaScript

En la búsqueda constante de herramientas que nos ayuden a mejorar nuestra organización y productividad, un software de lista de tareas se destaca por su simplicidad y eficacia. Desarrollado con tres archivos clave: index.html, script.js y style.css, este software proporciona una solución integral para la gestión de tareas diarias. A continuación, exploramos cómo puede ayudarte a llevar tu productividad al siguiente nivel.

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHPJavascriptPythonNode JS, así como tutoriales sobre desarrollo web.

Vídeo Explicativo

Introducción

Las listas de tareas han demostrado ser herramientas efectivas para mejorar la productividad personal y profesional. Este software, diseñado con la simplicidad en mente, ofrece una forma intuitiva de gestionar tus tareas diarias, permitiéndote concentrarte en lo que realmente importa.

Demo del Sistema

https://configuroweb.github.io/lista-tareas-javascript/

Descripción del Software

El software se compone de tres archivos principales:

  • index.html: estructura la interfaz de usuario, presentando un diseño claro y accesible para añadir, visualizar y gestionar tareas.
  • script.js: contiene la lógica del programa, permitiendo añadir nuevas tareas, marcarlas como completadas y eliminarlas, todo mientras se mantiene una persistencia de datos con localStorage.
  • style.css: define el estilo visual del software, asegurando una experiencia de usuario agradable y una interfaz responsiva.

Cómo Funciona el Software de Lista de Tareas en JavaScript

El funcionamiento del software es intuitivo:

  1. Añadir Nuevas Tareas: Introduce una tarea y añádela a tu lista.
  2. Marcar Tareas como Completadas: Identifica las tareas que has completado.
  3. Eliminar Tareas: Elimina las tareas que ya no son necesarias.

La persistencia de datos mediante localStorage garantiza que tus tareas se mantengan actualizadas entre sesiones de navegación.

Archivos del Software

A continuación te comparto el código de la aplicación, a continuación te muestro el index.html

index.html

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lista de Tareas</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div id="app">
        <h1>Lista de Tareas</h1>
        <input type="text" id="newTask" placeholder="Añadir nueva tarea" />
        <button onclick="addTask()">Añadir</button>
        <div id="tasksList"></div>
    </div>
    <script src="script.js"></script>
</body>
</html>

script.js

let tasks = JSON.parse(localStorage.getItem('tasks')) || [];

function saveTasks() {
    localStorage.setItem('tasks', JSON.stringify(tasks));
}

function addTask() {
    const taskInput = document.getElementById('newTask');
    if (taskInput.value) {
        tasks.push({ id: Date.now(), text: taskInput.value, completed: false });
        taskInput.value = '';
        renderTasks();
        saveTasks();
    }
}

function toggleTaskCompletion(taskId) {
    const taskIndex = tasks.findIndex(task => task.id === taskId);
    if (taskIndex !== -1) {
        tasks[taskIndex].completed = !tasks[taskIndex].completed;
        renderTasks();
        saveTasks();
    }
}

function deleteTask(taskId) {
    tasks = tasks.filter(task => task.id !== taskId);
    renderTasks();
    saveTasks();
}

function renderTasks() {
    const tasksList = document.getElementById('tasksList');
    tasksList.innerHTML = '';
    tasks.forEach(task => {
        const taskElement = document.createElement('div');
        taskElement.className = `task-item ${task.completed ? 'completed' : ''}`;
        taskElement.innerHTML = `
            <span>${task.text}</span>
            <div>
                <button onclick="toggleTaskCompletion(${task.id})">${task.completed ? 'Desmarcar' : 'Completar'}</button>
                <button onclick="deleteTask(${task.id})">Eliminar</button>
            </div>
        `;
        tasksList.appendChild(taskElement);
    });
}

document.addEventListener('DOMContentLoaded', function() {
    renderTasks();

    const taskInput = document.getElementById('newTask');
    taskInput.addEventListener('keypress', function(event) {
        if (event.key === 'Enter') {
            addTask();
        }
    });
});

style.css

body {
    font-family: Arial, sans-serif;
    display: flex;
    justify-content: center;
    padding-top: 50px;
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

#app {
    width: 90%;
    max-width: 500px;
    margin: auto;
    padding: 20px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
}

input, button {
    width: 100%;
    padding: 10px;
    margin: 5px 0;
    box-sizing: border-box;
}

button {
    cursor: pointer;
    background-color: #007bff;
    color: white;
    border: none;
}

button:hover {
    background-color: #0056b3;
}

.task-item {
    margin: 10px 0;
    padding: 10px;
    background-color: #f9f9f9;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-radius: 5px;
}

.task-item.completed {
    text-decoration: line-through;
    background-color: #e9ecef;
}

@media (max-width: 768px) {
    body {
        padding-top: 20px;
    }
}

Beneficios de Usar Este Software

  • Mejora de la Organización Personal: Gestiona tus tareas de manera eficiente.
  • Interfaz Amigable: Fácil de usar, sin necesidad de instrucciones complicadas.
  • Persistencia de Datos: Tus tareas se guardan entre sesiones.
  • Accesibilidad y Responsividad: Gestiona tus tareas en cualquier dispositivo.
  • Simplicidad y Enfoque: Concentración en las funcionalidades esenciales.

Repositorio del Proyecto

Lista de tareas en js con web storage

Invitación a Feedback y Comentarios

Te invitamos a probar este software de lista de tareas y compartir tus experiencias y sugerencias con nosotros. Tu feedback es crucial para seguir mejorando esta herramienta y adaptarla a las necesidades de los usuarios.

¡Gracias por leer! Esperamos que este software te sea útil en tu día a día, mejorando tu organización y productividad. No dudes en compartir tus comentarios con nosotros.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: /

Diseñando un Libro de Visitas en PHP y MySQL: Una Guía Detallada

En el desarrollo web, la creación de un espacio donde los visitantes puedan dejar comentarios es una excelente manera de fomentar la interacción. Este tutorial te guiará a través del desarrollo de un Libro de Visitas en PHP y MySQL, cubriendo desde la configuración de la base de datos hasta la implementación de un frontend responsivo y atractivo.

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHPJavascriptPythonNode JS, así como tutoriales sobre desarrollo web.

Video Explicativo

Libro de visitas en PHP

Estructura y Funcionamiento del Proyecto

Nuestro proyecto se organizará de la siguiente manera:

libro-de-visitas/

├── css/
│   └── estilo.css       # Estilos responsivos

├── js/
│   └── scripts.js       # Mejoras de interactividad (opcional)

├── index.php            # Página principal
├── guardar_visita.php   # Procesamiento de entradas

└── .htaccess            # Configuraciones del servidor (opcional)

Desarrollo del Proyecto

  1. Configuración de la Base de Datos: Comenzamos creando una base de datos libro_visitas y una tabla visitas para almacenar los mensajes de los usuarios.
CREATE TABLE visitas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(255) NOT NULL,
    mensaje TEXT NOT NULL,
    fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Backend con PHP:

  • index.php: Este archivo será el corazón de nuestro libro de visitas. Mostrará un formulario para que los visitantes puedan dejar su nombre y mensaje, además de listar todos los mensajes previos.
<?php
// Conexión a la base de datos (reemplazar con tus propios detalles de conexión)
$host = 'localhost';
$dbname = 'libro_visitas';
$user = 'root';
$password = '';
$dsn = "mysql:host=$host;dbname=$dbname;charset=UTF8";

try {
    $pdo = new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Error de conexión: " . $e->getMessage();
    exit;
}

// Recuperar las visitas de la base de datos
$sql = "SELECT nombre, mensaje, DATE_FORMAT(fecha, '%d/%m/%Y %H:%i') AS fecha_formateada FROM visitas ORDER BY fecha DESC";
$visitas = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Libro de Visitas</title>
    <link rel="stylesheet" href="css/estilo.css">
</head>
<body>
    <h1>Libro de Visitas</h1>
    <form action="guardar_visita.php" method="post">
        <input type="text" name="nombre" placeholder="Tu nombre" required>
        <textarea name="mensaje" placeholder="Tu mensaje" required></textarea>
        <button type="submit">Enviar</button>
    </form>
    <h2>Mensajes Anteriores</h2>
    <?php if ($visitas): ?>
        <ul>
            <?php foreach ($visitas as $visita): ?>
                <li>
                    <strong><?= htmlspecialchars($visita['nombre'], ENT_QUOTES, 'UTF-8') ?>:</strong>
                    <?= nl2br(htmlspecialchars($visita['mensaje'], ENT_QUOTES, 'UTF-8')) ?>
                    <em>(<?= $visita['fecha_formateada'] ?>)</em>
                </li>
            <?php endforeach; ?>
        </ul>
    <?php else: ?>
        <p>No hay mensajes aún.</p>
    <?php endif; ?>
</body>
</html>

guardar_visita.php: Procesa la entrada del formulario, insertando los datos en la base de datos.

<?php
// Conexión a la base de datos
$host = 'localhost';
$dbname = 'libro_visitas';
$user = 'root';
$password = '';
$dsn = "mysql:host=$host;dbname=$dbname;charset=UTF8";

try {
    $pdo = new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Error de conexión: " . $e->getMessage();
    exit;
}

// Validar y sanitizar la entrada
$nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_STRING);
$mensaje = filter_input(INPUT_POST, 'mensaje', FILTER_SANITIZE_STRING);

// Verificar que el nombre y el mensaje no estén vacíos
if (empty($nombre) || empty($mensaje)) {
    echo "El nombre y el mensaje son obligatorios.";
    exit;
}

// Preparar la consulta SQL para insertar la visita
$sql = "INSERT INTO visitas (nombre, mensaje, fecha) VALUES (:nombre, :mensaje, NOW())";
$stmt = $pdo->prepare($sql);

// Vincular los parámetros y ejecutar la consulta
$stmt->bindParam(':nombre', $nombre, PDO::PARAM_STR);
$stmt->bindParam(':mensaje', $mensaje, PDO::PARAM_STR);

try {
    $stmt->execute();
    // Redireccionar de vuelta a la página principal
    header('Location: index.php');
} catch (PDOException $e) {
    echo "Error al guardar la visita: " . $e->getMessage();
}

Frontend y Estilos Responsivos:

  • css/estilo.css: Define los estilos del libro de visitas, asegurando que se vea bien en dispositivos móviles y de escritorio.
:root {
    --color-primario: #007bff;
    --color-secundario: #6c757d;
    --color-fondo: #f8f9fa;
    --color-texto: #212529;
}

/* Restablecer algunos estilos por defecto y establecer estilos base */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background-color: var(--color-fondo);
    color: var(--color-texto);
    line-height: 1.6;
    padding: 20px;
}

container {
    max-width: 800px;
    margin: auto;
    overflow: hidden;
    padding: 0 20px;
}

header {
    background: var(--color-primario);
    color: #fff;
    padding-top: 30px;
    min-height: 70px;
    border-bottom: 3px solid #darker(var(--color-primario), 10%);
}

header h1 {
    text-align: center;
}

form {
    margin-top: 20px;
    background: #fff;
    padding: 20px;
    border-radius: 8px;
}

input[type="text"],
textarea {
    width: 100%;
    padding: 10px;
    margin-top: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

button[type="submit"] {
    display: block;
    width: 100%;
    padding: 10px;
    margin-top: 20px;
    background: var(--color-primario);
    color: #fff;
    border: 0;
    cursor: pointer;
    border-radius: 5px;
}

button[type="submit"]:hover {
    background: #0056b3;
}

ul {
    list-style: none;
    margin-top: 20px;
}

li {
    background: #fff;
    padding: 10px;
    margin-bottom: 10px;
    border-radius: 5px;
}

@media screen and (max-width: 768px) {
    header h1, form, ul {
        width: 90%;
        margin-left: auto;
        margin-right: auto;
    }
}

/* Colores adicionales y efectos hover podrían ser agregados aquí */

js/scripts.js (Opcional): Añade interactividad avanzada, como validaciones del lado del cliente o envíos de formulario asincrónicos.

document.addEventListener('DOMContentLoaded', function() {
    const form = document.querySelector('form');
    form.addEventListener('submit', function(e) {
        let hasError = false;
        // Ejemplo de validación simple
        if (document.querySelector('input[name="nombre"]').value.trim() === '') {
            alert('Por favor, ingresa tu nombre.');
            hasError = true;
        }

        if (document.querySelector('textarea[name="mensaje"]').value.trim() === '') {
            alert('Por favor, ingresa un mensaje.');
            hasError = true;
        }

        if (hasError) {
            e.preventDefault(); // Previene que el formulario se envíe
        }
    });
});
  1. .htaccess (Opcional): Puede contener configuraciones específicas del servidor, como URLs amigables.

Implementación y Funcionalidades Clave

  • Validación y Seguridad: Es fundamental validar las entradas del usuario tanto en el cliente (JavaScript) como en el servidor (PHP) para evitar inyecciones SQL y ataques XSS.
  • Estilos Responsivos: Usamos CSS para garantizar que nuestro libro de visitas se vea bien en cualquier dispositivo, mejorando la experiencia del usuario.

Repositorio del Sistema

Libro de Visitas PHP MySQL

Conclusión

Crear un Libro de Visitas con PHP y MySQL es un proyecto enriquecedor que no solo mejora tus habilidades de desarrollo web sino que también te permite experimentar con aspectos críticos como la seguridad de la aplicación, el diseño responsivo, y la interacción del usuario. A través de este proyecto, no solo has aprendido a trabajar con tecnologías del lado del servidor y del cliente sino también a pensar en cómo estructurar aplicaciones web de manera efectiva y atractiva.

Este tutorial es solo el principio. A medida que tus habilidades crezcan, podrás añadir más características, como autenticación de usuarios, moderación de comentarios, o incluso integración con redes sociales. El mundo del desarrollo web está lleno de posibilidades, y proyectos prácticos como este son el primer paso hacia la maestría en la creación de aplicaciones web dinámicas y atractivas.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: / / /

Desarrolla tu Propio Simulador de Dados en Python: De Código a Web con Flask

Crear un simulador de dados en Python es una excelente manera de aprender programación, especialmente si estás interesado en juegos, estadísticas, o simplemente en la generación aleatoria de números. Este artículo te guiará a través del desarrollo de un simulador de dados utilizando Python, y luego, cómo llevar este simulador al siguiente nivel agregando una interfaz web con Flask, haciendo que tu proyecto no solo sea funcional sino también accesible desde cualquier navegador.

Vídeo explicativo

Simulador de Dados en Python

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHPJavascriptPythonNode JS, así como tutoriales sobre desarrollo web.

Introducción al Simulador de Dados en Python

Un simulador de dados es una herramienta que simula el lanzamiento de uno o más dados. En juegos de mesa, RPGs (juegos de rol), y estudios estadísticos, los dados son un componente esencial. Sin embargo, no siempre tenemos dados físicos a mano, y aquí es donde entra en juego nuestro simulador.

Python, con su sintaxis clara y su poderoso ecosistema, es el lenguaje perfecto para desarrollar un simulador de dados. Aprovechando el módulo random, podemos simular el lanzamiento de un dado de manera sencilla y efectiva.

Paso a Paso: Creando tu Simulador de Dados

1. Preparando el Entorno de Desarrollo: Primero, asegúrate de tener Python instalado en tu sistema. Crea un nuevo archivo Python para tu proyecto, por ejemplo, simulador_dados.py.

2. Escribiendo el Código: Importa el módulo random al inicio de tu archivo. Este módulo contiene funciones que nos permitirán generar números aleatorios, que es la base de nuestro simulador de dados.

import random

A continuación, define una función que simule el lanzamiento de un dado. Utiliza random.randint(1, 6) para generar un número aleatorio entre 1 y 6, imitando un dado estándar.

def lanzar_dado():
    return random.randint(1, 6)

Para interactuar con el usuario, puedes crear un bucle que permita lanzar el dado múltiples veces. El siguiente código solicita al usuario lanzar el dado o salir del programa.

def main():
    while True:
        input("Presiona 'Enter' para lanzar el dado o escribe 'salir' para terminar: ")
        if input.lower() == 'salir':
            break
        resultado = lanzar_dado()
        print(f"Has lanzado un {resultado}!")
    
    print("Gracias por jugar. ¡Hasta la próxima!")

3. Ejecutando tu Simulador: Guarda tu archivo y ejecútalo desde la línea de comandos o tu IDE favorito. Cada vez que presiones ‘Enter’, verás un número aleatorio entre 1 y 6, simulando el lanzamiento de un dado.

Elevando el Proyecto: Añadiendo una Interfaz Web con Flask

Para hacer tu simulador de dados más interactivo y accesible, puedes incorporar una interfaz web utilizando Flask, un microframework de Python que facilita el desarrollo de aplicaciones web.

1. Instalación de Flask: Primero, necesitarás instalar Flask. Puedes hacerlo ejecutando pip install flask en tu terminal.

2. Integrando Flask: Modifica tu proyecto para que Flask maneje las solicitudes web, permitiendo a los usuarios lanzar el dado desde su navegador. A continuación, se muestra un ejemplo básico de cómo integrar Flask en tu simulador de dados:

from flask import Flask, render_template_string, request
import random

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    resultado = None
    if request.method == 'POST':
        resultado = random.randint(1, 6)
    return render_template_string(HTML_TEMPLATE, resultado=resultado)

if __name__ == '__main__':
    app.run(debug=True)

3. Añadiendo Estilos y Responsividad: Para que tu simulador se vea bien en dispositivos móviles y de escritorio, es crucial añadir CSS. Flask permite integrar CSS directamente en tu plantilla HTML o referenciar archivos CSS externos para mejorar la apariencia de tu aplicación.

Repositorio del Sistema

Simulador de dados, Python

Conclusión

Desarrollar un simulador de dados en Python es un proyecto divertido y educativo que no solo te introduce a la programación en Python sino también al desarrollo web con Flask. Al final de este proyecto, tendrás una herramienta útil y la satisfacción de haber creado algo funcional y accesible desde cualquier parte.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: /

Construye Tu Propio Reloj Digital en Javascript: Guía Paso a Paso

Crear un Reloj Digital en Javascript no solo es un proyecto fascinante para quienes se inician en el mundo de la programación web, sino también una excelente oportunidad para entender cómo interactúan el HTML, CSS y Javascript en la creación de componentes dinámicos para nuestros sitios web. En este blogpost, exploraremos cómo desarrollar un reloj digital desde cero, implementando un diseño elegante y funcional que puede ser personalizado según las necesidades de cada uno.

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHPJavascriptPythonNode JS, así como tutoriales de que te podrían servir.

Introducción

Un reloj digital es un elemento básico pero poderoso que puede añadir funcionalidad y estética a cualquier página web. Ya sea que estés construyendo un sitio web desde cero o buscando añadir componentes interactivos a una página existente, un reloj digital en Javascript es una excelente manera de mejorar la experiencia del usuario manteniéndolo informado con la hora actual.

Video Explicativo

Reloj digital en Javascript

Estructura HTML

Todo comienza con la estructura básica de nuestro proyecto. El HTML nos proporciona el esqueleto sobre el cual construiremos nuestro reloj digital. Para este propósito, definimos un elemento <div> con una clase y un ID reloj. Este contenedor servirá como el lugar donde nuestro reloj digital será desplegado.

<!DOCTYPE html>
<!-- Especifica que este documento sigue el estándar HTML5 -->
<html lang="es">
<!-- Define el idioma del contenido de la página como español -->
<head>
    <meta charset="UTF-8">
    <!-- Establece la codificación de caracteres para el documento a UTF-8 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Asegura que la página sea responsiva y se vea bien en todos los dispositivos -->
    <title>Reloj Digital</title>
    <!-- Define el título de la página, que aparece en la pestaña del navegador -->
    <link rel="stylesheet" href="style.css">
    <!-- Vincula el documento de estilos CSS externo, donde se definen los estilos visuales de la página -->
</head>
<body>
    <!-- Contenido principal de la página -->
    <div class="reloj" id="reloj"></div>
    <!-- Un elemento div que muestra el reloj digital. 
         Tiene una clase 'reloj' para aplicarle estilos específicos definidos en CSS,
         y un ID 'reloj' para poder ser referenciado por el código JavaScript. -->
    <script src="script.js"></script>
    <!-- Vincula el documento JavaScript externo que contiene la lógica para actualizar la hora mostrada en el reloj digital -->
</body>
</html>

Estilizando con CSS

Para que nuestro reloj digital no solo funcione bien, sino que también luzca bien, utilizamos CSS. El objetivo es crear un diseño atractivo y legible. Usando Flexbox, podemos centrar nuestro reloj en la página, tanto vertical como horizontalmente. Además, establecemos un color de fondo, color de texto, tamaño de fuente y bordes para darle al reloj un aspecto moderno y minimalista.

/* Estilos generales para el cuerpo de la página */
body {
    display: flex; /* Usa Flexbox para el diseño, permitiendo centrar el contenido fácilmente */
    justify-content: center; /* Centra el contenido horizontalmente */
    align-items: center; /* Centra el contenido verticalmente */
    height: 100vh; /* Ajusta la altura del cuerpo a todo el viewport */
    background-color: #333; /* Establece un color de fondo oscuro para el cuerpo de la página */
    color: #fff; /* Establece el color del texto a blanco */
    font-family: 'Arial', sans-serif; /* Usa Arial como la fuente principal, con una alternativa sans-serif */
    font-size: 60px; /* Ajusta el tamaño del texto a 60px para hacerlo grande y legible */
}

/* Estilos específicos para el elemento que tiene la clase 'reloj' */
.reloj {
    padding: 20px; /* Añade un relleno alrededor del contenido para separarlo del borde */
    border: 2px solid #fff; /* Establece un borde sólido blanco alrededor del elemento */
    border-radius: 20px; /* Redondea las esquinas del borde para suavizar el diseño */
}

La Magia de Javascript

El núcleo funcional de nuestro reloj digital reside en Javascript. Aquí es donde se crea la lógica para obtener la hora actual y actualizar nuestro elemento HTML en tiempo real. Primero, definimos una función actualizarHora que se encarga de obtener la hora, minutos y segundos actuales. Luego, para asegurarnos de que estos números se muestren siempre con dos dígitos, implementamos una función auxiliar agregarCero. Finalmente, usamos setInterval para llamar a actualizarHora cada segundo, manteniendo así nuestro reloj siempre actualizado.

// Define una función para actualizar la hora mostrada en la página web.
function actualizarHora() {
    // Obtiene el elemento HTML con el ID 'reloj'.
    const reloj = document.getElementById('reloj');
    
    // Crea un nuevo objeto Date que contiene la fecha y hora actual.
    const ahora = new Date();
    
    // Obtiene las horas de la fecha actual y agrega un cero al principio si es necesario.
    const horas = agregarCero(ahora.getHours());
    
    // Obtiene los minutos de la fecha actual y agrega un cero al principio si es necesario.
    const minutos = agregarCero(ahora.getMinutes());
    
    // Obtiene los segundos de la fecha actual y agrega un cero al principio si es necesario.
    const segundos = agregarCero(ahora.getSeconds());
    
    // Actualiza el contenido del elemento 'reloj' con la hora actual en formato HH:MM:SS.
    reloj.textContent = `${horas}:${minutos}:${segundos}`;
}

// Define una función para agregar un cero al principio de los números menores a 10.
function agregarCero(numero) {
    // Si el número es menor que 10, devuelve el número con un '0' al principio.
    // De lo contrario, devuelve el número tal cual.
    return numero < 10 ? '0' + numero : numero;
}

// Establece un temporizador que llama a la función `actualizarHora` cada 1000 milisegundos (1 segundo),
// para actualizar la hora mostrada en la página web de manera continua.
setInterval(actualizarHora, 1000);

// Llama a la función `actualizarHora` inmediatamente al cargar la página para mostrar la hora actual sin esperar el primer intervalo de 1 segundo.
actualizarHora();

Repositorio del Sistema

Reloj digital, hecho en Javascript

Demo del Reloj digital Javascript

https://configuroweb.github.io/reloj-digital-javascript/

Conclusiones

Crear un Reloj Digital en Javascript es un proyecto accesible que ofrece una introducción práctica a conceptos fundamentales de la programación web como el DOM, eventos y manipulación de tiempo. Además, proporciona una oportunidad para experimentar con diseños y estilos, haciendo de este un proyecto versátil tanto para novatos como para desarrolladores con experiencia buscando añadir un toque de interactividad y funcionalidad a sus sitios web.

Implementar un reloj digital no solo mejora tus habilidades de programación, sino que también te permite explorar aspectos creativos del diseño web. Esperamos que este tutorial te haya inspirado a integrar un reloj digital en tu próximo proyecto web y a personalizarlo para que se adapte perfectamente a tus necesidades y las de tus usuarios. ¡Feliz codificación!

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: / /

Construyendo un Servidor HTTP Básico en Node.js con Express: Guía Paso a Paso para Principiantes

En el emocionante mundo del desarrollo web, crear un Servidor HTTP Básico en Node.js utilizando Express es un paso crucial para aquellos que buscan construir aplicaciones web robustas y eficientes. Express, un framework minimalista y flexible para Node.js, facilita enormemente la creación de servidores y la gestión de rutas. En este blog post, te guiaré a través del desarrollo paso a paso y la puesta a punto de una aplicación de portafolio básica utilizando Express y Node.js, basándome en el archivo server.js y la estructura de proyecto proporcionados.

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHPJavascriptPythonNode JS, así como tutoriales de que te podrían servir.

Video Explicativo

Introducción a Express y Node.js

Express simplifica el proceso de construcción de aplicaciones web y APIs en Node.js. Al ofrecer un conjunto de herramientas y características que permiten manejar solicitudes HTTP y rutas de manera más intuitiva, Express se convierte en el aliado perfecto para desarrolladores que buscan eficiencia y claridad en sus proyectos.

Configuración Inicial del Proyecto

Antes de sumergirnos en el código, asegurémonos de tener instalado Node.js. Luego, crea un nuevo directorio llamado proyecto-portafolio y navega a él en tu terminal. Ejecuta npm init -y para crear un nuevo archivo package.json, el cual almacenará la configuración y las dependencias de nuestro proyecto.

Instalación de Express

Dentro del directorio de tu proyecto, ejecuta npm install express para añadir Express como una dependencia. Esto creará el directorio node_modules donde se almacenan las bibliotecas necesarias para tu proyecto, incluyendo Express.

Estructura del Proyecto

La estructura de tu proyecto es crucial para mantener un desarrollo organizado. Para este proyecto, tienes un directorio src que contiene tu servidor server.js y un directorio views para tus archivos HTML. Además, el directorio public aloja recursos estáticos como CSS, JavaScript, e imágenes, los cuales son esenciales para dar estilo y funcionalidad a tu portafolio.

Desarrollo del Servidor con Express

El corazón de nuestra aplicación es el archivo server.js. Aquí, importamos Express y configuramos nuestro servidor para servir archivos estáticos y manejar rutas específicas para las páginas de inicio y “acerca de”.

  1. Importar Express y Crear la Aplicación: Al inicio de server.js, importamos Express y creamos una instancia de la aplicación:
const express = require('express');
const app = express();

Servir Archivos Estáticos: Usamos express.static para servir nuestros recursos estáticos desde el directorio public. Esto permite que tu aplicación acceda a imágenes, archivos CSS y JavaScript:

app.use(express.static('public'));

Configurar Rutas: Definimos rutas para las páginas de inicio y “acerca de”. Cada ruta utiliza res.sendFile para enviar el archivo HTML correspondiente al cliente:

// Ruta para la página de inicio
app.get('/', (req, res) => {
    res.sendFile(__dirname + '/views/home.html');
});

// Ruta para la página about
app.get('/about', (req, res) => {
    res.sendFile(__dirname + '/views/about.html');
});

Iniciar el Servidor: Finalmente, hacemos que nuestro servidor escuche en el puerto especificado, permitiendo que los usuarios accedan a nuestra aplicación a través de la web:

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Servidor escuchando en el puerto ${PORT}`);
});

Ejecución y Pruebas

Para arrancar tu servidor, ejecuta node src/server.js desde la terminal. Abre tu navegador y visita http://localhost:3000 para ver tu página de inicio, y navega a http://localhost:3000/about para acceder a la página “acerca de”.

Repositorio del sistema de Servidor HTTP en Node.js

Servidor HTTP en Node.js

Conclusión

Felicidades, has construido con éxito un Servidor HTTP Básico en Node.js utilizando Express. Este servidor no solo maneja solicitudes HTTP y sirve archivos estáticos, sino que también establece las bases para aplicaciones web más complejas y dinámicas. A medida que avanzas, puedes explorar más características de Express, como el uso de middleware avanzado, la creación de APIs RESTful, y la integración con bases de datos para enriquecer tus aplicaciones web.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: / /

Crear un Contador de Visitas en PHP: Una Guía Paso a Paso

¿Estás buscando una manera sencilla de añadir un contador de visitas a tu sitio web? En este tutorial, te mostraré cómo implementar un contador de visitas utilizando PHP, una solución perfecta para sitios web con tráfico moderado. Este método es sencillo, ya que utiliza un archivo de texto para almacenar el recuento de visitas. A continuación, te guiaré a través de los pasos necesarios y el código para implementarlo.

Video Explicativo

Sistema Contador de Visitas en PHP

Te recomiendo que revises mi blog entero, actualmente tengo más de 150 aplicaciones de libre distribución que te podrían servir, aplicaciones en PHP, Javascript, Python, Node JS, así como tutoriales de que te podrían servir.

Configuración Básica del Proyecto

  • Lenguaje: PHP
  • Tipo de Proyecto: Desarrollo Web
  • Estilo de Comentarios: Descriptivo
  • Estructura de Código: Modular
  • Estrategia de Manejo de Errores: Básica
  • Nivel de Optimización de Rendimiento: Medio

Estructura de Archivos Necesaria

Para este proyecto, necesitarás la siguiente estructura de archivos:

contador_de_visitas/
├── index.php
└── contador.txt

Paso 1: Crear el Archivo contador.txt

El primer paso es crear el archivo contador.txt, que almacenará el número de visitas. Puedes hacer esto manualmente, creando el archivo y escribiendo “0” en él (sin las comillas) como punto de partida.

Paso 2: Escribir el Código PHP en index.php

A continuación, necesitarás colocar el siguiente código PHP en el archivo index.php. Este script es responsable de comprobar y actualizar el número de visitas almacenado en contador.txt.

<?php
// Ruta al archivo que almacena el contador
$archivoContador = "contador.txt";

// Comprobar si el archivo existe y es legible
if (is_readable($archivoContador)) {
    // Leer el valor actual del contador
    $contador = file_get_contents($archivoContador);
    
    // Incrementar el contador
    $contador++;
    
    // Abrir el archivo para escritura
    $fp = fopen($archivoContador, "w");
    
    // Escribir el nuevo valor del contador en el archivo
    fwrite($fp, $contador);
    
    // Cerrar el archivo
    fclose($fp);
    
    // Mostrar el contador de visitas
    echo "Número de visitas: " . $contador;
} else {
    echo "El archivo de contador no existe o no se puede leer.";
}
?>

Este script comienza verificando si el archivo contador.txt existe y es accesible para leer. Si es así, lee el valor actual del contador, lo incrementa en uno, y luego abre el mismo archivo en modo de escritura para actualizar este valor. Finalmente, muestra el número actualizado de visitas.

Repositorio del Sistema Contador de Visitas

¿Por Qué Utilizar PHP para un Contador de Visitas?

PHP es una opción excelente para implementar un contador de visitas debido a su simplicidad y eficiencia para proyectos pequeños a medianos. Al utilizar un archivo de texto como almacenamiento, evitas la necesidad de bases de datos complicadas, lo que hace que este método sea accesible para aquellos con un nivel básico a intermedio en programación web. Además, personalizar este script para adaptarse a las necesidades específicas de tu sitio es bastante sencillo.

Conclusión

Añadir un contador de visitas a tu sitio web puede proporcionar información valiosa sobre el tráfico y el compromiso de los usuarios. Siguiendo los pasos descritos en este tutorial, puedes implementar fácilmente esta funcionalidad con PHP. Es una solución eficaz y de bajo costo para sitios web con tráfico moderado, permitiéndote monitorear la popularidad de tu contenido sin complicaciones.

Recuerda que este tutorial está optimizado para un nivel de tráfico moderado. Para sitios con un alto volumen de tráfico, podrías considerar métodos alternativos que puedan manejar mejor la concurrencia y ofrecer un rendimiento optimizado.

Para desarrollos a medida me puedes contactar en el siguiente enlace de contacto

Etiquetado: /
configuroweb.com
×
Hola de Nuevo
Abrir chat
¿Qué te interesa?
Selecciona los temas de interés sobre
los que deseas recibir noticias: