Conectar Formulario a Base de Datos MySQL con PHP - Tutorial 2026 — Transcript
Full transcript
- 0:00Aprende a registrar los datos de un
- 0:01formulario utilizando PHPM sequel de
- 0:02forma segura. Este es mi formulario de
- 0:04registro desarrollado solo con HTML para
- 0:07que puedes aprender a almacenar los
- 0:08datos de este formulario. Una database,
- 0:10es database,
- 0:11una base de datos.
- 0:13Lo que tienes que hacer es dirigirte a
- 0:14la descripción de este video y vas a
- 0:15encontrar mi repositorio de GitHub.
- 0:17Simplemente descreas el proyecto.
- 0:19¿Qué va a ser Danx? ¿No lo vas a hacer
- 0:20desde cero? Vuelve a leer el título del
- 0:22video.
- 0:24Entonces, descárgate el proyecto de mi
- 0:25repo y empecemos de una vez con el
- 0:27video. Lo esencial para este video es
- 0:29que ya tengan instalado XAM. Una vez que
- 0:31ya hayan descargado lo que es el
- 0:32proyecto de la descripción de este
- 0:33video, nos vamos a dirigir a la sección
- 0:35de nuestro disco local C en nuestra PC.
- 0:37Vamos a ubicar en la carpeta de examp.
- 0:41Dentro de Examen esta carpeta de HTD.
- 0:44Abrimos la carpeta HTX y dentro de esa
- 0:46carpeta vamos aar nuestro proyecto ya
- 0:48descargado. En esencial deben tener algo
- 0:49así como esto 1. conectar formulario dd
- 0:53y dentro de esta carpeta van a tener los
- 0:55archivos que vamos a estar utilizando.
- 0:57Si quieren pueden borrar las demás
- 0:59carpetas si es que no tienen ningún
- 1:00proyecto creado. Y ahora lo que vamos a
- 1:01hacer es buscar XAMP en nuestro
- 1:03computador que lo tienen instalado.
- 1:05Abrimos XAMP. Una vez abierto vamos a
- 1:07activar apache, le damos en start.
- 1:10También en My Sequel, le damos en start.
- 1:13Ustedes acá en el puerto de My Sequel
- 1:15probablemente les aparezca 3,30. Por
- 1:17defecto es 3,30. Yo lo he cambiado 3,307
- 1:20porque tengo dos puertos apuntando esa
- 1:22misma dirección, por lo que me ha traído
- 1:24errores. Sin embargo, ustedes si no
- 1:25hicieron ningunación seguramente les va
- 1:27a aparecer 3306. Vamos a darle en admin
- 1:30Apache y a My le vamos a dar en admin.
- 1:32Entonces, clic, clic y se les va a abrir
- 1:33dos pestañas. Esta pestaña y esta
- 1:36pestaña son dos pestañitas que se les va
- 1:37a abrir. Si quieren esta ventana del
- 1:39control de Exam lo pueden cerrar, va a
- 1:42estar ejecutando en segundo plano y en
- 1:44esta pestaña donde dice local host
- 1:46dashboard vamos a abrir nuestro proyecto
- 1:48y aquí es en donde vamos a almacenar
- 1:50nuestros datos en PHP My Admin. Entonces
- 1:52para poder abrir nuestro proyecto lo que
- 1:53vamos a hacer acá es quitar ese
- 1:55dashboard. En vez del dashboard vamos a
- 1:57colocar nuestro proyecto. ¿Qué nombre le
- 1:59vamos a colocar? En este caso yo lo
- 2:00tengo el nombre de la carpeta como 1 pun
- 2:03subg- conectar formulario-dv.
- 2:05Probablemente el nombre de la carpeta se
- 2:06les haya descargado con el mismo nombre.
- 2:08Si es así, pues simplemente apunten a
- 2:10esta dirección 1. Formulario-d, pero
- 2:13recalco nuevamente para que su proyecto
- 2:14se pueda abrir en su navegador, su
- 2:16proyecto deben haberlo descargado dentro
- 2:18de la carpeta de HTDS, dentro de la
- 2:20carpeta XAMP y esto debe estar ahí.
- 2:22Entonces es por eso que simplemente
- 2:24desde mi navegador puedo apuntar al
- 2:26nombre de esta carpeta. Ahora dentro de
- 2:28nuestra carpeta HTX vamos a abrir
- 2:29nuestro proyecto 1. Formulario-d
- 2:34abrir terminal. Simplemente acá vamos a
- 2:36escribir el comando de code punto de
- 2:40esta forma y vamos a dar enter. Esto nos
- 2:42va a permitir pues para abrir de forma
- 2:43mucho más rápida nuestro proyecto en
- 2:45Visual Studio Code. Acá podemos cerrar
- 2:47la terminal y verás que dentro de esa
- 2:49carpeta simplemente tenemos tres
- 2:51archivos creados que es connect.php que
- 2:54está vacío, index.php PHP, que vendría a
- 2:57ser nuestro formulario, el formulario
- 2:59que les he pasado, y también
- 3:01register.php,
- 3:02que aquí vamos a estar realizando lo que
- 3:05es el almacenamiento de datos. También
- 3:07tenemos un archivo de estilos que es
- 3:08style.css. Dentro de lo que es mi
- 3:11archivo de index.php está todo lo que es
- 3:14eh la estructura básica de mi documento,
- 3:17¿verdad? Mi formulario creado. Por esa
- 3:19parte tenemos el form. Si yo minimizo
- 3:21esto, verás que simplemente vendría a
- 3:23ser esto. Está enlazada a register.php
- 3:26mediante el método de post. Es
- 3:28importante que su formulario esté
- 3:30enlazado a este archivo, a register.php.
- 3:34Ustedes pueden colocarle cualquier otro
- 3:35nombre, pero tiene que enlazarse a un
- 3:37archivo. Les recomiendo que coloquen
- 3:39register.php porque ahí es donde vamos a
- 3:41estar haciendo lo que es el registro.
- 3:43Acá también tenemos algunas
- 3:44configuraciones, como por ejemplo el lo
- 3:46que es el input. tiene el name de
- 3:49nombre, lo que es el apellido, tiene el
- 3:51name de apellido. Es importante que
- 3:53todos los inputs tengan el name para
- 3:55poder recolectar esa información de cada
- 3:57uno de los inputs. También tenemos por
- 3:59esa parte un input de tipo radio, ¿no?
- 4:02Un input de tipo radio que en nuestro
- 4:04formulario vendría a ser esto. De aquí
- 4:05podemos almacenar también ese tipo de
- 4:08información dentro de una base de datos.
- 4:10Si hemos seleccionado masculino,
- 4:11femenino u otro. Es importante que acá
- 4:14cada input tenga el mismo nombre. Acá,
- 4:16por ejemplo, name tiene género, name
- 4:18género, name tiene género. Y el atributo
- 4:20value también tiene que tener
- 4:22información. Value m de masculino, value
- 4:25f de femenino y value o de otro.
- 4:28Entonces es importante colocar esto y
- 4:30esto tiene que coincidir con las
- 4:32opciones que vamos a seleccionar en
- 4:34nuestra base de datos. Si aquí colocas
- 4:35masculino, en tu base de datos también
- 4:37tienes que colocar masculino. Más
- 4:38adelante lo vamos a estar viendo cómo lo
- 4:39vamos a hacer. Y también tenemos el
- 4:41input de tipo email. También tiene name
- 4:43email. También acá tenemos name,
- 4:45password, name, teléfono. Entonces es
- 4:48importante identificar con el atributo
- 4:50name cada uno de nuestros inputs. En
- 4:52este caso tenemos seis en nuestro
- 4:54formulario. Y otra cosa que habrán
- 4:55notado también es que nuestro archivo de
- 4:57index no tiene la extensión de HTML,
- 5:00¿verdad? Esto es importante también
- 5:02modificarlo porque muchas veces vamos a
- 5:05necesitar inyectar o incrustar código
- 5:08PHP dentro de nuestro archivo de index,
- 5:10por lo que es recomendable cambiarlo a
- 5:12pun PHP. Acá en connect.php vamos a a
- 5:16estar realizando lo que es la conexión a
- 5:17nuestra base de datos. La conexión de
- 5:19nuestra base de datos va a ser como una
- 5:20llave que va a abrir a nuestra base de
- 5:23datos para poder acceder o para poder
- 5:25almacenar nuestros registros. Y esto es
- 5:27importante.
- 5:28¿Y qué pasa si no hago la conexión?
- 5:30Simplemente no vas a poder registrar los
- 5:32datos de tu formulario en la base de
- 5:33datos. La conexión a la base de datos es
- 5:35como la llave que va a abrir tu base de
- 5:37datos. Es por eso que necesitas crear sí
- 5:39o sí o hacer la conexión a nuestra base
- 5:40de datos. Y es por eso que ahora mismo
- 5:42te voy a mostrar cómo lo puedes hacer.
- 5:44Vamos a agregar código PHP por esa
- 5:46parte. Abrimos de esta forma PHP. Aquí
- 5:49colocamos pico paréntesis. Vamos a crear
- 5:52una variable llamada con y vamos a estar
- 5:55utilizando el método de MySQLi Connect.
- 5:59Este método va a aceptar un par de
- 6:01parámetros. El primero va a ser el
- 6:03servidor. En este caso va a ser local
- 6:05host porque nuestro servidor está de
- 6:07forma local. En vuestro caso también si
- 6:09lo tienen de forma local pues coloquen
- 6:11local host. Lo más probable es que sí
- 6:13porque hayan descargado el proyecto en
- 6:15su computador. El segundo parámetro va a
- 6:17ser el usuario, que va a ser root por
- 6:19defecto. Si descargaron XAM y no
- 6:21hicieron ninguna modificación de el
- 6:23nombre de usuario y la contraseña, por
- 6:25defecto es root. Y por defecto también
- 6:27no tenemos contraseña, entonces no
- 6:29colocamos absolutamente nada.
- 6:30Posteriormente vamos a colocar el nombre
- 6:32de nuestra base de datos, que en este
- 6:34caso yo lo voy a llamar como formulario.
- 6:36Pero la base de datos todavía no la
- 6:38hemos creado.
- 6:39Sí, lo sé, todavía no hemos creado la
- 6:41base de datos, pero dame un momento. Y
- 6:42el último parámetro que vamos a colocar
- 6:44es el puerto. Por defecto es 3306,
- 6:49que también pueden obiar si es que no
- 6:51hicieron ningún cambio de puerto, pero
- 6:53yo en mi caso, como te había mencionado
- 6:55anteriormente, hice un cambio del número
- 6:56de puerto. Entonces voy a colocar el
- 6:58número de puerto acá que es 3307.
- 7:01Repito, si no hicieron ninguna
- 7:02modificación al número de puerto,
- 7:03entonces no coloco en absolutamente
- 7:04nada. Por defecto, Sam lo va a
- 7:06considerar como 3306. Finalmente, acá
- 7:08vamos a colocar un punto y coma.
- 7:09Veniendo esto, vamos a colocar acá un
- 7:11condicional. Vamos a decir if connect.
- 7:14Si connects, o sea, si la conexión no se
- 7:17ha realizado satisfactoriamente, vamos a
- 7:19colocar un die. Un di es como paralizar
- 7:22el proceso de ejecución. Simplemente ya
- 7:25no va a ejecutarse. Acabamos de colocar
- 7:27un die. No se pudo conectar. Pun mysqli
- 7:32connect sub error. Y acá nos va a traer
- 7:34el tipo de error que tenemos. Todavía no
- 7:37hemos creado nuestra base de datos y es
- 7:39por eso que vamos a estar utilizando PHP
- 7:40My Admin para poder lograrlo. Vayámonos
- 7:42entonces a nuestra base de datos. Acá es
- 7:44donde vamos a crear nuestra tabla,
- 7:46nuestra base de datos en general. Así
- 7:48que cuando entren por primera vez les
- 7:49aparece alguna información extra por
- 7:51acá. Servidor de base de datos servidor
- 7:53127.001 001 vía TCP tipo de servidor
- 7:56amarillo DB conexón de servidor versión
- 7:58servidor versión de bruto usuario
- 7:59conjunto 3 servidor bla bla bla bla bla
- 8:02acá les dice root local host por defecto
- 8:05no le cambiar el nombre del usuario y
- 8:06por eso que dice esto y acá también
- 8:07tienen alguna otra información de
- 8:09servidor web para poder crear nuestra
- 8:10base de datos simplemente nos vamos a
- 8:11dirigir a esta sección donde dice o
- 8:13donde están nuestras demás bases de
- 8:15datos simplemente vamos a dar clic
- 8:16derecho. Ah, no, no se puede dar clic
- 8:17derecho. Entonces, simplemente vamos a
- 8:19dar en nueva acá donde dice nueva. Y
- 8:22aquí vamos a darle el nombre a nuestra
- 8:23base de datos. Yo en este caso yo en
- 8:25este caso lo puse como formulario, así
- 8:27que simplemente coloco formulario, voy a
- 8:28dejar el mismo tipo de carácter y
- 8:30simplemente le voy a dar en crear. Una
- 8:32vez que le hayan dado crear, acá ahora
- 8:34les pide que creen el nombre de la tabla
- 8:37en donde se va a almacenar los datos.
- 8:39Entonces acá simplemente voy a colocar
- 8:41el nombre de registro. Por ejemplo, voy
- 8:43a necesitar seis columnas, ¿verdad?
- 8:44Porque voy a necesitar una columna para
- 8:46el nombre, para el apellido, para el
- 8:48género, para el correo, para la
- 8:50contraseña, para el número de teléfono,
- 8:52que serían seis.
- 8:52¿Y cómo identificamos a cada fila? ¿No
- 8:55debería tener un ID o ID?
- 8:57Exacto, exactamente. Ahí está. Bien, ahí
- 9:00estás atento. Lo que tenemos que
- 9:02argumentar acá es una columna más para
- 9:04lo que es el ID, el ID que va a
- 9:08identificar cada uno de los registros.
- 9:10Esto es importante. Vamos a darle en
- 9:12crear. Vamos a crear la primera columna.
- 9:14que va a ser el ID. Entonces, acá vamos
- 9:16a colocar ID usuario, por ejemplo, ID
- 9:19sub usuario. Va a ser tipo entero, no va
- 9:21a tener longitud, pero sí acá vamos a
- 9:24activar un par de cosas, como por
- 9:26ejemplo el auto increment. va a ser una
- 9:28llave primaria. Entonces, importante el
- 9:31autoincremento, como les dije, que cada
- 9:32vez que nosotros aumentemos o agreguemos
- 9:34un registro en nuestra tabla, se va a ir
- 9:36incrementando uno en uno. Supongamos que
- 9:38Gerardo Gerardo, okay, Gerardo Gerardo
- 9:41se registra en en nuestra tabla,
- 9:43entonces sería el registro uno y luego
- 9:45aparece Reinalda. Reinalda. Bueno,
- 9:48Reinalda se registra en la fila dos,
- 9:50entonces ese identificador va a ir
- 9:53aumentándose poco a poco. Entonces, va a
- 9:55ser importante considerar eso. Luego
- 9:57vamos a tener nuestro nombre, eh, va a
- 9:59ser de tipo barchar, que va a ser para
- 10:01texto, y vamos a darle, pues, no sé,
- 10:03unos 50 caracteres. Y acá vamos a
- 10:06colocar apellido también. Apellido está.
- 10:09apellido va a ser un marchar, va a ser
- 10:11aproximadamente 50 caracteres de igual
- 10:12forma. Acá vamos a colocar también lo
- 10:16que sigue, que es el género. Género
- 10:19género va a ser un tipo de dato
- 10:21diferente a lo que solíamos o lo que lo
- 10:24solemos ver la que solamos solemos
- 10:27solemos solíamos ver al que solíamos ver
- 10:29solamos
- 10:30y si mejor te matriculas a un curso de
- 10:32lengua y dejas de sufrir.
- 10:34Okay, okay, no me no me insultes.
- 10:36Entonces aquí colocamos enum. enum es
- 10:38como darle diferentes tipos de opciones.
- 10:41Entonces acá en esta sección dice editar
- 10:44valores en un set. Vamos a darle clic a
- 10:46esa opción y aquí vamos a ubicar o vamos
- 10:49a vamos a quedarnos solo con tres. Vamos
- 10:51a colocar acá F, M.
- 10:54Es importante que esos valores que
- 10:56estamos introduciendo acá coincidan con
- 10:57los valores de los inputs de tipo radio
- 11:00que hemos agregado o que hemos creado
- 11:02anteriormente. En nuestro archivo de
- 11:04index.php PHP. Tenemos input de tipo
- 11:07radio, ¿verdad? Tenemos acá la excepción
- 11:08de input radio name género, que esto va
- 11:12a ser para masculino y va para femenino.
- 11:14Esto va a ser para otro. Y el value de
- 11:17acá tiene que coincidir con esto de acá.
- 11:20No importa la posición, pero sí el value
- 11:23tiene que ser idéntico a cada una de las
- 11:25opciones. Si colocan acá femenino,
- 11:28entonces acá también tienen que escribir
- 11:29femenino. Entonces acá yo lo voy a dejar
- 11:31simplemente acortado f y acá lo voy a
- 11:34dejar como fculino de igual forma y para
- 11:36otros también. Y simplemente le doy en
- 11:38continuar. Y ahora sí esta columna me va
- 11:40a aceptar simplemente fm u o. Pasemos
- 11:42ahora al correo. Okay, acá voy a colocar
- 11:45email. va a ser de tipo barchart, va a
- 11:48tener aproximadamente 50 caracteres.
- 11:50Ahora pasemos a la contraseña. Acá voy a
- 11:52colocarle con N simplemente para no
- 11:54tener problemas de codificación y todo
- 11:57eso. Simple acá simplemente coloco
- 11:59contraseña y ya. Obvio la N. Y
- 12:01contraseña, pues no sé, 30 caracteres
- 12:04máximo que va a ser de tipo barcha.
- 12:06Finalmente vamos a almacenar el
- 12:08teléfono. Acabo de colocar teléfono y va
- 12:11a ser de tipo o también pueden colocar
- 12:13acá lo que es el tipo de dato big int,
- 12:17que va a aceptar grandes números
- 12:19enteros. Es importante también que eh
- 12:22muchas veces en lo que es la columna de
- 12:24teléfonos vamos a poder almacenar
- 12:26cadenas de texto porque generalmente en
- 12:28otros países el número empieza con el
- 12:30cero y el cero generalmente cuando
- 12:32colocamos cero al inicio se se borra o
- 12:35se elimina e ese cero. Entonces podemos
- 12:37tener algunos errores de almacenamiento
- 12:39por esa parte y a veces es recomendable
- 12:40almacenarlo en forma de string, pero
- 12:43como se en este caso mi número de
- 12:44teléfono arranca con nueve, o sea,
- 12:46parece arranca literalmente con un
- 12:48número entero. Entonces, no voy a tener
- 12:50ningún tipo de problemas. Pero ustedes
- 12:52si viven en otra parte del mundo, en
- 12:55algún recóndito del del mundo, en la
- 12:58selva o en el Congo, pues pueden colocar
- 12:59de igual forma. Y acá para teléfono
- 13:01simplemente voy a colocar unos 10. Ya
- 13:03quedó. El resto de las configuraciones
- 13:05lo vamos a dejar así tal cual. No vamos
- 13:07a dejar comentarios. Cotejamiento. El
- 13:09motor de almacenamiento va a ser y no
- 13:11deb. Vamos a darle simplemente en
- 13:13guardar. Ya tenemos creada nuestra
- 13:15tabla. Por esa parte tenemos ID,
- 13:17usuario, nombre, apellido, género,
- 13:18email, contraseña, teléfono. Eh, como
- 13:20podrás observar también por esa parte
- 13:21tenemos la opción de extra que dice
- 13:23autoincrement. Esta columna es algo
- 13:25especial, va a ser una llave primaria
- 13:28que va a ir aumentándose en cada
- 13:30registro. Ahora vamos a pasar a
- 13:32registrar los datos de nuestro
- 13:33formulario en una database. Sin antes
- 13:36mencionarte que te puedes suscribir a mi
- 13:38canal, ya somos 9,285
- 13:40personas. Me alegra mucho.
- 13:43Sí, 9,285 personas. Así es. Ya estamos a
- 13:46punto de llegar a la meta de los 10K. Va
- 13:49a ser una locura esto. Por primera vez
- 13:52llegando a los 10K. No sé en qué momento
- 13:54ocurra, pero bueno, vamos entonces a
- 13:56empezar con esta parte, el de register.
- 13:59Ya habíamos hecho acá lo que es la
- 14:01conexión, pero vamos a verificar si la
- 14:03conexión se hizo exitosamente o no. Para
- 14:07ello, simplemente vamos a colocar por
- 14:08esa parte un else y simplemente
- 14:11colocamos un eco que es como un print y
- 14:13vamos a decir conexión exitosa. Voy a
- 14:15desactivar el copilot por unos 40
- 14:18minutos. Entonces acá en nuestro
- 14:20proyecto vamos a acceder a el nombre de
- 14:24nuestro archivo que se llama connect.php
- 14:26PHP de esta manera y por esa parte nos
- 14:29dice conexión exitosa. Bien, entonces de
- 14:32esta forma vemos que la conexión sí se
- 14:35está eh desarrollando exitosamente. ¿Qué
- 14:37sucede, por ejemplo, si aquí coloco mal
- 14:40la base de datos formulario con doble O
- 14:42y acá vuelvo a acceder a esa misma URL
- 14:46con.php PHP me dice fatal error. My
- 14:50sequel exception me trae todo este
- 14:52error. Entonces, y es por eso que me
- 14:53trae este error, no se está realizando
- 14:55satisfactoriamente la conexión a nuestra
- 14:56base de datos. Ahora sí nos metemos de
- 14:58lleno a esta sección de register.php php
- 15:01donde vamos a almacenar los datos de
- 15:03nuestro formulario. Primero necesitamos
- 15:05incluir la conexión porque va a ser como
- 15:07la llave que va a abrir nuestra base de
- 15:08datos y poder registrar todos esos
- 15:10datos, valga la redundancia de nuestro
- 15:12formulario en nuestra database.
- 15:14Entonces, para incluir esa conexión,
- 15:15simplemente vamos a utilizar include,
- 15:17dimos paréntesis y acá colocamos el
- 15:19nombre que vendría a ser connect.php
- 15:22y colocamos un punto y coma. De esta
- 15:24forma ya estaríamos iniciando PHP.
- 15:26Bueno, ábreme la base de datos que voy a
- 15:28registrar los la información de este
- 15:30formulario. Enseguida voy a utilizar un
- 15:33condicional if. Esto va a ser necesario
- 15:35para verificar que una vez que yo le
- 15:37vaya a dar clic en el botón de submit en
- 15:38nuestro formulario, una vez que yo le
- 15:40vaya a dar clic acá, recién quiero que
- 15:41se registre los datos en mi database, no
- 15:44cuando los inputs sean vacíos o
- 15:46simplemente automáticamente se registren
- 15:48todos los datos del formulario, sino que
- 15:50una vez que yo le vaya a dar clic en el
- 15:52botón de crear cuenta, recién quiero que
- 15:54se eh en este caso almacene tod toda esa
- 15:56información en mi base en mi base de
- 15:58datos. Para ello vamos a utilizar iset y
- 16:00el super global post. Abrimos corchetes
- 16:03y acá colocamos registro. Esto nos va a
- 16:05traer el valor de true or false. Si es
- 16:08verdadero significa que nuestro
- 16:10formulario eh se ha enviado. Si en caso
- 16:13es falso, no se ha enviado. Este
- 16:15registro viene de acá. En nuestro
- 16:16index.html tenemos el botón de submit.
- 16:19Al final tiene el nombre de registro. Es
- 16:21por eso que este name es super
- 16:23importante en cada uno de los inputs
- 16:25para poder identificar cada uno de esos
- 16:26elementos. Entonces, el nombre que le
- 16:28hayan puesto acá en name al botón,
- 16:30tienen que colocarle también acá y set
- 16:32post registro en este caso. Dentro de
- 16:34esto vamos a utilizar otro condicional,
- 16:36pero este condicional va a ser para
- 16:38validar si nuestros input están vacíos o
- 16:40no. Esto generalmente se hace con
- 16:41JavaScript, ¿no? que bueno, nos dice
- 16:44muchas veces que validemos nuestro
- 16:46formulario en el lado del frontend, o
- 16:47sea, validemos con JavaScript usuario
- 16:50ingresa o no ingresa valores en nuestro
- 16:52input, entonces le mandemos un error y
- 16:54efectivamente se puede hacer de esa
- 16:56forma, pero para este caso vamos a estar
- 16:57haciéndolo con PHP y además ya por esa
- 17:00parte nuestro propio HTML ya viene con
- 17:04una propiedad llamada require en cada
- 17:06uno de los inputs que lo que hace es
- 17:07prevenir que nuestro formulario se vaya
- 17:09a enviar de forma vacía. Esto ya es
- 17:11nativo, es nativo de HTML que evita que
- 17:14nuestro formulario se vaya a enviar.
- 17:15Entonces, si yo acá le doy, por ejemplo,
- 17:16en crear cuenta, todos estos campos
- 17:18están vacíos, me dice, completa este
- 17:20campo. Y es por eso que estaríamos
- 17:22haciendo como una doble validación de
- 17:24formulario, algo así, pero igual nos
- 17:26vale. Acá voy a estar utilizando un
- 17:27método que se llama streng. Colocamos el
- 17:30superglobal post, identificamos en este
- 17:33caso el primero que va a ser nombre. Si
- 17:35esto es mayor o igual a uno, significa
- 17:37que hay valores, ¿no? Acá vamos a
- 17:39colocar mayor o igual a uno porque
- 17:41queremos que haya por lo menos un
- 17:44carácter dentro de cada uno de estos
- 17:45inputs. Vamos a volver a copiar esto
- 17:48rellink. Copiamos. Plegamos por esa
- 17:50parte. Acá en vez de nombre vamos a
- 17:52colocar apellido. Estos datos de
- 17:54apellido, nombre lo estoy sacando de el
- 17:57name de cada uno de mis inputs. Por
- 17:59ejemplo, acá en la sección de mi input
- 18:01de tipo texto dice nombre. Esto es para
- 18:04recibir el nombre, ¿verdad? Entonces
- 18:06tiene name, nombre, tiene el de
- 18:07apellido, tiene el name acá de género.
- 18:10Entonces cada uno de esos inputs lo
- 18:13estoy validando. Acá le estoy diciendo
- 18:15que por lo menos haya un carácter en
- 18:17cada uno de esos inputulos. Vamos a
- 18:19colocar de igual forma mayor o igual a
- 18:20uno, pero va a haber una variación con
- 18:22el otro tipo que es el de tipo género,
- 18:24¿no? Género en este caso no es un input
- 18:27de texto, así que no podemos utilizar
- 18:29ese trl para saber la longitud de esto,
- 18:31sino que más bien debemos validar si
- 18:34está marcado o no. Entonces acá
- 18:35simplemente podemos colocar iset dólar
- 18:38poster. Cerramos paréntesis. Bueno, acá
- 18:40no sería así. Y vamos a hacer lo mismo
- 18:43así tal cual con lo demás. Okay. Vamos a
- 18:45hacer lo mismo con, por ejemplo, en este
- 18:48caso stren
- 18:51stren ya no sería apellido. Después de
- 18:53género sigue email, contraseña y número
- 18:56teléfono. Entonces acá vamos a colocar
- 18:58mayor igual a 1 el email. Vamos a pegar
- 19:00nuevamente y acá vamos en vez del email
- 19:03colocar el password. Password. Ahí está.
- 19:06Y también apegamos el teléfono. Voy a
- 19:09colocar alt para ajustar el código.
- 19:11Entonces, esto lo podría hacer de esa
- 19:13forma, ¿no? Podría como tabular. Ustedes
- 19:16ya lo acomodan. Lo voy a dejar así tal
- 19:17cual. SRL leen, postnombre, apellido,
- 19:20género, email, password y finalmente de
- 19:23teléfono. ¿Qué hay con todos estos
- 19:25valores? que si esto tiende a verdadero
- 19:28significa que cumple las condiciones.
- 19:30Entonces vamos a estar creando nuestras
- 19:32variables para poder almacenar los datos
- 19:34de esos formularios. En caso de que no
- 19:36se cumpla acá, vamos a colocar un else.
- 19:38Simplemente vamos a mandar una alerta.
- 19:41Aquí voy a utilizar un script script y
- 19:43acá dentro voy a mandar una alerta.
- 19:45Simplemente voy a decir alert. Por
- 19:46favor, rellene todos los campos. Y acá
- 19:50simplemente colocamos window. History o
- 19:53History back para regresar al formulario
- 19:56en caso de que esté vacío nuestro
- 19:57formulario. Ahora, el nombre que yo
- 20:00agregue acá, el apellido que yo agregue
- 20:02acá, la opción que marque acá, los
- 20:05inputs de aquí abajo que yo agregue,
- 20:07vamos a almacenarlo dentro de una
- 20:09variable, pero dentro de PHP para
- 20:11posteriormente esas variables agregar en
- 20:14nuestra tabla de nuestra base de datos.
- 20:16Así que vamos a estar creándonos un par
- 20:17de variables. Entonces, para eso voy a
- 20:19crearme acá una variable llamada nombre.
- 20:21Voy a crearme una variable llamada
- 20:23apellido, género, ¿verdad? Género, otra
- 20:25variable llamada email, una variable
- 20:27llamada password y una variable llamada
- 20:30teléfono. Para nombre vamos a estar
- 20:32utilizando el método trim para
- 20:33simplemente obtener los caracteres y que
- 20:35no nos cuele algún espacio en blanco.
- 20:38Así que vamos a utilizar trim, elimina
- 20:39espacios en blanco, básicamente el
- 20:41método trim y dentro vamos a utilizar el
- 20:44super global post dólar post y obtenemos
- 20:47el nombre. Nombre y obtenemos el nombre
- 20:49de esta forma. nombre. Esto, recuerden,
- 20:51de igual forma es lo que identifica a
- 20:54cada uno de nuestros inputs, ¿okay?
- 20:55Revisen que sea igual, les pueda traer
- 20:58algún error si es que se fall en algún
- 21:00carácter. Para el apellido vamos a estar
- 21:01haciendo lo mismo, tram dólar post, ya
- 21:03colocamos apellido. Para el género vamos
- 21:06a estar haciendo casi lo mismo. Ya no
- 21:07vamos a utilizar el método tram porque
- 21:09no es un string. Simplemente colocamos
- 21:11acá un post y colocamos género punto y
- 21:14coma. Recuerden en los puntos y comas
- 21:15también dólar post email. para la
- 21:18contraseña de igual forma post password
- 21:21y finalmente para el teléfono dólar post
- 21:24teléfono. Asegúrense de que sea igual
- 21:26nombre, a ver, nombre, nombre, pedido,
- 21:29género, email, género, email, teléfono y
- 21:33password, ¿verdad? Está bien. Una vez
- 21:35que ya tenemos almacenado esto, de hecho
- 21:37voy a colocar alt para que toda esta
- 21:39línea esté en una sola y no sea muy
- 21:41engorrosover. Ahora vamos a necesitar
- 21:44hacer como una inyección para nuestra
- 21:46tabla. Tienen que tener en cuenta algo
- 21:48acá y es que si yo directamente hago un
- 21:52include a mi tabla de todos estos
- 21:54variables que he creado, no todos son
- 21:56del mismo tipo, ¿no? O sea, nombre es en
- 21:59este caso una información que si yo
- 22:02almaceno en una base de datos significa
- 22:04que no voy a tener ningún problema. A lo
- 22:06que voy es que si por ejemplo yo
- 22:09almaceno password literalmente en mi
- 22:11base de datos textualmente, puedo sufrir
- 22:13ataques y fácilmente el ladrón o el
- 22:16hacker puede obtener la contraseña de de
- 22:20ese formulario, lo cual es super
- 22:22inseguro. Para ello necesitamos
- 22:24encriptarlo. PHP nos da algunos métodos
- 22:26para poder lograr eso. Así que por esa
- 22:27parte voy a crearme una variable llamada
- 22:29password seguro, password seguro de esa
- 22:31forma y voy a estar utilizando el método
- 22:33password hash. Este método como primer
- 22:36parámetro va a aceptar la contraseña que
- 22:39queremos encriptar, que va a ser dólar
- 22:41password. Y como segundo parámetro va a
- 22:44ser el algoritmo, en este caso va a ser
- 22:46password default. PHP va a elegir el
- 22:48mejor algoritmo para nosotros por
- 22:50defecto. Una vez hecho esto, ya nuestra
- 22:52contraseña estaría criptada. Acá
- 22:55password seguro, le voy a cambiar a
- 22:56password segura. Y una vez que ya tenga
- 22:58esto recién acá, puedo armar la
- 23:00consulta. puedo decir consulta, igual
- 23:03inserto. Acá colocan el nombre de la
- 23:06tabla, ¿okay? Nombre, tabla. ¿Cómo se
- 23:08llama su tabla? En este caso, en el mío,
- 23:10pues como habíamos creado anteriormente,
- 23:12la tabla se llama registro. Aquí está.
- 23:14Esta es la base de datos formularios,
- 23:16pero la tabla se llama registro.
- 23:17Entonces, acá coloco registro. Y acá
- 23:20vamos a a incluir el nombre de nuestras
- 23:23columnas de nuestra tabla. La primera
- 23:25columna de nuestra tabla es el ID, pero
- 23:26el ID obviamente eh pertenece a esta
- 23:28tabla en específico que va a ir a
- 23:30autoincrementándose, ¿verdad? Lo que sí
- 23:32necesitamos obtener de nuestro
- 23:33formulario es el nombre. Así que vamos a
- 23:34empezar con el nombre acá. Nombre, luego
- 23:36está el apellido, luego está el género,
- 23:39luego está el email, luego está la
- 23:42contraseña, contraseña y finalmente está
- 23:46el teléfono. Tiene que estar escrito tal
- 23:48cual como en su base de datos, como en
- 23:50su tabla de su base de datos. Vamos a
- 23:52colocar un punto y coma al final. sin
- 23:54antes sin antes especificar los valores
- 23:57que va a tomar cada columna values. En
- 23:59vez de pasarle directamente nuestras
- 24:03variables, nuestras variables, o sea,
- 24:05nuestras variables, nombra, apedido, el
- 24:06valor de cada una de las variables,
- 24:08pasar directamente a cada una de las
- 24:10columnas, vamos a estar pasándole una
- 24:13plantilla. Este es el método seguro de
- 24:15hacerlo. Pasamos plantillas a cada una
- 24:18de las columnas, le decimos, "Ey,
- 24:20todavía no voy a agregar los valores a
- 24:22cada columna." Así que simplemente te
- 24:25voy a pasar por mientras una plantilla.
- 24:27¿Y cuántas van a ser? Pues en este caso
- 24:29la cantidad de columna que tenemos que
- 24:30vendrían a ser seis. Entonces acá vamos
- 24:32a colocar 3 cu 5 y seis plantillas.
- 24:36Entonces acá esta comilla lo voy a
- 24:37trasladar al final y así quedaría
- 24:40nuestra consulta. inserito, registro el
- 24:42nombre de nuestra tabla, el nombre, los
- 24:45nombres de nuestras columnas y los
- 24:47valores que todavía no se saben que es
- 24:49lo que voy a pasar cada uno. Una vez
- 24:51hecho esto, voy a crearme una variable
- 24:52llamada sentencia statement STMT y voy a
- 24:56enviar esta plantilla a mi servidor de
- 24:58base de datos para ya posteriormente
- 25:00pasarle los valores de cada input. Así
- 25:03que acá simplemente voy a decir con
- 25:06flechita y pico paréntesis, con prepar y
- 25:10nuestra variable consulta. y com en esta
- 25:12línea le estamos diciendo, servidor,
- 25:13prepárate porque te voy a pasar los
- 25:16datos, la información de cada uno de los
- 25:19inputs. Y una vez que el servidor ya
- 25:21esté ready, ya esté listo, recién le
- 25:23vamos a pasar nuestras variables htmt gu
- 25:26flechita, vamos a estar utilizando pin
- 25:28su guion param, que es un método. Y acá
- 25:30en el primer parámetro vamos a pasarle
- 25:32los tipos de datos que estamos
- 25:35almacenando en cada columna. Por
- 25:37ejemplo, para el nombre, esto es un tipo
- 25:38de dato string, así que vamos a colocar
- 25:40la inicial de esa palabra. String
- 25:43vendría a ser una s. Este también, el
- 25:45apellido, vendría a ser una S, o sea, de
- 25:47string. Género vendría a ser una S.
- 25:50Email, vendría a ser una S, el password
- 25:53vendría a ser una S. Y el teléfono
- 25:55vendría a ser una S. Pero anteriormente
- 25:57no almacenaste el valor del teléfono
- 26:00como un entero.
- 26:01Sí, efectivamente. Anteriormente sé que
- 26:03había mencionado que el teléfono lo
- 26:06estaba almacenando como un número, como
- 26:08un big, pero para esta ocasión voy a
- 26:10almacenarlo como una cadena de texto
- 26:13para que veas que también funciona. My
- 26:15Sequel cuando agarra ese dato e intenta
- 26:17colocarlo en una celda, lo que hace es
- 26:21convertir ese string a un número. ¿Por
- 26:23qué? porque dice, "No, okay, tengo que
- 26:25aceptar esta cadena de texto, pero esta
- 26:27celda es de tipo entero, es de tipo
- 26:30numérico. Voy a tratar de convertirlo a
- 26:32un número a ver si se puede. Si en la
- 26:34cadena de texto solo existe números,
- 26:36pues bien, se va a poder almacenar en
- 26:38esa base de datos, pero si no, pues no
- 26:40va a poder almacenarse, te va a botar un
- 26:42error en este caso. Una vez hecho esto,
- 26:44entonces acá voy a colocar una coma y
- 26:46recién le voy a pasar mis variables. En
- 26:49este caso, nombre, apellido, género,
- 26:53email, también está el password, también
- 26:56está el teléfono, ¿verdad? Teléfono son
- 26:59seis, hay que acordarnos, 3 4 5 6 porque
- 27:03vamos a tener algún problema si es que
- 27:05no coinciden. Eso también tiene que
- 27:06haber seis los tipos de datos 2 3 4 5 6.
- 27:09Efectivamente, hay seis. Acá vamos a
- 27:11colocar un punto y coma también al final
- 27:13y ahí quedaría. Una vez hecho esto,
- 27:15vamos a ejecutar. ¿Cómo ejecutamos?
- 27:17Simplemente decimos STM. Execute.
- 27:20Colocamos una flechita, ¿okay? Flechita
- 27:22execute execute.com. Bien, vamos a ver
- 27:25si está todo si está funcionando. Vamos
- 27:28a actualizar por si acaso. Vamos a
- 27:30ingresar nombre, el apellido. De igual
- 27:32forma opción, en este caso femenino, un
- 27:35[email protected],
- 27:38contraseña y también un número de
- 27:40teléfono y voy a darle en crear cuenta.
- 27:42Acá me traigo un error, me dice una TV
- 27:44formulario ink. Al parecer me olvidé
- 27:46corregir el nombre de mi base de datos.
- 27:50Acá formulario.
- 27:51Estuvimos haciendo la prueba para ver si
- 27:53estaba todo y vamos a volver a ejecutar.
- 27:55Me dice conexión exitosa y tengo otro
- 27:57error acá. Nefy metod my sequel este
- 27:59bind param. Tengo este error de bind
- 28:02parm. Vamos a dar volver a register.php
- 28:05y acá vamos a escribir correctamente
- 28:07para vamos a actualizar nuevamente. Y me
- 28:09dice conexión exitosa. Perfecto. Ahora
- 28:12voy a volver y voy a revisar mi base de
- 28:14datos. Voy a volver a actualizar y ya
- 28:16acá tenemos ya nuestros datos en nuestra
- 28:19base de datos. ID usuario me lo
- 28:21identifica como uno. Nombre, aquí está
- 28:23el apellido también. El género se
- 28:26almacena como fal cual como habíamos
- 28:28escrito. El email ahí está nuestro
- 28:30correo, la contraseña. 1 2 3 4 teléfono.
- 28:33Ahí está. Perfecto. ¿Se habrán dado
- 28:35cuenta que aquí la contraseña no se está
- 28:38almacenando de forma encriptada? Vamos a
- 28:40corregir eso. Eso es muy simple. ¿Por
- 28:42qué? Porque acá en bint en bint hemos
- 28:45considerado la variable password acá la
- 28:48variable password, pero habíamos creado
- 28:51una contraseña segura por aquí abajo que
- 28:53se llama password segura. Entonces en
- 28:55vez de colocar password no más acá vamos
- 28:57a colocar password subi segura y ahora
- 29:00sí vamos a registrar nuevos datos y vas
- 29:02a ver que va a aparecer de forma
- 29:03encriptada. Voy a actualizar nuevamente
- 29:05acá. Voy a agregar nombres Rogelio,
- 29:07otro. Voy a agregar una contraseña. Voy
- 29:09a agregar un correo, una contraseña y un
- 29:12número de teléfono. Voy a darle el crear
- 29:14cuenta y me dice conexión. Voy a
- 29:16regresar acá. Voy a actualizar
- 29:18nuevamente mi base de datos. Acá me dice
- 29:212 Rogelio Sánchez y almacené otro
- 29:24[email protected].
- 29:26Y verá que acá la contraseña ya aparece
- 29:28de forma encriptada, ¿verdad? Ya no
- 29:29aparece textualmente o literalmente no
- 29:32aparece la contraseña. Obviamente esto
- 29:33es muy difícil de descifrar. Tienen que
- 29:36tener en cuenta también que no todo es
- 29:37seguro, así que no hay que decir que sea
- 29:40algo imposible de desencriptar, pero
- 29:42bueno, ya es una ya es una seguridad que
- 29:45se le agrega a esto. Perfecto. Entonces,
- 29:48de esta forma ya habríamos logrado
- 29:50registrar los datos en un de nuestro
- 29:52formulario de una base de datos. Pero
- 29:54vayamos a hacer algunas algunas cosas
- 29:55más. Una vez que nosotros ejecutemos,
- 29:58una vez que los datos de nuestro
- 29:59formulario ya se hayan registrado, es
- 30:02necesario cerrar la conexión. Esto es
- 30:04muy importante para evitar hackeos por
- 30:07medias de seguridad y todo ello. Voy a
- 30:08agregarme por esa parte un condicional
- 30:10para agregar un par de cosas para decir
- 30:12al usuario también que se ha registrado
- 30:14correctamente o si hubo un error.
- 30:15Entonces acá voy a utilizar un
- 30:17condicional. Voy a decir si statement
- 30:19execute se hizo satisfactoriamente,
- 30:22en ese caso voy a mandar una alerta. En
- 30:25caso de que no, también voy a mandar una
- 30:26alerta. Voy a copiarme todo esto y lo
- 30:28voy a pegar por acá. Y acá en vez de
- 30:30decir rellene todos los campos, voy a
- 30:32decir te has inscrito correctamente. Y
- 30:35acá voy a decir windows. Location.
- 30:38Location va a ser igual a index.php.
- 30:41Vamos a redirigir al usuario a index.php
- 30:45que se pueda loguear una vez que se haya
- 30:46registrado, ¿no? En caso de que no. Acá
- 30:49de igual forma pego esto, voy a mandar
- 30:51una alerta y voy a decir, "¡Ups, ocurrió
- 30:54un error, "Ups, ocurrió un error." Y acá
- 30:57voy a copiarme esta línea de código, lo
- 30:58voy a reemplazar por esta parte para
- 31:00poder regresar nuevamente a que ingrese
- 31:01o corrija los datos ingresados al
- 31:04formulario. Para que regrese al
- 31:05formulario. Una vez hecho esto, acá por
- 31:07esta parte voy a cerrar la conexión.
- 31:10Para cerrar la conexión,
- 31:11independientemente de si se haya en este
- 31:14caso ejecutado esto o esto, vamos a
- 31:16cerrar la conexión acá y vamos a
- 31:17decirmt.
- 31:21Y de esta forma cerramos la conexión.
- 31:24Esto es super importante, ¿okay? Una vez
- 31:26que estás hablando, por ejemplo, con
- 31:27alguien, cuelgas la llamada, ¿verdad?
- 31:29Entonces, igualito acá tienes que colgar
- 31:32la conexión para que no haya pues este
- 31:35alguna conexión activa y algún hacker
- 31:39algún tipo malicioso quiera robarte
- 31:41información. Por eso que STMT. Close al
- 31:44final de después de abrir la conexión es
- 31:46super importante hacer esto. Vamos a
- 31:48probar nuevamente. Vamos a agregar un
- 31:50dato más, un registro más. Vamos a
- 31:52agregar un nombre, un apellido, un
- 31:54correo, contraseñas y un número de
- 31:57teléfono. Vamos a darle en crear cuenta
- 31:59y me dice, "Te has inscrito
- 32:01correctamente." Vamos a darle
- 32:02simplemente en aceptar y nos devuelve a
- 32:05nuestro formulario. Vamos a revisar en
- 32:07este caso nuestra database y se ha
- 32:09registrado exitosamente. Y acá tenemos
- 32:11nuestro registro, nuestro tercer
- 32:13registro, Lucas, el apellido, el género,
- 32:17el correo, la contraseña que está
- 32:19encriptada y el número de teléfono.
- 32:21Entonces de esta forma podemos realizar
- 32:24el registro de datos de un formulario en
- 32:27una database, en este caso utilizando
- 32:29PHP My Admin, en este caso ayudándonos
- 32:31de My Sequel. Y una cosa acá que deben
- 32:34tener en cuenta también es que hay
- 32:37correos repetidos, ¿verdad? Generalmente
- 32:39los correos son únicos, así que si te
- 32:42interesa que haga otra parte de cómo
- 32:44evitar este comportamiento de duplicados
- 32:47dentro de una tabla o una base de datos,
- 32:49déjamelo saber en la caja de
- 32:50comentarios. De igual forma, deja tu
- 32:52like y voy a estar haciendo una segunda
- 32:53parte para poder absolver este problema
- 32:56o esta duda que tienes para evitar el
- 32:58registro doble de los datos. Así que
- 33:00hasta acá el video de hoy, espero que te
- 33:02haya gustado. Nos vemos en un próximo
- 33:05capítulo. Suscríbete al canal, comenta.
About this transcript
This page contains the full transcript of Conectar Formulario a Base de Datos MySQL con PHP - Tutorial 2026 by Michael Daniel, generated from the public captions YouTube serves with the video. The transcript has 6,138 words across 909 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.