Este Sistema Buscador de Gifs en PHP se comunica con el API de Giphy extrae los Gifs según el criterio de búsqueda y los muestra en pantalla, esta es una solución que de Giphy para que directamente puedas mostrar sus imágenes desde tu propio sitio.
Video Explicativo
Esta aplicación es plenamente gratuita y la puedes descargar y reutilizar libremente como las aplicaciones de mi apartado Gratis donde tengo más de 80 aplicaciones que te podrían servir.
Esta aplicación de Gifs consta principalmente de dos archivos que llevan toda la lógica, el archivo index.php y el archivo script.js. En adición el look and feel de la página se lleva con Pico CSS un framework minimalista CSS más ligero que Bootstrap.
Comunicación con Giphy
Para poder generar los Gifs es necesario comunicarte efectivamente con el API de Giphy, para esto debes acceder al siguiente enlace:
Te debes dar de alta en Giphy y en el apartado API Explorer podrás generar tu Token, este Token tendrás que agregarlo en el archivo index.php en la línea 51 donde dice “tu_api_key”
Explicación de Archivos Sistema Buscador de Gifs en PHP
Por la sencillez de la aplicación no abarcaré una explicación tan exhaustiva del funcionamiento del software, sin embargo cada script está documentado completamente para entender el flujo de proceso de la aplicación.
Código del archivo index.php
<!DOCTYPE html>
<html lang="es">
<!-- Establece el idioma del documento, importante para la accesibilidad y el SEO. -->
<head>
<meta charset="UTF-8">
<!-- Define la codificación de caracteres para el contenido. -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Asegura una visualización adecuada y una experiencia de usuario óptima en dispositivos móviles. -->
<title>GIFs de Giphy</title>
<!-- Título de la página, se muestra en la pestaña del navegador. -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css">
<!-- Incluye Pico CSS, un framework CSS minimalista, para estilos básicos. -->
<link rel="stylesheet" href="style.css">
<!-- Enlace a la hoja de estilos personalizada para estilos específicos de la página. -->
<link rel="shortcut icon" href="./faviconconfiguroweb.png" type="image/x-icon">
<!-- Favicon personalizado para la pestaña del navegador. -->
</head>
<body>
<!-- Inicio del cuerpo del documento. -->
<!-- Script PHP para verificar si se ha realizado una búsqueda. -->
<?php $searchPerformed = isset($_GET['search']) && !empty($_GET['search']); ?>
<main class="container">
<!-- Contenedor principal para el contenido de la página. -->
<h1>Buscador de GIFs en Giphy</h1>
<!-- Título principal de la página. -->
<!-- Formulario de búsqueda para enviar términos de búsqueda mediante GET. -->
<form action="" method="GET">
<input type="text" name="search" placeholder="Escribe algo divertido..." required>
<!-- Campo de texto para la entrada del usuario. -->
<button type="submit">Buscar</button>
<!-- Botón para enviar el formulario. -->
</form>
<!-- Bloque condicional para mostrar un GIF destacado si no se ha realizado una búsqueda. -->
<?php if (!$searchPerformed) : ?>
<div class="gif-destacado">
<!-- Contenedor para el GIF destacado. -->
<a href="https://configuroweb.com/"><img src="configuroweb.gif" alt="GIF destacado"></a>
<!-- Enlace y imagen del GIF destacado. -->
</div>
<?php endif; ?>
<div class="gif-container">
<?php
if (isset($_GET['search'])) {
$apiKey = 'tu_api_key_aquí';
$search = urlencode($_GET['search']);
$url = "https://api.giphy.com/v1/gifs/search?api_key=$apiKey&q=$search&limit=40";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$data = json_decode($output, true);
if (!empty($data['data'])) {
foreach ($data['data'] as $gif) {
$originalUrl = $gif['images']['original']['url'];
echo "<div class='gif' onclick='openModal(\"" . $gif['images']['fixed_height']['url'] . "\", \"" . $originalUrl . "\")'><img src='" . $gif['images']['fixed_height']['url'] . "' alt='GIF'></div>";
}
} else {
echo "<p>No se encontraron resultados. Intenta con otro término de búsqueda.</p>";
}
}
?>
</div>
</main>
<!-- Modal para visualizar el GIF en detalle. -->
<div id="gifModal" class="modal">
<span id="closeModal" class="close">×</span>
<!-- Botón para cerrar el modal. -->
<img class="modal-content" id="img01">
<!-- Contenido de imagen del modal. -->
<div id="modalInfo">
<!-- Información adicional y enlace de descarga en el modal. -->
...
</div>
</div>
<script src="script.js"></script>
<!-- Enlace al archivo JavaScript para funcionalidades interactivas. -->
</body>
</html>
Código del archivo script.js
// Obtener elementos
var modal = document.getElementById("gifModal");
var modalImg = document.getElementById("img01");
var downloadLink = document.getElementById("downloadBtn"); // Actualizar según el nuevo botón de descarga
var closeModal = document.getElementById("closeModal");
// Función para abrir el modal con el GIF seleccionado
function openModal(imgSrc, downloadSrc) {
modal.style.display = "block";
modalImg.src = imgSrc;
downloadLink.href = downloadSrc; // Aquí se establece la URL de descarga directa
}
// Cerrar el modal al hacer clic en (x)
closeModal.onclick = function() {
modal.style.display = "none";
}
// Cerrar el modal al hacer clic fuera de la imagen
window.onclick = function(event) {
if (event.target === modal) {
modal.style.display = "none";
}
}
Flujo del funcionamiento del Sistema Buscador de Gifs
Flujo del Backend (PHP)
Inicio y Verificación de Búsqueda: Al cargar la página (index.php), el script PHP inicial verifica si el usuario ha enviado una consulta de búsqueda a través del método GET. Esto se hace chequeando si el parámetro search existe y no está vacío.
Formulario de Búsqueda: El usuario ingresa un término de búsqueda en el formulario y lo envía. El formulario utiliza el método GET, lo que significa que la búsqueda se agrega a la URL como un parámetro de consulta (?search=termino).
Procesamiento de Búsqueda:
Si se ha realizado una búsqueda, el script PHP realiza una llamada a la API de Giphy utilizando curl, enviando el término de búsqueda.
La API responde con un conjunto de datos JSON que incluye información sobre los GIFs encontrados.
Este JSON se decodifica y se procesa para mostrar cada GIF en la página. Para cada GIF, se genera un elemento HTML que incluye una imagen (thumbnail) y un evento onclick que llama a la función openModal con la URL del GIF y su URL de descarga como argumentos.
Mostrar GIF Destacado: Si no se ha realizado ninguna búsqueda, se muestra un GIF destacado por defecto. Esta es una funcionalidad condicional que solo se activa si el usuario no ha enviado un término de búsqueda.
Flujo del Frontend (HTML y JavaScript)
Estructura HTML: La página contiene un formulario de búsqueda, un contenedor para mostrar los GIFs buscados o un GIF destacado, y un modal que se usa para visualizar un GIF en tamaño completo y ofrecer un enlace de descarga.
Interacción con JavaScript:
Cuando un usuario hace clic en uno de los GIFs, la función openModal(imgSrc, downloadSrc) se invoca gracias al evento onclick asociado con cada imagen de GIF. Esta función recibe las URLs de la imagen seleccionada y de descarga, las asigna al modal, y luego muestra el modal.
El modal puede ser cerrado haciendo clic en el botón de cierre (closeModal) o haciendo clic fuera del modal (gestionado por el evento window.onclick).
Visualización y Descarga de GIFs:
Dentro del modal, el usuario puede ver el GIF en un tamaño mayor y tiene la opción de descargar el GIF directamente haciendo clic en el enlace de descarga, el cual se actualiza dinámicamente con la URL de descarga del GIF seleccionado.
Este flujo de trabajo integra aspectos del desarrollo web tanto del lado del servidor como del cliente, utilizando PHP para el procesamiento del backend y HTML/JavaScript para la interactividad del frontend. La experiencia del usuario es dinámica y responde a las acciones del usuario, desde la búsqueda hasta la visualización y la descarga de GIFs.
Repositorio del Sistema Buscador de Gifs
Como siempre te recomiento te pegues una pasada por el blog, te garantizo que te gustará y cualquier duda quedo al pendiente, me puedes contactar a mi Whatsapp en el siguiente enlace:
Este Portal de Imágenes Gratuitas en PHP se conecta a la API de Pexels y genera automáticamente todas las imágenes que Pexels tiene en su portal, con esto es posible la carga de sus imágenes desde páginas externas, como este software.
Video Explicativo
Esta aplicación es plenamente gratuita y la puedes descargar y reutilizar libremente como las aplicaciones de mi apartado Gratis donde tengo más de 80 aplicaciones que te podrían servir.
Este software de Imágenes Gratuitas en PHP consta principalmente de 3 archivos que son los que hacen posible su funcionamiento, los archivos son stackAPI.class.php, index.php y script.js, en adición tengo un archivo style.css pero sabemos que este último se encarga de la apariencia de la funcionalidad.
Para comunicarte con el API de Pexels debes inicialmente acceder, darte de alta y generar un token en el siguiente enlace:
El sistema te mostrará una pantalla como la siguiente:
Explicación de Archivos del Portal de Imágenes Gratuitas en PHP
Explicación del Archivo stackAPI.class.php
El archivo stackAPI.class.php define una clase en PHP llamada stackAPI, la cual está diseñada para interactuar con la API de Pexels, un servicio de imágenes de stock. La clase permite realizar solicitudes a la API para obtener imágenes, ya sea a través de una selección curada o mediante búsqueda con palabras clave. A continuación, se explica el código paso a paso:
Constructor de la Clase
__construct(): Este es el método constructor de la clase stackAPI. Se ejecuta automáticamente cada vez que se crea una instancia de la clase. En este método, se asigna una clave de API (apiKey) a la propiedad privada $apiKey de la clase. Esta clave es necesaria para autenticar las solicitudes a la API de Pexels.
Método get_stack
public function get_stack($type = "curated", $qry = []): Este es un método público que se puede llamar desde fuera de la clase. Tiene dos parámetros:
$type: Especifica el tipo de solicitud que se va a realizar a la API. Por defecto, es "curated", lo que indica que se solicitará una selección curada de imágenes. Otro valor común para este parámetro es "search", utilizado para buscar imágenes basadas en palabras clave.
$qry: Un arreglo asociativo que contiene los parámetros de la consulta para la solicitud a la API. Por ejemplo, puede incluir palabras clave para la búsqueda, el número de resultados por página, y el número de la página a solicitar.
Construcción de la URL de la Solicitud:
La URL base para realizar solicitudes a la API de Pexels se construye utilizando el tipo de solicitud ($type), resultando en https://api.pexels.com/v1/{$type}.
Si el arreglo $qry no está vacío, se añaden los parámetros de la consulta a la URL utilizando la función http_build_query, que convierte el arreglo en una cadena de consulta URL codificada.
Inicialización y Configuración de cURL
Se inicializa una sesión cURL utilizando curl_init().
Se configura la URL de la solicitud con curl_setopt($curl, CURLOPT_URL, "{$url}{$http_build}").
Se configura cURL para que retorne el resultado de la solicitud en vez de mostrarlo directamente utilizando curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1).
Se añade un encabezado HTTP para la autenticación, proporcionando la clave de API con curl_setopt($curl, CURLOPT_HTTPHEADER, ["Authorization: {$this->apiKey}"]).
Ejecución de la Solicitud y Manejo de la Respuesta
Se ejecuta la solicitud con curl_exec($curl), y el resultado se almacena en $result.
Se obtiene el código de estado HTTP de la respuesta con curl_getinfo($curl, CURLINFO_HTTP_CODE).
Se cierra la sesión cURL con curl_close($curl).
Retorno de la Respuesta
Se verifica el código de estado HTTP. Si es 200, significa que la solicitud fue exitosa, y el estado se establece como "success". De lo contrario, se establece como "error".
Se devuelve un arreglo asociativo que incluye el estado de la solicitud ("status"), el código de estado HTTP ("status_code"), y el resultado de la solicitud, el cual se decodifica de JSON a un arreglo PHP con json_decode($result, true).
Este diseño permite integrar fácilmente la funcionalidad de la API de Pexels en aplicaciones PHP, facilitando la obtención de imágenes tanto curadas como basadas en búsquedas específicas.
Archivo stackAPI.class.php
El siguiente es el código del archivo stackAPI.class.php
<?php
// Definición de la clase stackAPI para interactuar con la API de Pexels
class stackAPI
{
// Propiedad privada para almacenar la clave de API de Pexels
private $apiKey;
// Constructor de la clase: se ejecuta automáticamente al instanciar la clase
function __construct()
{
// Asignación de la clave de API a la propiedad privada $apiKey
// La clave de API se necesita para autenticar las solicitudes a la API de Pexels
$this->apiKey = "vUlc94hTnRbdYlEN5davrQZTHNlPdAX6S1ARyXlUjZKHKCxyIBwPgIFE";
}
// Método público para obtener imágenes de Pexels, ya sea a través de una selección curada o mediante búsqueda con palabras clave
public function get_stack($type = "curated", $qry = [])
{
// Construcción de la URL base para la solicitud a la API, utilizando el tipo de solicitud especificado
$url = "https://api.pexels.com/v1/{$type}";
// Inicialización de la variable que almacenará los parámetros de la consulta
$http_build = "";
// Si el arreglo $qry no está vacío, se convierte en una cadena de consulta URL codificada
if (!empty($qry))
$http_build = "?" . http_build_query($qry);
// Inicialización de una sesión cURL
$curl = curl_init();
// Configuración de la URL completa (incluyendo parámetros de consulta) para la solicitud cURL
curl_setopt($curl, CURLOPT_URL, "{$url}{$http_build}");
// Configuración de cURL para que retorne el resultado de la solicitud, en lugar de mostrarlo directamente
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Añadiendo el encabezado HTTP necesario para la autenticación, utilizando la clave de API
curl_setopt($curl, CURLOPT_HTTPHEADER, [
"Authorization: {$this->apiKey}"
]);
// Ejecución de la solicitud cURL y almacenamiento del resultado
$result = curl_exec($curl);
// Obtención del código de estado HTTP de la respuesta
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// Cierre de la sesión cURL
curl_close($curl);
// Verificación del código de estado HTTP para determinar el estado de la solicitud
$status = ($httpCode == 200) ? "success" : "error";
// Retorno de un arreglo asociativo con el estado de la solicitud, el código de estado HTTP y el resultado de la solicitud
// El resultado se decodifica de JSON a un arreglo PHP
return [
"status" => $status,
"status_code" => $httpCode,
"result" => json_decode($result, true)
];
}
}
Explicación del Archivo index.php
El archivo index.php es la interfaz principal de tu aplicación web que utiliza la API de Pexels para buscar y mostrar imágenes basadas en palabras clave o mostrar una selección curada de imágenes. Aquí está la explicación detallada de cada sección de tu código:
Inicio del Script PHP
Inclusión de la clase stackAPI: Primero, se incluye el archivo stackAPI.class.php que contiene la clase necesaria para interactuar con la API de Pexels.
Creación de instancia de stackAPI: Se crea una instancia de la clase stackAPI para poder utilizar sus métodos.
Recogida de parámetros GET: Se recogen los parámetros search y page de la URL. Si no se proporcionan, search se establece como una cadena vacía y page como 1.
Búsqueda o selección curada: Dependiendo de si el parámetro search está vacío o no, se llama al método get_stack con el tipo search o curated. Esto determina si se realiza una búsqueda basada en palabras clave o si se muestra una selección curada de imágenes. Se pasan parámetros adicionales como el número de resultados por página (per_page) y el número de página (page).
Estructura HTML
Doctype y lenguaje: Se especifica el doctype HTML5 y el lenguaje de la página como español (lang="es").
Meta tags y título: Se incluyen meta tags para la codificación de caracteres y la compatibilidad con dispositivos móviles, así como el título de la página.
Estilos CSS: Se enlaza un archivo CSS de PicoCSS para el diseño y se incluyen estilos adicionales para el layout específico de la página, como la presentación de imágenes y el modal.
Navegación: Se incluye una barra de navegación con enlaces a YouTube, GitHub y el sitio web ConfiguroWeb.
Contenido Principal
Formulario de búsqueda: Un formulario permite al usuario ingresar palabras clave para la búsqueda de imágenes. Utiliza el método GET para enviar la búsqueda.
Visualización de imágenes: Se muestra una cuadrícula de imágenes. Si la respuesta de la API es exitosa y contiene imágenes, se iteran y muestran en la página.
Paginación: Se incluyen enlaces para navegar entre las páginas de resultados. Se calcula el total de páginas basado en el número total de resultados y el número de resultados por página.
Modal para Imágenes
Estructura del modal: Se crea un modal oculto que se mostrará cuando el usuario haga clic en una imagen. Contiene un botón para cerrar el modal, un espacio para la imagen en tamaño completo, información sobre la imagen y un botón para descargar la imagen.
Script JavaScript
Interactividad del modal: Se agrega un script para manejar la apertura del modal al hacer clic en una imagen, establecer la imagen seleccionada en el modal y permitir la descarga de la imagen. También maneja el cierre del modal.
Este script PHP proporciona una interfaz de usuario para buscar y visualizar imágenes de la API de Pexels, con funciones adicionales como paginación y visualización de imágenes en un modal, todo presentado en un diseño responsive y amigable para el usuario.
Archivo index.php
El siguiente es el código del archivo index.php
<?php
// Incluir la clase stackAPI para interactuar con la API de Pexels.
require_once("./stackAPI.class.php");
// Crear una instancia de la clase stackAPI.
$stacks = new stackAPI();
// Obtener el término de búsqueda desde la URL, si existe, o dejarlo en blanco si no.
$search = $_GET['search'] ?? "";
// Obtener el número de página desde la URL, o usar 1 como predeterminado.
$page = $_GET['page'] ?? 1;
// Si se ha proporcionado un término de búsqueda, buscar imágenes relacionadas.
// De lo contrario, obtener una selección curada de imágenes.
if (!empty($search))
$get_image = $stacks->get_stack('search', ['per_page' => 40, "query" => $search, "page" => $page]);
else
$get_image = $stacks->get_stack('curated', ['per_page' => 40, "page" => $page]);
// Calcular el número total de páginas basado en el total de resultados y el número de resultados por página.
$pages = ceil(($get_image['result']['total_results'] ?? 1) / 40);
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Portal de Imágenes</title>
<link rel="shortcut icon" href="./faviconconfiguroweb.png" type="image/x-icon">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css">
<style>
/* Estilos personalizados para la cuadrícula de imágenes y el modal */
.media-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1rem;
}
.media-item img {
width: 100%;
height: auto;
display: block;
}
.modal {
position: fixed;
z-index: 2;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
position: relative;
margin: 10% auto;
padding: 20px;
width: 80%;
max-width: 700px;
background-color: #fff;
}
.close-button {
position: absolute;
top: 10px;
right: 25px;
color: #000;
font-size: 35px;
font-weight: bold;
cursor: pointer;
}
#downloadButton {
display: block;
margin: 20px auto;
padding: 10px 20px;
cursor: pointer;
}
#scriptMessage {
margin-top: 20px;
/* Espacio por encima del mensaje */
padding: 10px;
background-color: #ffdd57;
/* Fondo amarillo para llamar la atención */
color: #000;
/* Texto oscuro para contraste */
font-weight: bold;
/* Hacer el texto más grueso */
border-radius: 5px;
/* Bordes redondeados para suavizar */
text-align: center;
/* Centrar el texto */
}
#scriptMessage a {
color: #000;
/* Color del enlace */
text-decoration: underline;
/* Subrayar para destacar que es un enlace */
}
</style>
</head>
<body>
<!-- Navegación del sitio. -->
<nav class="container-fluid">
<ul>
<li><strong>Portal de Imágenes de Pexels</strong></li>
</ul>
<ul>
<li><a href="https://www.youtube.com/channel/UCVnrMbml3wUIuwz-oSaIUnA">Youtube</a></li>
<li><a href="https://github.com/configuroweb">GitHub</a></li>
<li><a href="https://configuroweb.com/" role="button">ConfiguroWeb</a></li>
</ul>
</nav>
<main class="container">
<div class="grid">
<section>
<hgroup>
<h2>Portal de Imágenes ConfiguroWeb</h2>
<h3>Colección de Imágenes Gratuitas</h3>
</hgroup>
<p>Las mejores fotos de stock gratis, imágenes libres de regalías y vídeos compartidos por creadores.</p>
<div id="searchbox-container" class="py-4">
<form action="./" method="get">
<input type="search" name="search" id="search" placeholder="Introduce lo que estés buscando aquí" class="form-control" value="<?= htmlspecialchars($search) ?>">
<button type="submit">Buscar</button>
</form>
</div>
<div class="media-container">
<?php if ($get_image['status'] == 'success' && isset($get_image['result']['photos']) && !empty($get_image['result']['photos'])) : ?>
<?php foreach ($get_image['result']['photos'] as $photo) : ?>
<div class="media-item">
<img src="<?= $photo['src']['medium'] ?>" alt="<?= $photo['alt'] ?>" style="cursor: pointer;">
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<div class="pagination">
<?php if ($page != 1) : ?>
<a href="./?<?= http_build_query(['search' => $search, 'page' => $page - 1]) ?>">Anterior</a>
<?php endif; ?>
<span><?= "{$page}/{$pages}" ?></span>
<?php if ($page < $pages) : ?>
<a href="./?<?= http_build_query(['search' => $search, 'page' => $page + 1]) ?>">Siguiente</a>
<?php endif; ?>
</div>
</section>
</div>
</main>
<div id="imageModal" class="modal" style="display:none;">
<div class="modal-content">
<span class="close-button">×</span>
<img id="modalImage" src="" alt="Imagen en Tamaño Completo">
<p id="imageInfo"><span id="imageAuthor"></span></p>
<!-- Nuevo mensaje aquí -->
<div id="scriptMessage">
Este script es uno de los más de 150 códigos que tengo en mi página web <a href="https://configuroweb.com" target="_blank">configuroweb.com</a>
</div>
<button id="downloadButton">Descargar Imagen</button>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.media-item img').forEach(item => {
item.addEventListener('click', function() {
const modal = document.getElementById('imageModal');
const modalImg = document.getElementById('modalImage');
const downloadBtn = document.getElementById('downloadButton');
modal.style.display = "block";
modalImg.src = this.src; // Establece la imagen seleccionada en el modal
downloadBtn.onclick = function() { // Función de descarga
const a = document.createElement('a');
a.href = modalImg.src;
a.download = 'Descarga.jpg'; // Nombre del archivo de descarga
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
});
});
// Cerrar el modal
document.querySelector('.close-button').addEventListener('click', function() {
document.getElementById('imageModal').style.display = "none";
});
});
</script>
</body>
</html>
Explicación del Archivo script.js
El código script.js proporciona funcionalidades interactivas para una página web que muestra imágenes. Se divide en varias partes, cada una con su propósito específico para mejorar la experiencia del usuario. Vamos a desglosarlo:
Función download_img
Esta función asincrónica se encarga de descargar imágenes.
Acepta dos parámetros: $url (la URL de la imagen a descargar) y $fname (el nombre de archivo deseado para la descarga, que es opcional).
Utiliza fetch para obtener la imagen desde la URL proporcionada, luego convierte la respuesta en un blob.
Crea un enlace temporal (<a> tag) con un href que apunta a una URL creada a partir del blob, y simula un clic en este enlace para iniciar la descarga.
Bloque $(document).ready
Este bloque se ejecuta una vez que el DOM está completamente cargado.
Establece un controlador de eventos para cuando se hace clic en elementos con la clase .media-item.
Al hacer clic, se muestra un modal con la imagen seleccionada en tamaño grande, el nombre del fotógrafo y enlaces de descarga para diferentes tamaños de la imagen.
Los enlaces de descarga invocan la función download_img al ser clickeados, evitando el comportamiento predeterminado y descargando la imagen en el tamaño seleccionado.
Evento ‘keypress’ en el campo de búsqueda
Se añade un controlador para el evento keypress en el elemento de búsqueda.
Si se presiona la tecla Enter mientras se está en el campo de búsqueda, se actualiza la URL de la página con el valor de búsqueda introducido, permitiendo así filtrar las imágenes mostradas según el término de búsqueda.
Evento ‘DOMContentLoaded’
Este bloque agrega controladores de eventos a todas las imágenes dentro de elementos con la clase .media-item una vez que el contenido del DOM ha sido cargado.
Al hacer clic en una de estas imágenes, se muestra un modal con la imagen en tamaño completo, y se proporciona un botón que permite descargar la imagen haciendo uso de la función download_img.
También se incluye un controlador para el botón de cerrar el modal, que oculta el modal cuando se hace clic en él.
Resumen
Este script mejora la interactividad de la página web al permitir a los usuarios ver detalles de las imágenes, descargarlas en diferentes tamaños y buscar imágenes específicas. Utiliza técnicas de JavaScript modernas como funciones asincrónicas, manipulación del DOM, y controladores de eventos para crear una experiencia de usuario rica y dinámica.
Archivo script.js
El siguiente es el código del archivo script.js
// Función asincrónica para descargar imágenes.
async function download_img($url, $fname=""){
// Obtener la imagen desde la URL proporcionada.
const _image = await fetch($url);
// Convertir la imagen a un blob.
const blob = await _image.blob();
// Crear una URL a partir del blob.
const url = window.URL.createObjectURL(blob);
// Crear un elemento <a> para descargar la imagen.
const link = document.createElement("a");
link.href = url;
link.download = $fname; // Establecer el nombre de archivo para la descarga.
link.click(); // Simular un clic para iniciar la descarga.
}
// Esperar a que el documento esté listo.
$(document).ready(function(){
// Establecer un controlador de clic para los elementos con clase .media-item.
$('.media-item').click(function(e){
e.preventDefault(); // Prevenir el comportamiento predeterminado.
// Referencia al modal de vista previa y extracción de datos necesarios del elemento clickeado.
var prevModal = $('#media-preview');
var key = $(this)[0].dataset.key;
var fname = $(this)[0].dataset.filename;
// Mostrar la imagen seleccionada en el modal.
prevModal.find('#preview-media').html(`
<img src="${__stacked[key]['src']['large']}" />
`);
// Mostrar el nombre del fotógrafo en el modal.
prevModal.find('#phtotographer').text(`${__stacked[key]['photographer']}`);
// Preparar contenedor para enlaces de descarga.
var dlContainer = $('#downloads');
dlContainer.html(''); // Limpiar contenedor previo.
var sizes = {
original: "Original",
large2x: "2x Larger",
large: "Large",
medium: "Medium",
small: "Small",
portrait: "Portrait",
landscape: "Landscape",
tiny: "Tiny"
};
// Generar enlaces de descarga para cada tamaño disponible.
Object.keys(__stacked[key]['src']).forEach(k=>{
var _url = __stacked[key]['src'][k];
var dlItem = $(`<a class="btn btn-sm btn-primary d-block rounded-pill mb-2 download-item" href="${_url}"><strong>${sizes[k]}</strong></a>`);
dlContainer.append(dlItem);
// Establecer evento de clic para descargar la imagen seleccionada.
dlItem.click(function(e){
e.preventDefault(); // Prevenir el comportamiento predeterminado del enlace.
download_img(_url, fname); // Llamar a la función de descarga.
});
});
// Mostrar el modal de vista previa.
prevModal.modal('show');
});
// Controlador de eventos para la entrada de búsqueda.
$('#search').on('keypress', function(e){
if(e.which == 13 || e.keyCode == 13 || e.key == "Enter" ){
var uri = new URL(location.href);
var searchParams = uri.searchParams;
// Eliminar el parámetro de búsqueda existente si lo hay.
if(searchParams.has('search'))
searchParams.delete('search');
// Añadir el valor de búsqueda actual a los parámetros de la URL.
searchParams.set('search', $(this).val());
// Redirigir a la URL actualizada.
location.href = uri.toString();
}
});
});
// Controlador de eventos para mostrar el modal al hacer clic en las imágenes.
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.media-item img').forEach(item => {
item.addEventListener('click', function() {
const modal = document.getElementById('imageModal');
const modalImg = document.getElementById('modalImage');
const downloadBtn = document.getElementById('downloadButton');
modal.style.display = "block";
modalImg.src = this.src; // Establecer la imagen en el modal.
// Establecer el evento de clic para el botón de descarga.
downloadBtn.onclick = function() {
const a = document.createElement('a');
a.href = modalImg.src;
a.download = 'Descarga.jpg'; // Nombre del archivo de descarga.
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
});
});
// Cerrar el modal al hacer clic en el botón de cierre.
document.querySelector('.close-button').addEventListener('click', function() {
document.getElementById('imageModal').style.display = "none";
});
});
Flujo del funcionamiento del Portal de Imágenes Gratuitas en PHP
El flujo del funcionamiento del Portal de Imágenes Gratuitas en PHP, que utiliza la API de Pexels para buscar y mostrar imágenes basadas en palabras clave o mostrar una selección curada de imágenes, se puede describir en los siguientes pasos:
1. Inicialización
La aplicación se carga en el navegador del usuario.
Se incluye el archivo stackAPI.class.php que contiene la lógica para comunicarse con la API de Pexels.
Se crea una instancia de la clase stackAPI.
2. Recepción de Entrada del Usuario
El usuario puede introducir una palabra clave en el campo de búsqueda y enviarla (o simplemente navegar por la página para ver una selección curada de imágenes si no se introduce ninguna búsqueda).
Se recogen los parámetros search (búsqueda) y page (página) de la URL, usando valores predeterminados si no se proporcionan.
3. Búsqueda o Selección Curada
Basado en la presencia de una palabra clave de búsqueda, la aplicación decide si realizar una búsqueda de imágenes relacionadas con esa palabra clave o mostrar una selección curada de imágenes.
Se llama al método get_stack de la instancia de stackAPI, pasando el tipo de solicitud (search para búsqueda o curated para selección curada) y los parámetros necesarios como el número de resultados por página y el número de página actual.
4. Presentación de Resultados
La API de Pexels devuelve un conjunto de imágenes basado en la solicitud.
El HTML generado dinámicamente muestra estas imágenes en la página, utilizando un diseño de cuadrícula o similar.
La paginación se maneja mediante enlaces o botones que permiten al usuario navegar por diferentes páginas de resultados.
5. Interacción con las Imágenes
Cuando un usuario hace clic en una imagen, se puede mostrar un modal o una vista más detallada de esa imagen, posiblemente con opciones para descargar la imagen en diferentes tamaños.
Este comportamiento se gestiona mediante JavaScript, que escucha los eventos de clic en las imágenes y muestra el modal correspondiente.
6. Descarga de Imágenes
Dentro del modal o la vista detallada, los usuarios pueden elegir descargar la imagen. Al seleccionar un tamaño y hacer clic en el enlace de descarga, se invoca una función de JavaScript que maneja la descarga de la imagen directamente al dispositivo del usuario.
7. Búsqueda Directa
El usuario puede realizar búsquedas directas mediante el campo de búsqueda. Al presionar Enter o hacer clic en un botón de búsqueda, la página se actualiza para mostrar las imágenes que coinciden con los términos de búsqueda introducidos.
8. CSS para Estilo Visual
Mientras todo esto sucede, el archivo style.css asegura que la página y sus elementos se muestren con el estilo deseado, creando una experiencia visual coherente y atractiva para el usuario.
9. Flujo Continuo
Los usuarios pueden continuar navegando por diferentes páginas de resultados, realizar nuevas búsquedas, ver detalles de imágenes específicas y descargar imágenes según sea necesario.
Este flujo describe una aplicación web interactiva que no solo permite a los usuarios buscar y visualizar imágenes de alta calidad de manera eficiente sino también interactuar con estas imágenes de maneras útiles, como ver detalles adicionales y descargar imágenes directamente.
Repositorio del Portal de Imágenes Gratuitas
En el siguiente enlace puedes descargar el código y reutilizar la aplicación:
Como siempre te recomiento te pegues una pasada por el blog, te garantizo que te gustará y cualquier duda quedo al pendiente, me puedes contactar a mi Whatsapp en el siguiente enlace:
Este sistema de Tienda Whatsapp con Inteligencia Artificial es una versión aumentada de una aplicación previa llamada Tienda Whatsapp Responsiva esta aplicación previa es bastante ligera tiene una versión con ambiente administrativo y una versión estática con gestión desde archivo json.
Este software tiene en adición una integración con ChatGPT que tiene la facultad de escrapear el json administrativo y hacer referencia a las características de los productos, de su precio y su nombre, también tiene un apartado donde agregar contexto, en este apartado se definen los límites de ChatGPT, por ejemplo en mi aplicación de referencia tengo lo siguiente:
Es una tienda de tenis deportivos de marca nike, solo interactua con dudas de la marca nike, si te piden algo diferente porfa diles que la consulta excede tu alcance y que se límite a consultar funciones de la tienda
De esta manera si se hace referencia a otras marca o temas diferente a los productos de la tienda, el sistema le indicará en sus propias palabras, que no tiene la facultad de contestar de diferente naturaleza a su objetivo principal.
Video Explicativo
Demo del Sistema de Tienda Whatsapp con Inteligencia Artificial
En el siguiente enlace puedes acceder al ambiente administrativo de la aplicación:
El usuario es configuroweb, la contraseña 1234abcd..
Consideraciones importantes sobre la Tienda Whatsapp con Inteligencia Artificial
La primera gran consideración a tener en cuenta es que la aplicación no es gratuita, tengo 3 aplicaciones gratuitas que manejan la integración con ChatGPT con las que además comparto plenamente el código y son las siguientes:
Tengo dos versiones previas sin inteligencia artificial que valen 10 y 20 Dólares respectivamente, más información sobre estas versiones previas en el siguiente enlace:
Costo del Sistema de Tienda Whatsapp con Inteligencia Artificial
La aplicación tiene un costo de 100USD. El pago de la aplicación lo puedes hacer por medio de los canales a continuación:
Pago vía Global66
Países válidos Argentina, Chile, Colombia, México y Perú.
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.
Igual desde este post hay un botón flotante de Whatsapp desde donde me puedes contactar directamente.
Mas de 150 Aplicaciones en mi Blog
Además de esta aplicación cuento con más de 150 aplicaciones en este post, entre aplicaciones de pago y aplicaciones Gratuitas, cuento con más de 80 aplicaciones gratuitas que puede explorar en el siguiente enlace:
Esta Tienda Whatsapp Responsiva hecha en PHP, Javascript, HTML, CSS y Bootstrap le permite al usuario fácilmente gestionar sus productos y orientar a sus clientes al Whatsapp de la Empresa.
Video Explicativo
Funcionamiento de la Tienda Whatsapp
La aplicación es gestionada en sus personalizaciones de un archivo json, que se puede parametrizar plenamente.
Este sistema tiene dos versiones disponibles, una sin panel administrativo donde el desarrollador debe hacer los cambios en el JSON, tal como se explica en el video relacionado y otra versión donde hay un panel administrativo que permite gestionar los productos, cambiar el teléfono de Whatsapp y el nombre de la aplicación de forma dinámica.
Este Software está diseñado con la premisa de Mobile First, fue pensado para ser gestionado sencillamente a través del teléfono y es bastante ligero, está última característica permite que su carga sea rapídisima y que la visita de los usuario sea lo más liviana posible.
Las credenciales de acceso como es habitual son usuario configuroweb contraseña 1234abcd..
Pago de la aplicación Tienda Whatsapp
Actualmente tengo 2 versionnes disponibles de la aplicación una sin ambiente administrativo que se gestiona desde el archivo JSON y otra con ambiente administrativo, tal como se explica en el video relacionado.
La versión estática de la aplicación la que no tiene ambiente administrativo, vale 10 USD y la puedes pagar desde el siguiente enlace:
Pago Versión Aplicación Sin Ambiente Administrativo Valor 10 USD
Este Sistema de Login PHP con Roles de Usuario, redirecciona según el perfil de usuario a una pantalla u otra y al usuario de perfil administrador le permite abrir el la pantalla de usuario básico, pero el usuario básico logueado no puede acceder a la pantalla de administrador.
Esta aplicación y cualquier otra que corra con PHP y MySQL, también te la puedo alojar en Hostinger, tu contratas el dominio con Hostinger también y yo te lo alojo con mi Hosting y te ayudo a administrar la aplicación por 10 USD mensuales.
Si te llega a interesar que te aloje la aplicación puedes consultar en el siguiente enlace de referido y contratar solo el servicio de Dominio y yo te lo puedo alojar y administrar fácilmente desde este punto.
XAMPP es la aplicación encargada de implementar un servidor apache para que funcionen los scripts PHP en un ordenador a nivel local.
Git es el gestor de repositorios más usado del mundo, con el que puedes descargar limpiamente, código de GitHub.
Visual Studio Code, es el editor de código más popular del mundo, que recomiendo ampliamente en prácticamente todas las publicaciones de este blog.
Descarga Aplicación de GitHub
El siguiente es el enlace de descarga de repositorio de GitHub de la aplicación del Sistema de Login PHP con Roles de Usuario:
Configuración del Sistema de Login PHP con Roles de Usuario para su funcionamiento en tu ordenador
Debes instalar las aplicaciones mencionadas, con todos los parámetros por defecto, posterior a este procedimiento, desde Visual Studio Code, debes abrir la siguiente ubicación:
C:\xampp\htdocs
Desde esta ubicación en Visual Studio Code, pulsas View, Terminal. Dentro del Terminal eliges la opción de Git Bash y copias el siguiente código:
Se creará la carpeta roles-login, dentro de la carpeta htdocs. A continuación deber abrir XAMPP en tu ordenador, activar los servicios de Apache y MySQL, y acceder a la siguiente URL, para crear la base de datos roles-login:
http://localhost/phpmyadmin/index.php
Base de Datos del Sistema de Login PHP con Roles de Usuario
Para que la aplicación te funcione correctamente, desde phpmyadmin, debes crear la base de datos con el nombre roles-login, posteriormente debes acceder al apartado SQL y pegar el código que se encuentra en el siguiente enlace:
Este Sistema de Chatbot en PHP y MySQL con ChatGPT, permite conectarse con el API de Open AI sencillamente y viene listo para su uso, solo tienes que reemplazar el token en el archivo script.js en la línea 8 la constante llamada API_KEY.
Esta aplicación es totalmente gratuita, no requiere de base de datos, la puedes correr en versiones PHP posteriores a la 7.4, también funciona perfectamente con las versiones más recientes de PHP.
Video Explicativo
Para utilizar localmente ChatGPT requieres ingresar a la página oficial de OpenAI en el siguiente enlace:
Posterior al alta ya estás en la facultad de crear API Keys, de ChatGPT, solo debes acceder al siguiente enlace y podrás crear tu propia llave para ingresarla en el sistema:
Después de crear tu API Key, solo debes ingresar al sistema en el documento script.js en la línea 8 y pegar tu API_KEY y con eso ya todo estaría listo.
Puesta a punto del Sistema en Chatbot en PHP y MySQL con ChatGPT
Como la aplicación está en PHP necesitarás un servidor Apache que te permita ejecutar código PHP, para esto puedes instalar una distribución de software libre como XAMPP o WampServer, yo normalmente utilizo XAMPP, la ventaja que podría significar utilizar WampServer sobre XAMPP es que WampServer puede trabajar con arquitecturas de 32 bits y versiones previas de PHP.
Descarga de XAMPP
En el siguiente enlace puedes descargar XAMPP directamente de su página oficial
La recomendación es que descargues e instales XAMPP con todos los parámetros por defecto, con esto te será más fácil seguir el paso a paso de las indicaciones del presente tutoriial.
Descarga de GIT
Git es el sistema control de revisiones de código abierto más popular del mundo, con Git vamos a descargar el código de este Chatbot en PHP y MySQL con ChatGPT, la descarga de la aplicación la puedes hacer directamente desde GitHub pulsando en el botón verde que dice Code y luego Download ZIP. Si deseas realizar la descarga directa puedes hacerla desde el siguiente enlace:
Descargar e instalar con todos los parámetros por defecto, te recomiendo que en adición incluyas GIT en la PATH de Windows, ya que esto te permitirá ejecutar comandos GIT en la consola desde cualquier ubicación en la que te encuentres, esta opción te aparece disponible en el proceso de instalación de GIT.
Descarga de Visual Studio Code
Visual Studio Code es mi editor de código preferido y a su vez es el editor de código más popular del mundo, con Visual Studio Code, podrás realizar las tareas de implementación que llegues a necesitar, en enlace de descarga directa es el siguiente:
Puesta a Punto de la aplicación en Chatbot en PHP y MySQL con ChatGPT con XAMPP
Posterior a la descarga he instalación de las aplicaciones solicitadas anteriormente, desde Visual Studio Code, te vas a la siguiente ubicación:
C:\xampp\htdocs
Ya en esta carpeta, dentro de Visual Studio Code, pulsas la opción View y luego Terminal, y en la ventana que te aparece en la parte inferior, escribes el siguiente código y presionas Enter:
Dentro de la carpeta htdocs se creará una nueva carpeta llamada chatbot-chatgpt y allí quedará el proyecto ya ingresado, lo que queda es, desde Visual Studio Code, acceder a esta carpeta desde la opción de Open Folder y acceder a chatbot-chatgpt, de esta manera tendrás los archivos de la aplicación para modificarlos a voluntad.
Consideraciones finales del Sistema en Chatbot en PHP y MySQL con ChatGPT
La versión gratuita de la API Key de ChatGPT es limitada, así que si subes la aplicación a un hosting después de ciertas interacciones el software no funcionará más, puedes utilizar una versión de pago que tendrá más ventajas, para esto te recomiendo que leas la documentación de ChatGPT en el siguiente enlace:
Este Sistema de Gestión de Clínicas Avanzado en PHP y MySQL es una aplicación integral que permite controlar los diferentes apartados que requiere una clínica o un hospital.
Unidades de procesamiento como las gestiones de Médicos, Pacientes, Programar Citas, Recursos Humanos, Actividades Financieras, Generar Prescripciones, Pruebas de Laboratorio, Trabajar con Medicamentos, Farmacia, Reportería, Configuraciones de Correo Electrónico, SMS, Landing Pages, Ajustes de la Página, entre otras opciones.
Este software es una aplicación de mi apartado pro, que cuentan con las mayores prestaciones de las que distribuyo en mi blog, en adición tengo aplicaciones premium que son más modulares más sencillas que te podrían servir para soluciones más específicas si tienes un negocio con esas necesidades específicas o si eres un desarrollador que requiere algo similar para luego modificarlo.
Cabe agregar que también tengo aplicaciones gratuitas que te podrían servir cuento con más de 80 aplicaciones en mi apartado gratuito que puedes descargar con solo navegar en mi sitio y escoger la aplicación que más se acerque a tus necesidades.
Soluciones Similares al Sistema de Gestión de Clínicas Avanzado en PHP y MySQL
Haz llegado al sitio indicado si buscabas variedad. Si requieres soluciones más específicas puedes revisar estos otros sistemás más básicos que te podrían servir:
Dashboard del Sistema de Gestión de Clínicas Avanzado
Desde este primer apartado es fácil entender cuantos médicos, cuantos clientes registrados, cuantas citas, cuantas prescripciones, cuantas historias, cuantos reportes de laboratorio, documentos, cuantos pagos de facturas y un calendario donde se puede ver graficamente las citas ingresadas al sistema.
Apartado de Médicos
En esta sección puedes visualizar la lista de los doctores y la historia del tratamiento de los doctores registrados.
Gestión de Pacientes
Desde este apartado puedes ver la lista de los pacientes registrados, sus pagos realizados, casos de sus incidentes y sus documentos.
Programación de Horarios
En la sección de Programar puedes gestionar los horarios y las vacaciones de los médicos.
Gestión de Citas
La aplicación soporta gestión de citas desde su landing page, pero desde el ambiente administrativo, se puede controlar las citas también, estas citas se pueden editar, eliminar, se puede hacer énfasis en las citas del día de hoy, se pueden gestionar desde un calendario entre otros procesos.
Apartado de Recursos de Recursos Humanos
Este Sistema de Gestión de Clínicas Avanzado en PHP y MySQL tiene un apartado de gestión de recursos humanos, donde se puede agregar los diferentes cargos que necesitaria un hospital o clínica, como una enfermera, un farmaceuta, un laboratorista entre otros.
Actividades Financieras
En este apartado se gestionan los pagos, los gastos, las categorías de gasto, entre otros.
Prescripción
La aplicación soporta las prescripciones que se le realizan a los pacientes y guarda el historial.
Pruebas de laboratorio
Si la clínica o el hospital tiene laboratorio, las pruebas de laboratorio se puede registrar, modelar y gestionar informes directo desde la aplicación.
Medicina
Farmacia
Gestión de Reportería
Gestión de Correo Electrónico
Gestión de SMS
Gestión del Sitio Web
Ajustes Generales
Demo del Sistema de Gestión de Clínicas Avanzado
En el siguiente enlace puedes acceder al área administrativa del Sistema de Gestión de Clínicas Avanzado en PHP y MySQL:
El enlace a continuación es página de muestra, la que ve el usuario final, cabe agregar que esta página es parametrizable en el apartado administrativo:
Costo de la aplicación de Sistema de Gestión de Clínicas Avanzado
La aplicación tiene un costo de 100 USD, se incluye el proceso de implementación en un servidor local o en un hosting, este hosting debe tener cpanel y mínimo una versión de mínimo 7.4 de PHP.
El cliente debe tener disponibilidad de máximo 2 horas para una conexión remota a través de anydesk el siguiente es el botón de pago de la aplicación:
La aplicación tiene un costo de 100USD. El pago de la aplicación lo puedes hacer por medio de los canales a continuación:
Pago vía Global66
Países válidos Argentina, Chile, Colombia, México y Perú.
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.
Este Sistema de Inventario con Reporte a Excel en PHP y MySQL permite generar reportes en Excel de manera sencilla y efectiva, esta aplicación viene por defecto para generar un archivo de nombre inventario-excel.
Video Explicativo
Este script se puede ingresar en cualquier proyecto y con esto poder gestionar sencillamente el proceso de ingresar productos, editarlos, eliminarlos y generar un documento de Excel con estos.
Esta aplicación es gratuita y la puedes descargar y utilizar libremente, implementarle un login o lo que desees, solo sigue el paso a paso del post y podrás utilizar esta aplicación fácilmente.
Este software es uno de los más de 80 aplicaciones gratuitas que tengo en este blog a plena disposición y puedes verlas en el siguiente enlace:
Esta aplicación y cualquier otra que corra con PHP y MySQL, también te la puedo alojar en Hostinger, tu contratas el dominio con Hostinger también y yo te lo alojo con mi Hosting y te ayudo a administrar la aplicación por 10 USD mensuales.
Si te llega a interesar que te aloje la aplicación puedes consultar en el siguiente enlace de referido y contratar solo el servicio de Dominio y yo te lo puedo alojar y administrar fácilmente desde este punto.
XAMPP es la aplicación encargada de implementar un servidor apache para que funcionen los scripts PHP en un ordenador a nivel local.
Git es el gestor de repositorios más usado del mundo, con el que puedes descargar limpiamente, código de GitHub.
Visual Studio Code, es el editor de código más popular del mundo, que recomiendo ampliamente en prácticamente todas las publicaciones de este blog.
Descarga Aplicación de GitHub
El siguiente es el enlace de descarga de repositorio de GitHub de la aplicación del Sistema Inventario con Reporte a Excel:
Configuración del Sistema de Inventario con Reporte a Excel en PHP y MySQL para su funcionamiento en tu ordenador
Debes instalar las aplicaciones mencionadas, con todos los parámetros por defecto, posterior a este procedimiento, desde Visual Studio Code, debes abrir la siguiente ubicación:
C:\xampp\htdocs
Desde esta ubicación en Visual Studio Code, pulsas View, Terminal. Dentro del Terminal eliges la opción de Git Bash y copias el siguiente código:
Se creará la carpeta inventario-excel, dentro de la carpeta htdocs. A continuación deber abrir XAMPP en tu ordenador, activar los servicios de Apache y MySQL, y acceder a la siguiente URL, para crear la base de datos barberia:
http://localhost/phpmyadmin/index.php
Base de Datos del Sistema de Inventario con Reporte a Excel en PHP y MySQL
Para que la aplicación te funcione correctamente, desde phpmyadmin, debes crear la base de datos con el nombre inventario-excel, posteriormente debes acceder al apartado SQL y pegar el código que se encuentra en el siguiente enlace:
Este Sistema Generador de Facturas en PHP y MySQL permite generar facturas de manera sencilla y efectiva, esta aplicación viene por defecto lista para 5 cajeros pero es posible agregar los cajeros que se requieran.
Este script se puede ingresar en cualquier proyecto y con esto poder gestionar sencillamente el proceso de acceso y registro de usuarios.
Esta aplicación es gratuita y la puedes descargar y utilizar libremente, implementar como desees, solo sigue el paso a paso del post y podrás utilizar esta aplicación fácilmente.
Video Explicativo
Este software es uno de los más de 80 aplicaciones gratuitas que tengo en este blog a plena disposición y puedes verlas en el siguiente enlace:
Esta aplicación y cualquier otra que corra con PHP y MySQL, también te la puedo alojar en Hostinger, tu contratas el dominio con Hostinger también y yo te lo alojo con mi Hosting y te ayudo a administrar la aplicación por 10 USD mensuales.
Si te llega a interesar que te aloje la aplicación puedes consultar en el siguiente enlace de referido y contratar solo el servicio de Dominio y yo te lo puedo alojar y administrar fácilmente desde este punto.
XAMPP es la aplicación encargada de implementar un servidor apache para que funcionen los scripts PHP en un ordenador a nivel local.
Git es el gestor de repositorios más usado del mundo, con el que puedes descargar limpiamente, código de GitHub.
Visual Studio Code, es el editor de código más popular del mundo, que recomiendo ampliamente en prácticamente todas las publicaciones de este blog.
Descarga Aplicación de GitHub
El siguiente es el enlace de descarga de repositorio de GitHub de la aplicación del Sistema Generador de Facturas:
Configuración del Sistema Generador de Facturas en PHP y MySQL para su funcionamiento en tu ordenador
Debes instalar las aplicaciones mencionadas, con todos los parámetros por defecto, posterior a este procedimiento, desde Visual Studio Code, debes abrir la siguiente ubicación:
C:\xampp\htdocs
Desde esta ubicación en Visual Studio Code, pulsas View, Terminal. Dentro del Terminal eliges la opción de Git Bash y copias el siguiente código:
Se creará la carpeta generador-factura, dentro de la carpeta htdocs. A continuación deber abrir XAMPP en tu ordenador, activar los servicios de Apache y MySQL, y acceder a la siguiente URL, para crear la base de datos barberia:
http://localhost/phpmyadmin/index.php
Base de Datos del Sistema Generador de Facturas en PHP y MySQL
Para que la aplicación te funcione correctamente, desde phpmyadmin, debes crear la base de datos con el nombre factura, posteriormente debes acceder al apartado SQL y pegar el código que se encuentra en el siguiente enlace:
Este Sistema de Gestión de Citas Avanzado en vue.js PHP y MySQL es la versión más completa de diferentes aplicaciones que están publicadas en este blog, tanto en mi segmento premium como en mi apartado gratuito
Esta aplicación tiene la capacidad de enviar correos, cuando el usuario aparta su cita, igualmente envía correo con la cita es confirmada y pagada.
Video Explicativo
Otros Sistemas de Gestión de Citas
Además de este Sistema de Gestión de Citas Avanzado en vue.js PHP y MySQL cuento con otros sistemás más básicos que te podrían servir y que podrías ver en los siguientes enlaces:
Dashboard Sistema de Gestión de Citas Avanzado en vue.js PHP y MySQL
El sistema administrativo es bastante completo cuenta con una dashboard donde puedes visualizar graficamente las reservas realizada por mes, luego en unos páneles se especifica el número de reservas en específico del mes en curso, del último mes y la cuenta de reservas realizadas hasta el momento.
Pantalla de la dashboard Sistema de Gestión de Citas Avanzado
Apartado de Servicios del Sistema de Gestión de Citas Avanzado
En este apartado puedes gestionar los diferentes servicios que el negocio va a prestar, puedes delimitar el número de servicios que vas a prestar por día, si vas a aceptar una confirmación automática de la aplicación, los servicios después de creados se pueden activar y desactivar, se pueden permitir multiples reservas, el tiempo específico del servicio en horas, la franja horaria, así como los horarios de break en la franja del servicio.
Pantalla de Servicios del Sistema de Gestión de Citas Avanzado
Reservas del Sistema de Gestión de Citas Avanzado
En esta sección puedes filtrar las reservas que te realicen en la página por fecha, estado del pago o nombre del servicio, se puede cambiar el estado de la reserva, por confirmado y pagado, también puedes eliminar las reservas y editarlas a voluntad.
Pantalla de Reservas del Sistema de Gestión de Citas Avanzado
Apartado de Clientes del Sistema de Gestión de Citas Avanzado
En este Sistema de Gestión de Citas Avanzado en vue.js PHP y MySQL los clientes se registran de manera autonóma, aunque también es perfectamente posible que el cliente realice su reserva sin ningún tipo de registro, en la siguiente pantalla se muestra como aparecen los clientes ya registrados.
Pantalla de Reservas del Sistema de Gestión de Citas Avanzado
Sección de Configuración del Sistema de Gestión de Citas Avanzado
En esta área se puede configurar el envío de SMS, se puede elegir la opción de que el cliente pueda realizar su reserva sin registro, o forzar el registro para la reserva, la aplicación en su apartado de configuración también soporta diferentes medios de pago, como PayPal y Stripe.
Pantalla de Configuración del Sistema de Gestión de Citas Avanzado en vue.js PHP y MySQL
Demo en línea del Sistema de Gestión de Citas Avanzado
En el siguiente enlace puedes acceder al sistema, con las siguientes credenciales:
Costo de la aplicación de Gestión de Citas Avanzado
La aplicación tiene un costo de 100 USD, se incluye el proceso de implementación en un servidor local o en un hosting, este hosting debe tener cpanel y mínimo una versión de mínimo 7.4 de PHP.
El cliente debe tener disponibilidad de máximo 2 horas para una conexión remota a través de anydesk el siguiente es el botón de pago de la aplicación:
La aplicación tiene un costo de 100USD. El pago de la aplicación lo puedes hacer por medio de los canales a continuación:
Pago vía Payu
Pago vía Global66
Países válidos Argentina, Chile, Colombia, México y Perú.
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.
Configuración de correo electrónico del Sistema de Gestión de Citas Avanzado
La configuración del correo desde donde se deben enviar los correos electrónicos de confirmación de reserva y de pago, se realiza con un correo imap, preferiblemente el mismo del hosting, cualquier consulta adicional favor contactarme directo a mi Whatsapp en el botón flotante de este post o en el siguiente enlace:
Usamos cookies en nuestro sitio web para brindarle la experiencia más relevante recordando sus preferencias y visitas repetidas. Para más información puedes verificar nuestra política de cookies. Al hacer clic en "Aceptar", acepta el uso de TODAS las cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duración
Descripción
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.