Generar SQL desde Arrays de inputs HTML5

¡Muy buenas! Este segundo tutorial del año se centrará en resolver una duda general: cómo obtener [en PHP] los datos de un formulario con inputs que sean arrays e insertar esos datos con SQL (por ejemplo, a MySQL).

Un ejemplo de los input array es este:

<input type="text" name="nombre[]">

Como se puede apreciar, el nombre del campo es nombre[], donde los corchetes hacen que el input con el mismo nombre sepa “auto-identificar” que es un array, y poder tener así varios inputs con el mismo nombre. Esto se utiliza generalmente cuando son necesarios varios inputs para procesar diferentes datos.

¿Cómo pasar cada dato a PHP?

Read More

Anuncios

Acceso y registro con HTML, AJAX, PHP y MySQL

¡Hola a todos y a todas! Comienzo este 2016 (un poco tarde, estaba descansando 🙂 ) con un tutorial donde mostraré cómo hacer un acceso y registro de usuarios básico basado en HTML, AJAX, PHP y MySQL.

En esta ocasión, utilizaremos y configuraremos cookies de sesión con PHP, y también comprobaremos si el usuario está logueado (si tiene la sesión iniciada) o no. Representado en un diagrama de flujo, sería algo así:

Diagrama de flujo

Diagrama de flujo

Entonces, comencemos.

¿Cómo crear un sistema de usuarios?

Read More

Paginación con PHP y MySQL

Antes de comenzar con este tutorial, el cual será el último de este año 2015, quisiera agradecer a todos los que han compartido y comentado los tutoriales aquí expuestos. Más de 16.000 visitas avalan la confianza que ustedes, los lectores, tienen en estos textos.

Sin más dilación: pasemos a crear una paginación simple basada en PHP y MySQL.

¿Cómo crear una paginación?

Personalmente seguiré desarrollando en local, utilizando XAMPP (Apache y MySQL con PHPMyAdmin) en Windows.

1 de 3: MySQL

A diferencia de otros tutoriales, esta vez empezaré por la base de datos, pues es de ahí de donde debemos obtener los datos necesarios para proceder. Como siempre, estoy trabajando sobre una base de datos llamada mmv con cotejamiento utf8_spanish_ci. Dentro tengo una tabla llamada mmv004 que tiene tres columnas. El motor de almacenamiento es InnoDB.

  1. id -> INT(5) -> A_I -> primaria
  2. nombre -> varchar(20) -> utf8_spanish_ci
  3. edad -> INT(2)

Read More

5 páginas de stocks gratuitos

Desde hace un tiempo soy poseedor de una cámara semi-profesional (una DSLR), y por ello en los trabajos que realizo donde se precisa algún stock o mockup no tengo problema en realizar yo mismo las tomas necesarias.

Pero, siendo que a veces no se dispone de una cámara de gran calidad, o simplemente no se tiene el tiempo necesario, podemos acudir bancos de imágenes o stocks gratuitos. Personalmente me gustan gratuitos y sin necesidad de retribuir derechos de autor (CC0) para usar esas imágenes de manera personal o comercial. Por eso, hoy te presento cinco páginas web con cientos de fotografías gratuitas 🙂

1) Startup Stock Photos

Una de las páginas más utilizadas y reconocidas entre los diseñadores. Este banco, donde predominan las imágenes de tecnología (ordenadores/computadoras, teléfonos…) y situaciones de oficina fue creado y es mantenido por @estrattonbailey@wearesculpt bajo una plantilla de Tumblr.

Sus imágenes forman parte de artículos de MashableWeb Designer Depot, Platzi, The Next Web, Business Insider, entre otros sitios web de prestigio. También están en Mi Mente Vuela, claro 😉

Read More

Subir imágenes a MySQL en Blob con AJAX

Aunque el método estándar para subir imágenes (y en general archivos) a un servidor es tan simple como (en resumen) subir el archivo y moverlo a una carpeta, existe la posibilidad de subir las imágenes a la base de datos (MySQL) a través de AJAX y alojarla en binario en un campo Blob (longblob, en este caso, con 2^32 – 1 caracteres, o sea, 4.294.967.295 caracteres) de la tabla en la BBDD.

En resumen, es algo así lo que vamos a hacer hoy:

Los parámetros de la petición al script en PHP son algo como esto:

Bien, comencemos.

¿Cómo enviar imágenes a MySQL?

Seguimos con el desarrollo en local: XAMPP (Apache y MySQL con PHPMyAdmin) en Windows.

1 de 6: HTML

En un archivo .php tenemos que agregar un formulario que acepte UTF-8, con método POST, y enctype “multipart/form-data”. Además, añadiremos un ID que, en mi caso, se llamará enviarimagenes.

Dentro de este formulario debe haber un input de tipo file, al cual le pondré de nombre imagen. Además, incluiré un input de tipo texto con el nombre titulo y un textarea con el nombre descripcion (los nombres sin tildes). Y obviamente un botón de submit.

Debajo del formulario pondremos un contenedor donde se mostrarán los mensajes correspondientes.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Subir imagen</title>
</head>

<body>
<form accept-charset="utf-8" method="POST" id="enviarimagenes" enctype="multipart/form-data" >
<label>Titulo</label><br>
<input type="text" name="titulo" />
<br><br>
<label>Descripcion</label><br>
<textarea name="descripcion"></textarea>
<br><br>
<input type="file" name="imagen"/>
<br><br>
<button type="submit">ENVIAR</button>
</form>

<hr>
<div id="mensaje"></div>
<hr>

</body>
</html>

En esta ocasión no le pondré límite de caracteres a las entradas de texto, para no complicar innecesariamente el script de PHP.

Read More

Búsqueda instantánea con AJAX, PHP y MySQL

Hoy traigo un tutorial donde mostraré una manera de obtener y mostrar datos de una base de datos MySQL con PHP y AJAX sin necesidad de recargar la página. En la búsqueda haremos una consulta a la BBDD para que sea case-insensitive y pueda concatenar varias columnas.

Ejemplo del resultado y sus peticiones al servidor

¿Cómo crear una búsqueda instantánea?

Esta vez haré el desarrollo en local, por cuestiones de comodidad. Utilizaré XAMPP (Apache y MySQL con PHPMyAdmin) en Windows.

1 de 5: HTML

Lo primero que necesitamos es “un lienzo en blanco” en PHP, al cual llamaremos index.php (por ejemplo).

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>
</body>
</html>

Después agregamos un formulario que acepte UTF-8 y con método POST. En el form debe haber un input del tipo texto (o búsqueda (search)) con nombre e ID “busqueda”. Opcionalmente se le puede añadir un valor y placeholder vacío, un máximo de 30 caracteres y el auto-completado apagado, además de un texto arriba del formulario.

Debajo de este vamos a crear un contenedor donde se muestren los resultados de la búsqueda:

Read More

Conectar con MySQLi a base de datos

En esta ocasión mostraré cómo conectarse una base de datos MySQL con MySQLi en PHP. Aunque lo cierto es que es algo muy básico, puede resultar un poco complicado hacer una conexión “decente” cuando uno empieza en este mundo de PHP y bases de datos.

Yo uso Hostinger con PHP 5.5. La función “MySQLi” (mysql improved) se introdujo en PHP 4.1, así que asegúrate de poseer una versión de PHP 4.1 o superior en tu servidor.

¿Cómo conectar con MySQL?

Read More

Certificados SSL gratuitos

A partir de Septiembre de 2015, se podrán obtener certificados SSL gratuitos gracias a Linux Foundation Collaborative Projects a través de Let’s Encrypt.

Estos certificados de autoridad (CA) estarán provistos por ISRG (Internet Security Research Group), y cuenta con sponsors tales como Mozilla, Akamai y Automattic (creadores de WordPress y Gravatar, entre otros).

Según dicen en el anuncio de Let’s Encrypt, sus principales claves son que es gratuito, automático, seguro, transparente, abierto y cooperativo.

En su blog ya han publicado el calendario de lanzamiento:

  • El primer certificado será la semana del 27 de Julio de este año.
  • Estará generalmente disponible en la semana del 14 de Septiembre de este mismo año.

Entre las FAQ (preguntas frecuentes), podemos leer cosas como:

¿Puedo usar los certificados de Let’s Encrypt para la firma de código o encriptación de email?
No. La encriptación de email y la firma de código requiere un tipo de certificado diferente que el que Let’s Encrypt ofrece.

¿Let’s Encrypt generará o almacenará claves privadas para mis certificados?
No. Nunca.

Estaremos al tanto de las novedades tanto en su Twitter (@letsencrypt) como en el repositorio de GitHub.

Saludos. 😀

Compresores de imágenes

Esta vez traigo dos herramientas para comprimir imágenes, ambas gratuitas (en principio). La comparativa será muy simple. Comprimir imágenes puede ayudarnos a ahorrar mucho espacio en nuestros discos o páginas web/servidores.
(Qué resumido todo, qué bien 😛 )

Las aplicaciones (probadas en Windows con arquitectura de 64 bits) son las siguientes:

  • JPEGmini. Bastante conocida, para Windows y Macintosh. Tiene una versión gratuita (solo disponible en inglés) donde se pueden comprimir hasta 20 imágenes por día, y sino, tiene 3 versiones: normal ($19.99), PRO ($149) y Server ($199 al mes).
  • Caesium. No tan conocida, actualmente sólo para Windows. Se está desarrollando una app móvil (está en BETA cerrada). Sin límite de imágenes, multi-lenguaje y con [más] opciones de compresión y salida.

¿Cuál es mejor?

Bueno, si vamos a hablar de interfaz gráfica, probablemente JPEGmini nos resulte más agradable.
Caesium es algo más… Windows, más normal, digamos.

Respecto a hacer su trabajo, veamos…

Read More