Parzibyte's blog

Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.

SQLite3 con JavaScript puro y OPFS – Tutorial

En este post te mostraré cómo usar SQLite3 directamente en el navegador web usando la librería original escrita en C a través de WebAssembly y el OPFS para alojar la base de datos. De este modo tendremos SQLite3 original en la web para trabajar en el navegador con JS del lado del cliente.

Podremos hacer esto con JavaScript puro o con cualquier framework; pero te mostraré un ejemplo básico y bien explicado de SQLite3 con JavaScript. Luego te enseñaré un ejemplo con Tailwind, Svelte y Progressive Web apps.

(más…)

Usando SQLite3 en la web con Sveltekit y @sqlite.org/sqlite-wasm

Estoy muy emocionado porque después de tanto tiempo y gracias al Origin Private File System podremos tener SQLite3 en los navegadores, con todas sus ventajas y todo contenido desde una página web.

Si quieres puedes ver el hola mundo sin Svelte, es decir, con JS puro y aprender cómo usar SQLite3 en el navegador web sin servidores.

Ya había leído eso hace tiempo pero tenías que hacer unas cosas “experimentales”.

El punto es que ando aprendiendo un poco de Svelte con Tailwind haciendo una app de notas (a las que les agregaré encriptación) y me dio curiosidad por ver si SQLite3 ya estaba “portado” totalmente, porque si bien ya existía con WebAssembly no había manera de crear archivos binarios en el navegador web.

Entonces encontré a: https://developer.chrome.com/blog/sqlite-wasm-in-the-browser-backed-by-the-origin-private-file-system/

Y vi que ya era posible. Lo siguiente era hacerlo funcionar con SvelteKit que usa a su vez Vite para todo su entorno.

Te contaré cómo lo hice y de dónde me he guiado.

(más…)

Total vendido agrupado por mes – SQL y reportes con gráficas

En este post vamos a ver cómo calcular el total vendido en un período de fechas agrupado por mes, ya sea para mostrar un reporte o una gráfica de barras o líneas.

Básicamente veremos el algoritmo y ejemplos de código para sacar el desglose del total vendido por mes en el año o en cualquier período de tiempo, tomando los datos de una base de datos, agrupando, ordenando, sumando, etcétera.

No importa cuál motor de base de datos utilices ni el lenguaje de programación. Veremos el algoritmo para sumar el total vendido por mes.

(más…)

Habilitar claves foráneas en SQLite3

Hoy vamos a ver cómo habilitar las foreign keys de SQLite3 ya que en ocasiones las mismas no funcionan incluso al especificar el on delete y on update.

Esto es porque debemos habilitar las claves foráneas de SQLite3 al momento de abrir la base de datos o cambiar el PRAGMA.

Veamos cómo hacerlo al abrir la base de datos.

(más…)

Telegram y MySQL: conexión usando bot

En este post vamos a ver cómo realizar la conexión de Telegram con MySQL a través de un bot, de modo que podamos guardar y consultar datos de una base de datos de MySQL desde Telegram.

Telegram bot con MySQL - Listar e insertar registros a base de datos con comandos

Telegram bot con MySQL – Listar e insertar registros a base de datos con comandos

Con lo que veremos vamos a poder insertar datos en una tabla de MySQL desde Telegram y cualquier chat (siempre y cuando nuestro bot pueda leer los mensajes).

También vamos a ver cómo guardar el nombre del usuario y la fecha de envío del mensaje. Será un CRUD (sin Update) básico pero puedes partir del mismo para hacer cosas más específicas.

(más…)

Combinar y ordenar 2 tablas de base de datos

El día de hoy veremos cómo extraer datos de 2 tablas SQL distintas, combinarlos y extraer solo los primeros de ellos a partir de un parámetro de ordenamiento.

El ejemplo que mostraré va a mostrar los productos más vendidos en una tienda, pero esos productos se venden al contado o en apartado, y cada uno está en una tabla distinta.

Lo que se requiere es obtener los productos más vendidos sin importar a cuál tabla pertenecen, ordenándolos, combinándolos y extrayendo solo los primeros N.

(más…)

Exportar base de datos de MySQL con Laravel

En este corto post de programación con PHP, Laravel y MySQL vamos a ver cómo exportar una base de datos de MariaDB completa desde un controlador de Laravel.

Vamos a usar la herramienta mysqldump atrapando su salida en un archivo y luego vamos a servirlo al cliente para finalmente eliminarlo, es decir, usaremos mysqldump para volcar la base de datos a un archivo SQL temporal.

Nota: si quieres también puedes ver el script que usa PHP puro y adaptarlo a Laravel:

https://parzibyte.me/blog/2018/10/22/script-respaldar-base-de-datos-mysql-php/

(más…)

Agrupar condiciones WHERE en SQL usando Laravel

En el post de hoy vamos a trabajar con Laravel, PHP y consultas SQL con WHERE. Como bien sabes, en MySQL o motores similares podemos agrupar condiciones usando paréntesis, estableciendo así un orden.

Por ejemplo, si queremos encerrar 2 condiciones y luego evaluarlas con un AND, haríamos algo así:

select * from `productos` where `id_establecimiento` = ? and (`descripcion` LIKE ? or `codigo_barras` LIKE ?) order by `descripcion` asc;

En este caso hacemos un and entre la primera comparación y el resultado de la segunda que está encerrada entre paréntesis para evaluar un or.

Esto es importante porque (para este ejemplo) si no se usaran paréntesis se podrían ver los productos de todos los establecimientos si es que el código de barras coincide.

Entonces veamos cómo agrupar y evaluar condiciones booleanas de la base de datos entre paréntesis usando el Query Builder y ORM de Laravel.

(más…)