crud

Uso de Django Admin – El panel de control de Django

Panel de control de Django

En este post te mostraré cómo crear un usuario para entrar a Django admin, registrar un modelo y administrarlo desde el panel de control.

Una de las cosas que hacen de Django uno de los mejores frameworks (sin importar el lenguaje de otros frameworks) es el llamado Django Admin, que es un panel de control que permite administrar todos los modelos.

Es decir, el código ya está hecho por nosotros, los formularios también y lo mejor es que cada uno está dispuesto para cada tipo de dato.

Nota: esta es la parte 3 del tutorial de Django. Mira la parte 1, y la parte 2.

Continue reading…

Node.js y PostgreSQL – Ejemplo de conexión

Node JS puede ser conectado a PostgreSQL fácilmente a través del paquete pg.

En este tutorial vamos a ver cómo conectar Node.JS con PostgreSQL y hacer las cuatro operaciones básicas de la base de datos: Create, read, update y delete (CRUD); todo esto evitando inyecciones SQL y usando un poco el model MVC.

Para la interfaz vamos a usar Bootstrap (ya que será responsivo), y para que el usuario use nuestra app web vamos a usar Express.

Archivos que conforman el CRUD de PostgreSQL con Express

Aunque estos ejemplos son con la web, los mismos pueden ser ejecutados en la terminal sin ningún problema.

Continue reading…

Conexión Node.js y MySQL con Express

En este post te voy a mostrar cómo conectarte a una base de datos de MySQL usando el lenguaje de programación JavaScript del lado del servidor a través del entorno Node; también conocido como Node.Js.

Vamos a hacer las 4 operaciones básicas de la base de datos: obtener datos, insertar datos, actualizar datos y eliminar datos.

Para la interfaz del usuario vamos a usar Bootstrap y una estructura de aplicación web generada con express-generator.

Continue reading…

Python y PostgreSQL: ejemplo de conexión y CRUD

En este post vamos a ver cómo conectar Python con el motor de base de datos PostgreSQL usando el módulo psycopg2 que cumple con la DB API 2.0.

La DB API 2.0 es una API común en la que se utilizan los mismos métodos, cambiando únicamente el driver; algo así como PDO en PHP.

Python y PostgreSQL – Ejemplo de conexión usando psycopg2

Vamos a hacer un CRUD con PostgreSQL usando Python, evitando inyecciones SQL.

Nota: todo el código está en mi GitHub.

Continue reading…

Conexión a SQL Server con Python y PyODBC (CRUD)

En este post vamos a conectar Python 3 a una base de datos de SQL Server a través del driver ODBC y el paquete PyODBC.

Haremos un CRUD para demostrar cómo se hacen las 4 operaciones básicas a una base de datos.

Para comenzar, recuerda:

Conectar SQL Server con Python usando PyODBC – CRUD

Nota: todos los archivos están en un repositorio de GitHub.

Continue reading…

Conectar PHP y SQL Server usando PDO – CRUD de ejemplo

Aprovechando que para unas cosas de la escuela tuve que instalar SQL Server y SQL Server Management Studio (ya que por voluntad propia no lo haría jamás) decidí conectar PHP con SQL Server y hacer un CRUD, es decir, create, read, update y delete de una base de datos de SQL Server.

De esta manera si algún día alguien quiere consumir una base de datos de SQL Server con PHP puede tomar este post como referencia.

Al final tendremos una aplicación web como la siguiente, basada en una plantilla de Bootstrap 4.

SQL Server y PHP

Voy a mostrarte cómo hacer un select, update, insert y delete. Además de prevenir inyecciones SQL.

Recuerda que al final de todo lo que vamos a usar es PDO, una envoltura de las bases de datos que permite intercambiar de un motor a otro cambiando la cadena de conexión.

Nota: todo el código fuente aquí mostrado está actualizado y completo en mi GitHub. Siéntete libre de clonarlo, editarlo, descargarlo o mejorarlo.

Continue reading…

Creación de tabla dentro de MySQL con migración de Laravel

CRUD de Laravel con MySQL: administrador de canciones

CRUD de Laravel con MySQL o MariaDB

Hoy toca el turno de Laravel (un framework de PHP) para conectarse a la base de datos más popular: MySQL.

Creación de tabla dentro de MySQL con migración de Laravel

Creación de tabla dentro de MySQL con migración de Laravel

En este post voy a explicar cómo conectar Laravel con MySQL o MariaDB, comenzando por configurar la base de datos, pasando a través de las rutas, repasando el motor de plantillas de Blade y tocando un poco el tema de los mensajes flash.

Al final vamos a tener un CRUD o ABC, en donde se verán las operaciones básicas de Laravel con MySQL: insert o insertar, update o actualizar, select o seleccionar y finalmente delete o eliminar.

Continue reading…

Actividad para insertar nueva mascota

Tutorial de SQLite con Android: CRUD (create, read, update, delete)

Para guardar datos en una base de datos usando Android tenemos que recurrir al maravilloso gestor SQLite3. Pues bien, hoy veremos cómo trabajar con SQLite desde Android usando Java.

Lo que veremos será un CRUD o ABC de Android con SQLite en donde veremos un insert, update, delete y select de SQL con Android.

Al final tendremos una app móvil simple que permitirá interactuar con SQLite para realizar las operaciones básicas que se ve así:

CRUD de SQLite con Android - Mascotas

CRUD de SQLite con Android – Mascotas

Todo esto usando SQLite y una clase que extiende de SQLiteOpenHelper.

Continue reading…

CRUD de MongoDB y Python con PyMongo

CRUD (create, read, update, delete) en Python y MongoDB

Siguiendo con la serie de tutoriales para consumir distintas bases de datos hoy veremos cómo conectarnos a una base de datos de MongoDB y hacer todas las operaciones para crear, leer, actualizar y eliminar desde Python.

CRUD de MongoDB y Python con PyMongo

CRUD de MongoDB y Python con PyMongo

El módulo que usaremos será PyMongo; el cual está disponible para instalarse por medio de Python y que nos permite conectarnos a MongoDB, obtener bases de datos, colecciones y todo lo relacionado a ello.

Al finalizar podremos gestionar una colección de productos de una tienda.

Continue reading…

Instalar librería de MongoDB en PHP

Conectar PHP con MongoDB: CRUD

Hoy veremos un tutorial sobre cómo trabajar con PHP y el motor de base de datos MongoDB. Haremos un CRUD que nos permitirá crear, leer, actualizar y eliminar documentos de MongoDB utilizando el lenguaje de programación PHP.

Existe una librería que provee mongodb, la cual funciona de maravilla para trabajar con MongoDB y PHP. Veamos algunos ejemplos de uso.

Como segunda parte del tutorial, veremos un ejemplo práctico que podrás probar en vivo, ya que aquí veremos únicamente cómo son las operaciones administrativas (CRUD o ABC) para no complicar el post.

Continue reading…

Conectar Go y MySQL. Crud y ejemplos de conexión

Conectar GoLang y MySQL

Hoy veremos cómo consumir una base de datos de MySQL o MariaDB (crear un CRUD) utilizando uno de mis lenguajes de programación favoritos: Go, también conocido como GoLang.

Lo que haremos será un CRUD a través de la consola; esto para mantener la simplicidad, pero recuerda que Go sirve para muchísimas cosas más (Sublime POS está escrito en Go).

Conectar Go y MySQL. Crud y ejemplos de conexión

Conectar Go y MySQL. Crud y ejemplos de conexión

Recuerda que para esto debes tener instalado MySQL, si lo deseas, puedes instalarlo con XAMPP. También recuerda instalar y configurar Go.

Por otro lado, te invito a leer algunos ejercicios de MySQL y cómo conectarte a la CLI del servidor MySQL.

Continue reading…

Generador de código (Modelo, vista y controlador) para CodeIgniter

Introducción

Hace algún tiempo, por diversión, escribí un generador de código de CodeIgniter.

Todo nació a partir de una plática con unos amigos sobre hacer un script que, dada una base de datos, generase el código necesario del modelo, la vista y el controlador para que un ser humano hiciera las operaciones básicas.

Obviamente este generador de código de CodeIgniter es algo hecho por diversión y que no debería usarse en producción pero es entretenido de usar.

Para escribirlo no usé nada más que el propio lenguaje de PHP. Y no, no es magia, son simples concatenaciones de cadenas, formateo de las mismas con sprintf y condiciones.

Pero bueno, vamos por partes y veamos cómo funciona, porque sí, claro que funciona y puede generar un CRUD en menos de un segundo 🙂

Continue reading…

Python 3 y MySQL: CRUD y ejemplos de conexión

Introducción

Recientemente vimos cómo trabajar con Python3 y SQLite3. Hoy veremos cómo combinar Python3 y MySQL para insertar, editar, eliminar y mostrar registros en esta base de datos tan popular. Así que veamos este tutorial fácil con ejemplos y demostración.

Para conectar MySQL y Python 3 vamos a utilizar el paquete llamado PyMySQL.

Nota: también he escrito tutoriales para conectar Python con SQL Server y con PostgreSQL.

Continue reading…

SQLite3 y PDO con PHP: crud y ejemplos

Introducción

Hace algunas semanas o meses escribí una pequeña introducción a Python con SQLite. Ahora es el turno de PHP, un poderoso lenguaje muy popular soportado por casi todos los servidores del mundo. Veamos un ejemplo de PHP, SQLite3 y PDO.

SQLite3 viene como anillo al dedo si nuestra app no será consumida al mismo tiempo (en el mismo instante de tiempo), ya que, recordemos, no es una base de datos multihilo.

Nota: recuerda habilitar la extensión sqlite

Por cierto, ¿quieres un tutorial para MySQL? también puedes ver la conexión de PHP con otras bases de datos.

Continue reading…

MySQL y PHP con PDO: CRUD (create, read, update, delete)

Introducción

Aunque ya hay millones de tutoriales sobre esto, me decidí a hacer el mío pero en una forma muy muy simple. Antes de comenzar, debes tener un conocimiento básico en MySQL. Si no tienes instalado esto, pásate por este post para instalar XAMPP.

Cabe mencionar que aquí no veremos buenas prácticas de bases de datos, relaciones, etcétera. Nos dedicaremos a usar las tablas que aparecen, sin fijarnos en la normalización, o cosas de ese estilo.

Nota: este tutorial utiliza PDO, pero recuerda que igualmente podemos usar las funciones mysqli. Personalmente recomiendo PDO, pues es orientado a objetos. Sin embargo, espero escribir un tutorial sobre mysqli en el futuro.

Si te interesa saber cómo hacer un CRUD con SQLite3, PDO y PHP haz click aquí

Actualización 2019

Ya se encuentra disponible la parte 2 de este tutorial en donde vemos cómo saber si un elemento existe en la tabla y recorremos los datos con un cursor. Míralo aquí.

También he puesto el código en GitHub.

Actualización marzo

De nuevo he añadido otro tutorial para saber cómo realizar búsquedas, míralo aquí.

Estructura de la tabla

Como lo dije, esto será simple. Utilizaremos una tabla de personas, en donde guardamos el id, el nombre, apellidos y género. Queda así:

Con esto vamos a comenzar a trabajar.

Conexión

Para interactuar con la base de datos necesitamos conectarnos a la misma. Para ello, usamos un archivo y  después simplemente lo incluimos en donde queramos usarlo. Voy a poner el código aquí, y lo explicaré más abajo.

Como podemos ver, el código es demasiado simple. Simplemente creamos un objeto PDO y le pasamos 3 parámetros:

  1. Nombre del origen de datos
  2. El usuario
  3. La contraseña

PDO permite cambiar de gestor de base de dato en una sola línea, sólo tendríamos que cambiar el primer parámetro. Aquí dejo la lista de gestores de bases de datos soportadas. Por otro lado, aquí dejo la documentación oficial de la clase.

Lo ponemos en un try/catch porque en algunas ocasiones puede que nos equivoquemos de usuario, contraseña, base de datos, etcétera.

Nota: recuerda que la base de datos debe existir, así como la tabla “personas”. Puedes cambiar el usuario, la contraseña o el nombre de la base de datos como tú desees.

Formulario para crear datos

Comencemos insertando datos. Para ello, necesitamos un simple formulario en HTML. Dejaré esta vez sin explicar el código HTML, si deseas estudiarlos más a fondo aquí te dejo un link.

Lo único que quiero que se note es el atributo action, en donde ponemos el nombre del archivo php que recibirá los datos.

Ese archivo debe estar en la misma carpeta que el formulario. Si cambiamos nuevaPersona.php de ubicación o nombre, basta con cambiarlo en el formulario para que las cosas sigan funcionando.

Por ejemplo, si muevo el archivo nuevaPersona a la carpeta “foo” (que está en donde está el formulario), tengo que cambiar el action, así:

action=”foo/nuevaPersona.php”

Si lo cambio a una carpeta que está arriba, puedo ponerlo así:

action=”../carpeta/nuevaPersona.php”

Y puedo tener miles de carpetas:

action=”una/carpeta/otra/otra/otroNombre.php”

Recibiendo datos del formulario

Antes de recibirlos, por favor observa el atributo “name” de cada input. Ese nombre será el que usaremos para acceder a los datos, distinguiendo mayúsculas y minúsculas. Veamos ahora el archivo nuevaPersona.php, que será en donde recibiremos los datos introducidos en el formulario.

Si todo va bien, al visitar el formulario y enviarlo se mostrará un “Insertado correctamente”.

Listar datos – Tabla estática

Una vez que ya insertamos, vamos a mostrar a las personas. Para ello, usaremos una tabla. Antes de confundir al lector con la creación de la tabla, veamos una de ellas en su forma estática. Así luce el código: (obviamente es escrito a mano)

Si observas bien, puedes ver que la estructura se conserva y sólo cambia en tr. Es decir, se repite la parte del código en donde dice <tr><td>…

La tabla, al mostrarla, se ve así:

Pero eso lo puede hacer cualquiera, y además, ¿qué beneficio trae, si tenemos que hacerla a mano? mejor deberíamos hacer que PHP la genere por nosotros, o bueno, darle sólo una pequeña ayuda. Veamos entonces cómo podemos hacer eso.

Listar datos – Tabla dinámica

Ahora sí vamos a ver cómo listar datos traídos de MySQL. Para ello vamos a utilizar código PHP. El archivo que lista los datos, al menos en su primer versión, se ve así:

Nota: El parámetro que pasamos a fetchAll es una constante estática pública de la clase PDO, (PDO::FETCH_OBJ) y permite acceder a las filas de la tabla como si fuera un objeto nativo de PHP. Es decir, podemos acceder al nombre de la persona usando $persona->nombre en lugar de (es la opción que está por defecto) $persona[1]. Hay más constantes, pero las veremos en otro post.

Recordemos que el código, entre más expresivo, mejor.

Bueno, con todo esto tendremos un arreglo que se ve así al visitar la página:

Esto es porque sólo he registrado a una persona. Registraré a otras:

Pero sigue sin verse bonito, aquí es en donde combinamos HTML y PHP para convertir ese arreglo en una tabla bonita, o al menos más bonita que ese arreglo no entendible. El código queda así:

Por cierto, no es un error dejar sin punto y coma el echo. Pero recordemos que si estamos en donde las etiquetas se cierran (?>) no es necesario poner punto y coma. Ojo: sólo en la última expresión, no en todas.

Al visitar la página ahora sí da gusto:

Agregando enlaces

Para eliminar o actualizar vamos a necesitar el id de la persona. Si no, ¿a qué persona eliminaremos o editaremos?.

Gracias al poder de la combinación de HTML podemos crear un link que dirija a cierto archivo, pasándole el id. Y luego leer ese id.

Por el momento sólo hay que crear los enlaces, no hace falta explicar el funcionamiento. Así que la versión 3 de la tabla queda así:

Y la tabla se ve así:

Si acercas el cursor en donde dice “Eliminar” verás que te va a dirigir a un enlace como “eliminar.php?id=1”. Pero ese id va cambiando en cada fila. Si le das click te dirá que no se ha encontrado el archivo, pues tenemos que crearlos a ambos: editar.php y eliminar.php.

Eso lo veremos más abajo.

Actualizando o editando

De todas las operaciones, esta es la que menos me gusta, ya que en primer lugar debemos saber el id, luego tenemos que recuperar los datos para mostrarle al usuario lo que ya existe. Finalmente realizar la consulta UPDATE en la base de datos.

Pero bueno, este paso es necesario. Así que vamos allá.

¿recuerdas que mandamos un id dentro del link en la tabla? ahora vamos a recuperarlo. Crearemos el archivo editar.php y pondremos esto dentro de él:

Si te fijas bien, ahora estamos recibiendo el id por medio del arreglo superglobal $_GET. Y accedemos a él a través de su posición como cadena, así:

$_GET[“id”]

¡Justo como leíamos a $_POST! Luego, hacemos una búsqueda en donde el id sea igual al proporcionado. Si no existe nada con ese id (porque un usuario puede cambiar ese id a 4654654, cosa que en teoría no existe) entonces lo advertimos.

Veamos ahora el formulario, HTML provee una forma de dar valores por defecto a los campos utilizando el atributo “value” así que llenamos estos valores con los datos que obtuvimos, en caso de que existan.

También agregamos un input de tipo oculto, ahí guardaremos el ID para que el usuario, en teoría, no pueda cambiarlo.

Y finalmente observa el action, ahora no irá a nuevaPersona.php sino a guardarDatosEditados.php. Éste último archivo vamos a programarlo ahora mismo. Por cierto, editar se ve así:

(justo como el de agregar nueva persona, pero con los campos llenos por defecto)

Recibiendo datos para editar

Este será casi igual al de nuevaPersona.php salvo que ahora también necesitamos el id, y será un UPDATE en lugar de un INSERT. Veamos el código y luego lo explicamos:

Podemos ver que usamos el ID para hacer un Where dentro de la consulta. Y actualizamos todos los valores. De todos modos, no hay problema, pues si el usuario no toca el valor se quedará tal y como estaba.

Eliminando

Pequeña gran nota: repito que esto es un post más que nada educativo. Nunca pero nunca debemos hacer que se elimine usando un link, y mucho menos sin confirmación. ¿te imaginas que Facebook tuviera esa opción para, por ejemplo, eliminar mensajes con alguna persona? supongamos que el link fuera algo como eliminar_mensajes.php?idPersona=111

Ahora yo te digo que visites ese link, pero antes lo pongo en un acortador para que no haya sospechas. Una vez que hagas click en él, adiós a esa conversación. Obviamente no perdemos nada con eliminar una conversación (al menos que incrimine a alguien, tenga valor sentimental, etcétera) pero basta con esto para darnos una idea.

En este ejemplo eliminamos con el valor pasado por un link y no hay vuelta atrás, pero igual no perdemos nada. Para casos reales, es mejor hacerlo usando POST, pues ahí los datos no se ven en la URL. Además, podemos mandar una confirmación, comprobar si el usuario tiene permisos, etcétera.

Pero eso es otra historia, veamos ahora sí el último pilar para armar este crud. Por cierto, podríamos poner un confirm con javascript, o algo así, pero sería mezclar código y confundir al lector.

La operación que más me gusta es eliminar, pues sólo necesitamos el ID. Espero que el código se explique por sí mismo, porque si no, ni yo mismo podría hacerlo.

Probando y descargando

Sería un pecado explicar todo esto y no dejar los archivos para que los pruebes por ti mismo. Aquí dejo el proyecto completo, sólo pégalo y extráelo en la carpeta pública de tu servidor Apache (htdocs o public_html).

mysql_pdo_php_crud

También puedes probarlo en línea.

Conclusión

Podemos agregar unos links de navegación para ir, por ejemplo, de editar a listar todos, etcétera. Pero eso lo dejo para que el usuario lo haga. También sería bueno agregar un poco de estilos CSS. O incluso crear un servicio web con PHP y consumirlo desde cualquier lugar, o hacerlo con Javascript utilizando AJAX.

Pero todo eso es arena de otro costal que se llevaría decenas de posts, así que dejemos eso por el momento.

Finalmente, si quieres un ejemplo un poco más avanzado, te invito a leer Pequeño, muy pequeño sistema de ventas con PHP