You are on page 1of 37

PhpMyAdmin

El Phpmyadmin es un programa que suele estar instalado en los servidores decentes y


que nos ayuda a crear y modificar bases de datos e incluso consultar, aadir, modificar o
eliminar los datos guardados en ellas con mucha facilidad. No todos los servidores
gratuitos disponen de este programa, de hecho algunos no te ofrecen ni siquiera una
base de datos, con lo cul no te hara falta el Phpmyadmin, claro. Pero cada da que pasa
son ms lo que ya lo estn ofreciendo. En cuanto a los servidores de pago, casi todos te
ofrecen algunas bases de datos para usar y acceso al Phpmyadmin. En la seccin
Hosting y Dominios de CCTW puedes ver algunos servicios de hosting que s te ofrecen
todo esto. En cualquier caso, puedes consultar con tu hosting actual si dispones estas
cosas.
Para acceder al Phpmyadmin has de entrar primero al panel de control de tu servicio de
hosting. Con suerte el panel ser del tipo Cpanel que es el que vamos a explicar en
CCTW. De todas formas, si es otro distinto no variar mucho y te servirn igual todas
estas explicaciones. El Phpmyadmin es el mismo sea cual sea el panel de control del
hosting.
Para acceder entonces al Phpmyadmin hay que entrar antes al panel de control de tu
servidor. Normalmente puedes acceder a tu panel de control Cpanel escribiendo la
direccin de tu web seguida de /cpanel. Si lo escribes en tu navegador te aparecer una
ventana preguntndote el nombre de usuario y la contrasea de tu hosting.

Si has adivinado tu contrasea entrars a tu Cpanel y vers a la derecha un montn de


iconos. Busca y haz clic en el que te sealo aqu debajo:

Al hacer clic all te aparezca otra pantalla del Cpanel desde la que puedes crear una base
de datos y un usuario con clave para acceder a la misma. La pantalla es esta:

Escribe ese nombre para la base de datos y pulsa sen "Create Database". Tras unos
segundos Cpanel te comunica que la base de datos ha sido creada con este mensaje:

Ya est creada nuestra primera base de datos para hacer pruebas. Si en la misma ventana
que tenemos arriba pulsamos en "Go Back" que significa "volver" y nos encontramos
con esto:

He sealado con un crculo rojo el nombre de la base de datos recien creada. Como ves,
su nombre completo est formado por el nombre de usuario que tienes para acceder al
panel de control seguido de un guin bajo y despus el nombre que le diste a la base de
datos hace unos segundos. Recuerda esto cuando en alguna parte te pidan dar el nombre
de la base de datos pues no es solo el que t pusiste sino que va precedido del nombre
de usuario del panel de control ms el guin bajo.
Otra cosa de la que me acabo de dar cuenta. No te molestes en colocar guiones bajos
pues se los salta y coloca las palabras juntas. Tras unas pruebas he visto tambin que si
dejas un espacio en blanco no hace caso de lo que hay detrs de este. As que escribe el
nombre de la base de datos todo junto y sin guiones y listo.
Justo al lado derecho del crculo rojo tienes una opcin (Delete) para borrar la base de
datos con todo su contenido (ahora mismo no tiene contenido), la opcin de chequearla
(Check) y la opcin de reparala (Repair). Debajo de todo eso vuelves a tener el recuadro
anterior por si quieres crear otra base de datos ms.
Ms abajo an tenemos ms opciones. La siguiente nos permite crear usuarios para
acceder (no al panel de control del hosting sino) a la base de datos que le indiquemos
ms tarde. Ah por el momento solo creamos usuarios y ms tarde indicamos qu
usuarios pueden acceder a qu bases de datos.
Vamos a crear ahora un usuario. Para ello es suficiente con escribir el nombre de usuario
y la contrasea en este recuadro de abajo:

Para no hacerte un lo, ms te vale que te vayas apuntando en un papelito tu nombre de


usuario y contrasea de tu panel de control y por otro lado el nombre de usuario y
contrasea para esta base de datos. De lo contrario quizs se te olvide. Como siempre, el
nombre de usuarios no tendra smbolos raros ni acentos ni maysculas ni espacios en
blanco ni guiones, para evitar problemas.
Una vez que pulsas "Create User" que significa "Crear Usuario" te aparece una pantalla
de confirmacin como esta:

Ale, usuario creado. Despus de pulsar de nuevo en "Go Back", que ya sabes lo que
significa, vers como aparece el usuario... pero... anda! Igual que ocurre con la base de
datos, al usuario se le antepone tambin el nombre de usuario del panel de control
seguido de un guin bajo. Recurdalo vale? En este ejemplo por tanto el usuario creado
tiene el nombre cartago_pepe.
Pasamos a la tercera parte. Ahora hay que decir qu usuario puede acceder a qu base de
datos y qu poderes va a tener sobre ella. Ahora mismo esto no tiene mucho sentido,
pues solo tenemos una base de datos y un solo usuario, pero cuando tienes varias bases
y usuarios tiene su sentido.
Esto se hace en la siguiente ventana de aqu abajo:

Esto es fcil tambin, donde pone "user" eliges el usuario (solo tienes uno, te ser fcil
saber cul escoger, no?), donde pone "database" escoges la base de datos a la que
quieres que pueda acceder ese usuario y debajo te aparecen todas las cosas que le dejas
hacer, los permisos que va a tener. Normalmente este usuario es para t, por lo que te
puedes y debes dar todos los poderes. Y como en ingls todo se escribe "All", marcas
esa casilla y listo, es como si hubieras marcado todas las de la derecha.
Quizs en un futuro quieras crear otro usuario para que acceda un amigo, o un visitante.
En ese caso puedes volver a hacer lo mismo pero limitando los permisos, marcndo solo
lo que le dejas hacer en la parte de la izquierda, donde estn todas esas opciones. Te
comento rpidamente lo que significa cada una, pero no creo que lo uses, al menos por
ahora.
Select es para seleccionar datos solamente, insert para insertar datos en la base de datos,
update para cambiar el valor de los datos, delete para elimimar, create permite crear
tablas, drop creo que vaciarlas, lock bloquearlas y el resto.... an no lo se... ;( para qu te
voy a engaar, no?
Tras activar la casilla de All haz clic en "Add User To Database" que significa "Asociar
al usuario a la base de datos" y listo, todo preparado para continuar.

Conectar con la Base de Datos


Este punto es muy interesante tanto para seguir con las explicaciones como para alguna
vez instalar un foro en tu servidor tipo PhpBB, SMF, vBulletin, o cualquier otro de esos
que vienen hechos, o para instalar un blog, o un albm de fotos, o cualquier aplicacin
que te pida tener una base de datos activa, as que, presta atencin.
Los datos que tienes ahora para acceder a la base de datos son los siguientes:
Nombre de la base de datos:
nombredeusuariodelpaneldecontrol_nombredelabasededatos
Nombre de usuario de la base de datos:
nombredeusuariodelpaneldecontrol_nombredeusuariodelabasededatos
Contrasea:
la que has puesto, tal cul (esto no va con el nombre de usuario delante).
Host:
localhost (el 95% de las veces vale con poner localhost
Si alguna vez instalas algn programa en tu hosting o servidor y te pide tener una base
de datos, estos son los datos que has de darle, vale?
En el caso del ejemplo que os he puesto estos datos seran:
Nombre de la base de datos: cartago_basedepruebas
Nombre de usuario de la base de datos: cartago_pepe
Contrasea: noteladigo
Host: localhost

Acceder al PhpMyAdmin
Bueno, ahora que sabemos un poquito de Php y tenemos la base de datos creada
podemos ya aprender a insertar datos en ella. Primero veremos cmo incluir datos
usando el PhpMyAdmin y ms tarde crearemos unos formularios en Php para hacer lo
mismo pero de un modo ms cmodo, desde nuestra propia web.
Para acceder al PhpMyAdmin tienes que entrar en el panel de control de tu servidor. Si
dispone de Cpanel encontrars el icono de acceso a PhpMyAdmin que es como este (el
de abajo de la imagen):

Recuerda que para entrar en tu Cpanel tienes que escribir en tu navegador la direccin
completa de tu web (tu dominio) seguido de /cpanel y rellenar tu nombre de usuario del
hosting (no el de la base de datos an) y la contrasea correspondiente.
Al entrar vers una pantalla como esta:

Tachaaaan!! Espero que tengas suerte y est en espaol, je je je. Si lo tienes en ingls no
te ser muy dificil seguir el curso creo, pues te mostrar dnde has de hacer clic y
pondr algo parecido.
En la parte izquierda de esa ventana, la parte oscura, puedes ver una lista de las bases de
datos existentes. En mi caso, la imagen de arriba, aparece la que hemos creado
siguiendo las instrucciones de antes y otra que debe ser de alguna aplicacin del
servidor, no estoy seguro, as que la dejo ah tranquila.
El nmero que aparece entre parntesis a la derecha de cada base de datos de esa
columna representa la cantidad de tablas que contiene esa base de datos. Nuestra base
de datos de ejemplo est vacia y por eso pone (0). La otra como ves si tiene varias
tablas.
Del resto de enlaces y opciones que vemos en la parte de la derecha no vamos a usar
nada an, lo haremos todo desde la base de datos de pruebas, llamada
cartago_basedepruebas en mi caso y tunombreusuario_basedepruebas en el tuyo.
Para empezar a jugar tenemos que crear la primera tabla de datos, vamos all.

Crear la Base de Datos


Por si no te lo he dicho, una base de datos est formada por una o varias tablas de datos.
Luego, cada tabla de la base de datos contiene datos. Nosotros ya tenemos creada la
base de datos, pero nos falta crearle tablas dentro donde guadar los datos.
Para crear una tabla nueva en la base de datos basedepruebas primero hacemos clic (con
un solo clic es suficiente) en el nombre de la base de datos de prueba, en la lista de la
izquierda de la ventana del PhpMyAdmin. Aparece esto:

Lo siguiente parece sencillo, verdad? Escribimos el nombre de la nueva tabla en el


hueco en blanco que hay a la derecha de Nombre y ponemos el nmero de campos en el
recuadro de al lado. Luego pulsamos en Continuar y listo. Vamos a escribir siempre los
nombres de las tablas con todas las letras en mayscula, oki? Se pueden usar tambin
las minsculas, pero asi las distinguiremos mejor dentro de los cdigos Php.
Recurdalo.
A esta primera tabla la llamaremos USUARIOS y le colocaremos 4 campos. Pero qu es
un campo? Pues no, no es un montn de tierra con arbolitos y tal, lo siento. Los campos
son las distintas informaciones que queremos guardar. Por ejemplo, si queremos guardar
en una tabla el nombre de los usuarios, su e-milio, su direccin web y su estado (activo
o inactivo), cada una de estas informaciones distintas es un campo. Por tanto, para esos
datos que comento necesitaramos 4 campos, o mejor, 5 campos si aadimos uno ms
que usaremos para almacenar el nmero de usuario, algo as como su nmero de socio.
Vamos a crear entonces esa tabla de USUARIOS con sus 5 campos escribiendo esto que
ves en la imagen de abajo:

Tras pulsar en "Continuar" veremos esto:

Ufff, esto si que suena a chino, ja ja ja ja. Nos aparecen un montn de datos a rellenar
para cada uno de esos 5 campos que queremos para la nueva tabla. En la imagen de
arriba puedes ver unos cuantos, pero si mueves la barra de desplazamiento de tu
navegador en tu PhpMyAdmin hacia la derecha an vers unos pocos ms. Vamos a ver
lo que significa cada uno de esos huecos para poder rellenarlos, oki? Una vez relleno no
hay que tocarlo ms, as que merece la pena seguir.

Campo
En esta primera columna escribiremos el nombre que queremos para identificar a ese
campo concreto. Nosotros queramos crear los campos nombre de usuario, direccin de
correo, direccin de la pgina web del usuario y si est activo o no (por si queremos
desactivar a alguno que se porte mal.... je je je) por tanto los nombres que pondremos
sern estos:

Al igual que con los nombres de las tablas, los escribiremos en maysculas y sin
espacios en blanco. Cuando sea necesario separar lo haremos con guiones bajos pero
intentaremos evitarlo. El primero de los campos lo he llamado ID (de Identificador) y es
donde guardaremos el nmero de usuario.

Tipos
Los datos que podemos guardar en una base se pueden clasificar en distintos tipos.
Como no se consideran igual una fecha, que un nmero, ni un texto de unas pocas letras
a un texto largo, ni un nmero entero que uno decimal, se han creado varios tipos
distintos. En esta columna de PhpMyAdmin debemos seleccionar el tipo que queremos
para cada uno de los campos creados.

El asignar un tipo a cada campo es para optimizar la base de datos y agilizarla. Al igual
que es una tonteria tener un garaje para guardar un patinete, sera un desperdicio
reservar un hueco grande de memoria para almacenar un dato que suele ser pequeo. Es
por eso que interesa asignar a cada campo el tipo adecuado, para no desaprovechar.
Vamos a ver de una pasada rpida estos tipos:
Juas!!! De verdad que yo ceia que haba menos tipos de tipos! ja ja ja, me he asustado
cuando he abierto el desplegable, madre ma... Bueno, si te parece bien (d que s por
favor, ja ja ja) solo explicar aqu los que vamos a usar en este ejemplo e iremos viendo
algn otro conforme lo usemos ms adelante. Si no no terminamos las explicaciones
nunca, je je je, qu disparate.
Bueno, pues por eso de aprovechar al mximo, daremos a cada uno de esos campos el
tipo de dato adecuado al mximo valor que cada campo pueda tener, o lo que es lo
mismo, si el coche ms grande que puedo llegar a tener puede tener 5 metros de largo,
escoger un garaje de 5 metros de largo como mucho, para no desperdiciar espacio.
El campo ID va a ser entonces un nmero entero (entero significa sin parte decimal, sin
comas) y como mucho imagino que tendremos unos 9999 usuarios registrados (no
estara mal para empezar verdad? je je je). Le asignamos entonces un tipo de dato que

acepte nmeros enteros de hasta 9.999, es decir, nmeros de hasta cuatro cifras. Un tipo
correcto para este dato ser SMALLINT que significa "pequeo entero" y acepta
valores de nmeros enteros hasta el 65535... y eso que es SMALL! je je je.
Al campo NOMBRE le asignaremos un tipo de dato que acepte letras y como mximo
tendr unos 50 carcteres (espacios) as que le daremos el tipo VARCHAR. Es un tipo
de dato que admite valores de hasta 255 carcteres de largo y que ocupar un espacio
proporcional a la cantidad de letras que tenga.
El campo EMAIL solo se diferencia del anterior en la arroba, y como se admite como
carcter usaremos tambin el tipo VARCHAR para l. Aplicaremos tambin VARCHAR
para el campo URL.
El campo ESTADO es solo para saber si el usuario est activo (si puede entrar en la
web) o si por el contrario ha sido desactivado, por mal comportamiento o por lo que sea.
Para saber el estado solo necesito dos valores que pueden ser "Activo" e "Inactivo" por
lo que usaremos el tipo ENUM. Los tipos ENUM se usan cuando se va poder elegir de
entre una serie de valores ya conocidos, en nuestro caso, Activo e Inactivo nada ms.
Por ahora nos quedamos con con solo esos tipos, ya veremos otros ms adelante. La
columna donde asignamos los tipos a cada campo quedar entonces as:

Longitud y Valores
Esta columna no es tan complicada. Aqu se coloca la longitud mxima que puede llegar
a tener un dato de cada uno de los campos. Existen casos en los que podemos elegir qu
valores concretos puede tomar un campo. Por ejemplo, aceptar solo los valores
"soltero", "casado", "viudo", "divorciado" y "separado". En esos casos sera aqu
tambin donde se indicaran esos valores posibles, pero eso lo vemos mejor con el
ejemplo del ESTADO Activo e Inactivo.
Colocamos aqu entonces la longitud mxima del valor ms largo que creemos que
podemos llegar a tener. No se refiere al valor mximo, sino a lo largo que va a ser el
datos ms largo en ese campo. Por ejemplo, el nmero 10000 es 5 cifras de largo, el 3 es
de una cifra de largo, la palabra "capica" es de 7 carcteres de largo, no? Pues ese es el
dato a poner en esta tabla, el largo mximo que podra llegar a tener un valor.

Si te fijas en lo que hemos puesto en el ltimo campo vers que en lugar de la longitud
hemos escrito todos los valores que permitimos que pueda tener el campo ESTADO, es
decir, Activo e Inactivo. Para escribir en ese hueco los valores posibles hay que hacerlo
separando cada uno con una coma y encerrando cada uno con comillas simples, que se
escriben con la tecla que hay junto al cero en el teclado. Ahora ya sabe que si intentas
poner otro valor distinto a esos te saldr un error.
Qu, a que parece que se mucho de esto? Ja ja ja, lo cierto es que lo acabo de leer en la
parte de abajo de esa misma pantalla del PhpNyAdmin, je je je je. Mira, pone esto:

No te preocupes mucho por ninguno de los valores de todas estas caractersticas pues se
pueden modificar ms adelante.

Cotejamiento
Esta palabra tan rara es para indicar qu tipo de codificacin queremos usar para los
valores de estos campos. Si fueras chino necesitarias codificar los datos con un tipo de
cotejamiento que admitiera los smbolos chinos, al igual que si fueras musulman o en
definitiva si quisieras escribir con signos raros. Nosotros no somos tan normales
tampoco, pues querremos aceptar la o los acentos en nuestros valores (aunque no
suelas usarlos... je je je), as que tendremos que escoger el tipo de cotejamiento
adecuado.

Si abres el desplegable vers que se muestran un montn de tipos que por supuesto no
voy a explicar uno por uno, je je je. Nos conformaremos con saber que tomando uno de
ellos no tendremos problemas con nuestros valores. Escogeremos el tipo de
cotejamiento "utf8_spanish_ci" quedando as nuestro ejemplo:

O mejor an, dejamos esos huecos en blanco y escogemos el cotejamiento


utf8_spanish_ci pero en la parte de abajo. En esa parte indicamos el cotejamiento de

toda la tabla, con lo que dejar de ser necesario indicar el cotejamiento de cada campo.
Te indico en la imagen de abajo dnde escojer el cotejamiento para toda la tabla:

Atributos
Atributos es el nombre de la siguiente columna. Si haces clic en su desplegable vers los
valores que podemos dar en esa columna a cada campo. Nos son demasiados, gracias
a.... Rasmus Lerdorf!!, creador del PHP. Qu cultos somos en CCTW verdad? (y que
bueno es saber buscar en Google, je je je je je).

Estos atributos, opcionales siempre, significan lo siguiente:


Binary: Este atributo no lo controlo demasiado an. Creo que sirve para ordenar
campos de texto no por su orden alfabtico sino segn su valor binario... cosas raras
como ves, je je je. Lo olvidaremos por el momento, oki?
Unsigned: Significa que los valores son siempre positivos, sin signo negativo. Gracias a
esto, su un tipo de campo solo puede tener valores desde -255 hasta +255, eliminando el
signo podra tomar los valores desde el 0 hasta el 510. Se usa con los tipos de datos
numricos.
Unsigned Zerofill: Adems decumplir lo anterior, rellena con ceros todos los espacios a
la izquierda del nmero. As, si un campo es de tipo numerico de hasta tres carcteres,
en lugar de representarlos como 1, 14 o 97, les dara los valores 001, 014 y 097
respectivamente.

On Update Current_Timestamp: Se usa para tipos de fecha. Si se escoje este atributo


y el campo es del tipo fecha, si no se rellena este dato el servidor le asignar la fecha y
hora que tena el servidor en ese momento. Puede servir si interesa conocer la fecha y
hora de cuando se insert ese dato en la base de datos.
Visto lo visto..... qu atributo asignamos a nuestros cinco campos? Solo se me ocurre
asignar el atributo Unsigned Zerofill al campo ID, pues es un valor numrico, no tiene
sentido que sea negativo y.... no viene mal que tenga ceros a su izquierda, no? Los
dems los dejaremos en blanco y esa columna quedara as:

Nulo
No, no es a t, t no eres nulo!! je je je, t eres ya un pedazo de Webmaster, je je. Con
nulo me refiero a la siguiente columna que tenemos que rellenar. Esta no es complicada.
Los valores que podemos dar en este caso son o "null" o "not null" que significa "acepto
datos nulos o vacios" o "no acepto datos nulos, vacios". Si colocamos el valor "nulo" en
uno de estos campos significar que es un dato obligatorio, que no se puede dejar en
blanco. Por ejemplo, los valores del campo NOMBRE o el de ID o ESTADO deberan
ser siempre no nulos, en cambio los valores de url de nuestro ejemplo podemos dejarlo
en null, lo que significa que se puede dejar en blanco, que acepta el valor nulo o valor
en blanco. Esto es lgico pues habr usuarios que no tengan pgina web y por tanto no
podemos obligarles a que escriban la direccin en el campo URL, pero en cambio un
nombre s que han de tener y por eso lo dejamos en "not null" pues no debe dejarse
vacio.
Dejaremos por tanto estos valores (borro el resto de columnas en la imagen para hacer
hueco...):

Predeterminado

Esta tampoco es dificil. En la columna de "predeterminado" podemos escribir el valor


que queremos que tenga cada campo cuando an no le hemos escrito otro distinto. Por
ejemplo, si usamos esta tabla para pedir la informacin a los usuarios a travs de un
formulario, los valores que no escriba el visitante en el formulario sern sustituidos por
los valores por defecto o predeterminados que sealemos aqu.
Optaremos por colocar Activo de forma predeterminada en el campo ESTADO de forma
que a menos que cambiemos el valor por Inactivo, el usuario ser Activo de forma
predeterminada. Adems escribimos http:// en el campo URL. En el resto no se me
ocurre poner nada ahora mismo. Quedara as entonces:

Extra, AI o AutoIncremento
No sufras, ya queda menos, je je je. Mralo por el lado bueno, y es que ya has aprendido
un montn de cosas de bases de datos, no? En la columna "Extra" solo tenemos una
opcin que tomar. Si abres el desplegable vers que solo podemos escoger el valor
"auto_increment". Esta caracterstica indica que cada vez que se introduzca un valor en
la tabla, este valor se generar automticamente sumando uno al ltimo valor que existe
en la base de datos.
Segn la versin de PhpMyAdmin que tengas, quizs no te aparezca eso de Extra, sino
otro campo llamado A_I o AutoIncrement. Pero todas ellas significan y funcionan del
mismo modo.
Por ejemplo, si uno de los campos es un nmero y le activamos el "auto_increment", si
el primer valor de la tabla tiene el nmero uno el siguiente que introduzcamos tomar el
nmero dos automticamente y as sucesivamente. Lo usaremos en el campo ID. As,
sin necesidad de darle ningn valor, el servidor le ir dando nmeros consecutivos,
desde el 001.
En el resto de campos no tiene sentido as que lo dejamos en blanco para el resto.

Primaria, Indice, Unico y Texto


Completo
Con esto casi terminamos. Despus de la columna "Extra" tenemos varias opciones que
podemos activar o no. Si dejas el puntero del ratn sobre cada uno de esos 4 nuevos
iconos vers que aparece un cartelito indicando "Primaria", "Indice", "Unico" y "Texto
Completo". Solo podemos activar uno de los tres primeros valores, no nos permite
activar dos o tres de esos valores a la vez. Tambin aparece una columna con tres
guiones "---" que significa que no damos ninguno de estos valores a ese campo. Veamos
lo que significa cada uno.
Primaria: Para no liarnos, diremos que en cada tabla debe haber un campo ms
importante que el resto. Debe ser uno que sea diferente cada vez que introducimos los
datos de otro usuario y que sea bastante representativo. En nuestro caso pienso que el
campo NOMBRE sera el idoneo para ser la clave Primaria, pues no hay (o no debe
haber) dos iguales y es bastante representativo.
Como es obligatorio que en cada tabla haya un campo (y solamente uno) con la clave
Primaria activada, lo pondremos activo en el campo NOMBRE. Est claro que si
NOMBRE es la clave primaria no puede aceptar valores en blanco o valores nulos,
verdad?
Indice: Los indices se utilizan para mejorar y agilizar la bsqueda de datos dentro de la
tabla.
Unico: Esta clave significa que no pueden haber dos o ms datos con el mismo valor.
--- : Esta casilla aparecer activada si no se ha escogido ninguna de las tres anteriores.
Texto Completo: Esta an no se lo que es...

Y los Comentarios
No, no es que os vaya a comentar algo ahora, ya he escrito bastante, no? Je je je.
Comentarios es el nombre de la ltima (por fin!) columna de valores que hay que definir
al crear una tabla nueva. Afortunadamente esta columna no es obligatorio completarla.
Se usa para aadir alguna nota tuya que te sirva para aclararte un poco. Por el momento
no la vamos a utilizar, ya est bien, y tenemos ganas de terminar esta parte de una vez,
verdad) ja ja ja. Pues eso, la dejamos en blanco.

Insertar Datos en la Base


Ahora que tenemos la tabla de datos lista llega la hora de empezar a aadirle datos. Se
me ocurren dos formas de insertar datos en la tabla, la primera es a travs del panel de
PhpMyAdmin y la segunda forma es diseando unos formularios en el que tras escribir
los datos que queremos sean mandados a la base de datos sin ms que pulsar un botn.
En esta seccin vamos a ver la primera forma, usando el panel de PhpMyAdmin pues en
ocasiones nos vendr muy bien. Despus os explico cmo hacerlo a travs de un
formulario.
Tienes abierto el PhpMyAdmin? Abrelo y pulsa primero sobre el nombre de la tabla en
la que quieres insertar datos, de la lista de tablas que aparece a la izquierda y luego clic
de nuevo donde pone "Insertar" en la parte de arriba:

En ese momento te aparecer una ventana en la que puedes insertar los valores de la
nueva fila de datos. T tienes que rellenar los recuadros que hay bajo la columna
llamada "Valores",
Una vez rellenos los datos pulsa sobre el botn en el que pone "Continuar" o bien ve
ms abajo donde encontrars otro recuadro igual por si quieres insertar datos de otra fila
ms. Cuando termines pulsa en "Continuar" y los dato quedaran guardados en la tabla.

Qu es un Formulario

Como hemos visto anteriormente, podemos insertar nuevos datos en la tabla de la base
de datos a travs del PhpMyAdmin pero, qu ocurre si queremos que sean los usuarios
los que rellenen esos datos? Vamos a tener que darles acceso al PhpMyAdmin? Te fias?
je je je je.
Adems.Te imaginas tener que aadir los datos directamente usando el MySql? Uno a
uno? Qu horror! Con lo fcil que sera rellear un formulario y hacer que sa este el que
incorpore los datos a la base de datos, no?
Para evitar todo eso podemos funcionar con los formularios. As y sin necesidad de
acceder al PhpMyAdmin tanto los usuarios como nosotros mismos podremos aadir
datos a la tabla desde cualquier parte en la que dispongamos de conexin a internet.
Ser cosa de rellenar recuadros, hacer clic en un botn y.... listo! Base de Datos
rellenada!
Pues vamos all con las lecciones sobre cmo crear un formulario para el envio de datos
a la base de datos desde una pgina web. Todas estas instrucciones son igualmente
vlidas para la creacin de formularios de cualquier otro tipo, como envo de correos,
etc. A ver si consigo explicarlo bien y te gusta como ha quedado.

Crear un Formulario
Realmente los formularios se hacen con lenguaje Html. El Php lo usaremos para jugar
con los datos que se obtienen, pero el formulario en s est hecho con cdigo Html.
Vamos a ver como se construye y qu opciones tenemos para que nuestros amigos
puedan enviarnos datos o para rellenarlos nosotros mismos.
Al igual que un prrafo se define en Html colocando la etiqueta de apertura <p> y
termina con su correspondiente etiqueta de cierre </p>, los formularios empiezan y
terminan con las etiquetas Html <form> y </form>.
Dentro de la etiqueta de apertura se pueden indicar algunas cosas, pero las que nos
interesan ahora son:

action: que indica la url a la que enviar los datos del formulario, es decir, la pgina que
tiene las instrucciones de qu hacer con los datos obtenidos desde el formulario.
method: Puede tomar los valores get o post. Existen varias diferencias entre ambos
aunque funcionan igual. La diferencia es que usando get los datos del formulario se ven
en la url de la pgina siguiente y el nmero de valores est limitado. En cambio usando
post no se ven los valores en la direccin de la web y adems no hay tal lmite de
valores a recopilar. As que, por ahora, usaremos siempre post, vale?
Con lo que acabamos de ver, un ejemplo de formulario vacio sera:
......
<form method="post" action="mostrardatosenpagina.php">
......
</form>
.......
Seguimos? Ahora que tenemos preparado el formulario vamos a ver qu tipo de
recuadros donde insertar informacin podemos colocar dentro. Existen varios tipos o
formas y puedes y debes elegir la que ms se amolde a los datos de la tabla o base de
datos, veamos.

Campos de Datos
Como te he dicho, dentro de un formulario puedes encontrar distintas formas de pedir
los datos. Puedes pedir al visitante que indique uno o varios de entre un conjunto de
valores, que introduzca una palabra, una frase corta o incluso un buen trozo de texto, o
una clave o contrasea, y hasta archivos, claro. A continuacin veremos cada uno de
esos tipos. Fjate que todos ellos tiene un cdigo muy similar:
<input type="tipodedato" name="nombredelcampo" value="Escribe Aqu" size="20"
maxlengh="20" />
- Empiezan con el cdigo <input, su etiqueta.
- Estn seguido de una indicacion del tipo de informacin que se pide,
type="tipodedatos". En lugar de tipodedatos nosotros colocaremos ah qu tipo de datos
vamos a pedir al usuario. Lo veremos ms adelante.
- Seguido del nombre de ese campo de informacin name="nombredelcampo", que es el
nombre que daremos a lo que el usuario escriba y que nos sirve para poder usarlo ms
tarde.
- Despus se indica el valor que queremos que aparezca por defecto en el formulario
value="Escribe Aqu". Si se deja en blando el cuadro o campo del formulario saldr en
blanco, pero si escribimos dentro de las comillas de value, por ejemplo "escribe ac tu
comentario", ser eso lo que aparezca escrito cuando el usuario visualice el formulario.
Por supuesto, podr borrarlo para ecribir su comentario.

- Tamao del recuadro donde se pide la informacin size="100". Es simplemente el


ancho del recuadro. Que lo escojamos pequeo no significa que el visitante no pueda
escribir muchos carcteres en l, eso viene definido por la siguiente caracterstica,
- Longitud mxima que podemos dar a ese datos maxlegth="20", que es la mxima
cantidad de carcteres que vamos a guardar de lo que el usuario escriba. Si le ponemos
20 a maxlength solo guardaremos los 20 primeros carcteres que escriba y al resto no le
haremos ni caso, se pierden.
Y finalmente se cierra la etiqueta del input con /> En este caso como ves no hay etiqueta
de cierre con </input> nunca. Recurdalo.

Campos de Texto
Es el tpico recuadro para insertar datos en los que cabe una lnea de texto solamente.
Eso significa que si te pones a escribir dentro de ese recuadro, si le das al Enter o Intro
de tu teclado no vas a conseguir un salto de lnea para seguir escribiendo ms texto.
El cdigo Html para incluir un recuadro de estos en tu pgina web sera como este:
<input type="text" name="nombredelcampo" value="Valor por defecto" size="20"
maxlength="20" >
El aspecto del cdigo de arriba sera este:
Valor por defecto

No necesita mucha explicacin, pero por si acaso...


La linea comienza con la etiqueta input, que indica que vamos a colocar un recuadro
para introducir datos. Luego aparece type="text" con lo que sealamos que ese recuadro
ser para introducir texto. Con name="nombredelcampo" la damos un valor a ese
recuadro, que nos servir para poder manejar el valor introducido despus. Con
value="valor por defecto" podemos indicar el valor que queremos que aparezca dentro
del recuadro en cuanto el visitante vea esa pgina, si es que queremos que aparezca
algo. Si no, podemos dejarlo en blanco y el campo aparecer vacio, claro. Para terminar
tenemos size="20" que indica el tamao o anchura del recuadro y maxlength="20" que
pone un lmite a la cantidad de texto que dejaremos que el usuario escriba en el
formulario y que en este caso ser de 20 carcteres. No parece muy complicado, no? Je
je je je.

Campos de Contrasea
Este tipo de campo es muy similar al anterior, pero en este caso indicamos que la
informacin a insertar va a ser una contrasea y por lo tanto queremos que cuando el
visitante la vaya escribiendo se vayan monstrando asterscos (*) en lugar de la
contrasea real. Esto es para evitar que alguien pueda leer la contrasea mientras que
nuestro amigo visitante escribe los datos del formulario.

Su cdigo es este otro:


<input type="password" name="nombredelcampo" value="Valor por defecto" size="20"
maxlengh="20" />
Y este es su aspecto. Intenta escribir en ese recuadro y vers los asterscos que te deca.
*****************

Personalmente me parece una chorrada como un piano de grande, je je je, pero en fin, es
lo que hay. Por supuesto puedes usar un campo de texto normal si quieres lo mismo
pero viendo el resultado. Como no estamos en un cajero de un banco, igual no
necesitamos esos asterscos, no? je je je.
Hey, has merendado ya? Me hace ruido la barriga! je je je. Un bocado y seguimos, oki?

Botones de Opcin
Cuando quieras mostrar al visitante una lista de valores de entre los que tiene que elegir
uno solo, tienes que usar botones de opcin. Dentro del cdigo Html que define este
botn de opcin tendrs que indicar cada uno de esos valores, claro.
Es importante que recuerdes que con este tipo de formulario el visitante SOLO puede
escoger uno de los valores, es decir, es imposible activar dos o ms valores. Si lo que
quieres es dar la opcin de que el visitante pueda seleccionar ms de una de las
opciones, tendrs que buscar otro modo, que explicaremos ms adelante.
Veamos el cdigo de un botn de opcin de ejemplo para verlo ms claro:
<INPUT type="radio" name="mibotondeopcion" checked value="1">Estudiante<br />
<INPUT type="radio" name="mibotondeopcion" value="2">Astronauta<br />
<INPUT type="radio" name="mibotondeopcion" value="3">Mdico<br />
<INPUT type="radio" name="mibotondeopcion" value="4">Webmaster<br>
Las caractersticas de los botones de opcin son las siguientes:
- Dentro de type hay que indicar "radio" que significa botn de opcin (no, no es para
escuchar msica...)
- Todos han de tener el mismo valor dentro de name para que el navegador sepa que
todas estas lneas corresponden a opciones de ese botn.
- checked. Esto se coloca solamente en una de las lneas, en la que t quieras pero solo
en una, pues indica la opcin que aparecer activada por defecto. Si no lo indicas en
ninguna no aparece ninguna de esas opciones marcada de antemano. Es opcional.
- Dentro de las comillas de value indicas el valor que quieres que tenga esa opcin.
Puede ser un nmero o el texto de esa opcin. Est claro que deberian ser distintos esos
valores en cada opcin.

- El texto que hay antes de <br> es el texto que aparece en el navegador Puedes escribir
lo que quieras que el visitante vea como opcin, pero el valor que recogers del
formulario una vez que se enve ser el que hay dentro de value, no este.
- Finalmente tenemos la etiqueta Html <br> que como sabes sirve para bajar una lnea.
La ponemos para que no aparezcan todas las opciones pegadas una tras otra. Esto es
opcional y lo puedes hacer de cualquier otro modo, a tu gusto.
El cdigo que te he mostrado arriba para los botones de opcin mostrara esto de abajo:
Estudiante
Astronauta
Mdico
Webmaster
Fjate como la opcin Estudiante aparece ya marcada por defecto. Esto es porque
hemos puesto checked en esa lnea.

Casillas de Verificacin
Es muy parecido a los botones de opcin pero en este caso ofreces la opcin de poder
seleccionar varios de los valores en lugar de solamente uno. Lo nico que cambia en el
cdigo Html es que ponemos el tipo "checkbox" dentro de type, que significa casillas de
verificacin.
Y claro, como podemos tomar uno o ms valores, o todos, tambin nos permite dejar
activadas ninguna, una o varias casillas escribiendo la palabra mgica checked en las
lneas de cdigo correspondientes.
<input type="checkbox" name="micasilladeverificacion" checked value="1"
/>Estudiante<br />
<input type="checkbox" name="micasilladeverificacion" value="2" />Astronauta<br />
<input type="checkbox" name="micasilladeverificacion" value="3" />Mdico<br />
<input type="checkbox" name="micasilladeverificacion" checked value="4"
/>Webmaster<br />
El cdigo de arriba creara unas casillas de verificacin o Checkbox como estas de
abajo:
Estudiante
Astronauta

Mdico
Webmaster
Date cuenta en el cdigo de arriba, que he colocado la etiqueta <br /> al final de cada
lnea. Recuerdas para qu? Si, significan saltos de lnea y las he colocado para que la
casillas aparezcan una en cada lnea y no una tras otra en una sola lnea. Solo era para
recordrtelo.
De nuevo puedes ver como aparecen activas ya las casillas en las que pusimos la
palabra mgina checked. An as, el usuario puede desactivarlas y marcar otras distintas
si quiere.

Carga de Archivos
Esta seguro que os gusta pues es una pregunta que he leido muchas veces en el foro.
Ahora se responderla, je je je, as que ah va. El botn de carga de archivos nos permite
mostrar al visitante su explorador de archivos, una ventana desde la que puede buscar
los archivos de su ordenador, seleccionar uno de ellos y mandrnoslo a nosotros o a
nuestra pgina a travs del formulario. Mola, no?
El cdigo para este objeto del formulario es el siguiente:
<input type="file" name="imagendemilogotipo" accept="image/*.gif ">
donde con accept se indica el tipo (MIME) de archivo que acepta el formulario. En el
caso del ejemplo de arriba solo se aceptarian archivos de imagen del tipo gif (pues
hemos puesto *.gif). Veremos con ms detalle todo esto ms adelante. Por el momento
nos quedamos con la lnea de cdigo necesaria para insertar esa opcin en el formulario.
Como ves, poco a poco vamos aprendiendo nuevas herramientas sorprendentes. Podras
imaginar ya cules de estas herramientas usa tu foro favorito, o alguna web de descarga
e incluso algn juego online, verdad? Dominando Php y MySql podras crear cualquier
cosa.

Listas de Datos
En esta ocasin se muestra al visitante una lista de opciones, que o bien puede ser
desplegable (cuando el visitante pulsa el icono de la flechita se despliega la lista de
opciones de entre las que puede elegir) o bien puede aparecer ya desplegada, con barra
de desplazamiento si fuera necesario.
En este caso algunas de las palabras mgicas que definen a este objeto de formulario
cambian un poco de significado. Por ejemplo size en este caso indica la cantidad de
opciones que queremos mostrar a la vez en la lista. Si ponemos valor 1 la lista ser
desplegable.

Aparece una palabra mgica nueva, "multiple" que indica si se pueden o no tomar ms
de una de las opciones. Si la lista es desplegable no se puede usar multiple pues una lista
desplegable no nos permite seleccionar varios valores (lo has intentado alguna vez? La
lista se cierra al hacer clic en una de las opciones y te impide escoger otra).
En las listas, si queremos indicar un valor seleccionado por defecto tenemos que usar la
palabra mgica selected, no checked como en las casillas de verificacin, pues aqu
seleccionamos, no marcamos.
Vamos a ver un ejemplo para terminar de entender todo esto, vale?
<select name="comidapreferida" size=1>
<option value="tortilla">Las tortillas</option>
<option value="paella">La paella</option>
<option value="pizza">Las pizzas</option>
</select>
Con este cdigo de arriba obtenemos esta lista de abajo:
Como le hemos puesto en el cdigo size=1, obtenemos una lista desplegable. Dijimos
que size indicaba la cantidad de opciones que queramos mostrar a la vez. Si ponemos
por tanto size=2 veremos dos opciones o items (tambin se llama as a cada elemento en
los libros esos de listillos...) y el resto se ve desplazando la barra de desplazamiento:
Poniendo 3 se vera entera, desplegada totalmente y claro, no aparecera la barra de
desplazamiento vertical:
Recuerda que lo que ve el visitante es lo que hay justo ants de </option> mientras que lo
que t recibes del formulario es el valor que has colocado dentro de las comillas del
value="....".
Pues ya sabes un montn sobre formularios! je je je. Ya me puedes ayudar a responder a
los compaeros del foro que tengan dudas! ja ja ja. Gracias en ese caso! Seguimos un
poco ms?

Campo Multilnea
Los objetos de formularios en los que preguntamos el nombre, apellidos, etc, etc pueden
ser de una sola lna de longitud, como los que hemos visto al principio. Pero y si
queremos que el visitante nos escriba un mensaje de varias lneas? En ese caso no nos
sirve el campo de texto anterior pues al pulsar el Enter o Intro no aparece una nueva
lnea.
En estos casos definiremos un tipo distinto de objeto de formulario, los campos de
texto de varias lneas. Original el nombre, verdad? je je je.
En este caso en lugar de usar <input..... usarmos la palabra mgica <textarea... que
significa area de texto. Las caractersticas que le podemos indicar a un area de texto son,

el nombre del objeto con name; la anchura del area donde el usuario puede escribir,con
cols; la altura de ese area con rows y la palabra mgica wrap que veremos ms adelante.
Un ejemplo de area de texto de varias lneas sera este cdigo Html:
<textarea rows="10" cols="20" wrap="soft">Texto que aparece ya escrito de
antemano</textarea>
La palabra mgica wrap puede tomar solo tres valores de los que has de elegir uno.
Presta atencin porque quiz sea un poco complicado de entender (y de explicar... je je
je) Los valores que les puedes dar son:
- off: El texto escrito por el usuario lo recibes tal cul lo ha escrito, con los saltos de
lnea (lo que ocurre cuando presiona Intro o Enter) tal cul l los di. Si tu area de texto
es ms estrecha que su frase, la frase contina sin pasar a verse en la lnea de abajo. Lo
pillas? Sigue leyendo las otras opciones y lo vers ms claro.
- soft: En este caso si la frase que escribe el colega visitante es ms larga que el ancho
de tu area de texto, la frase continua en la lnea de debajo, aunque t recibirs el texto
tal cul el visitante pretenda escribirla, solamente con los saltos de lnea que l puls,
no con los saltos que aparentemente le marca el area de texto para que todas las frases
se vean dentro de la ventana.
- hard: Y como ltima opcin, tenemos "hard". Si escoges esta opcin, el visitante se
pondr a escribir frases ms largas que el ancho del textarea y estas frases se dividirn
conforme se alcance la anchura de la ventana, pero t recibirs el texto con los saltos de
lnea justo en esos margenes, aunque el visitante no haya pulsado el Intro o Enter en su
teclado para indicar una nueva lnea.
Era complicado verdad? je je. Quizs tengas que leerlo de nuevo para enterarte, no he
estado muy fino conla explicacin, je je je. Te recomiendo la opcin "soft" as que si no
te has enterado de mucho elije esa siempre y listo.

Campos Ocultos
Como hemos visto en CCTW, usando PHP podemos crear algunas variables en las que
almacenar algunos datos. En ocasiones nos interesa que junto con los datos del
formulario que rellena el usuario nos venga tambin algn dato extra que nos sea de
inters.
Imagina por ejemplo que el visitante rellena el formulario y lo enva al servidor.
Podramos guardar la IP del usuario en una variable e indicar en el formulario que nos
sea enviado el valor de esa variable (la IP) junto con el resto de los datos. Con esto
sabramos si se han rellenado varios formularios desde la misma IP, no? Pero
seguramente no queramos que el visitante vea todo lo que intentamos captar.... habra de
ser, invisible!
O imagina que el formulario es para insertar un mensaje en un foro. Un dato interesante
y necesario a guardar junto con el mensaje sera el nombre de usuario, no? Pero estos no

son datos que tenga que rellenar el visitante sino datos que podemos recopilar sin
necesidad de que el que rellena el formulario sepa nada, por eso se llaman campos
ocultos.
En ejemplo de definicin de un campo oculto en un formulario sera el siguiente:
<input type="hidden" name="valorocultoarescatar" value="$variable">
Con hidden dentro de type indicamos que se trata de un objeto de formulario del tipo
oculto (el usuario no lo ve pero nos llega ese dato).
Por supuesto, como en este caso el usuario no escribe nada, el valor se lo tenemos que
indicar nosotros. En el caso del ejemplo de arriba tomar el valor que tenga la variable
$variable, que podra ser el nombre de usuario, la IP o cualquier otro dato interesante
que queramos.
Justo debajo de esta lnea te dejo algunos campos ocultos como ejemplo. Cmo? Que no
los ves? Pues claro! No te he dicho que son ocultos? ja ja ja ja. Ya los veremos junto con
todo lo dems en ejemplos prcticos ms tarde, oki?

Botn de Envo
Ya hemos visto todas las formas que hay de captar informacin a partir de un
formulario, pero de nada nos sirven esos datos si se quedan ah, pululando por la red.
Necesitamos rescatarlos y para ello hay que aadir al formulario unos botones de envio.
Cuando el usuario pulse en ellos toda la informacin se pondr en marcha.
Existen tres tipos de botn de envo y se definen indicando submit, image o button
dentro de las comillas del type en la lnea de cada input (ya empezamos a hablar como
autnticos Frikis! ja ja ja).
<input type="submit"....
<input type="image"....
<input type="button"...
El botn submit se define con las palabrs mgicas name en el que le colocaremos un
nombre para identificarlo y value donde escribiremos la accin que se llevar a cabo al
hacer clic sobre l. Un ejemplo sera este:
<input type="submit" value="Botn de envio estandar" name="Enviar la informacin al
servidor" />
El botn image es similar al anterior, pero en este caso no se muestra en el navegador un
botn como en el caso anterior, sino una imagen que bien pudiera ser un botn ms
mono dibujado por t. Est claro que en este caso se usaran las palabras mgicas del
submit ms algo (la ruta por ejemplo) que indique dnde est la imagen que vamos a
usar como botn.

<input type="image" value="Botn de envio personalizado" name="Enviar la


informacin al servidor" SRC="/objetos/imagendeboton.gif" />
Dentro de las comillas de src has de indicar la ruta del archivo de la imagen que quieres
usar como botn.
El tecero de estos botones es el button. Este otro es similar al anterior, pero en este caso
no hay ninguna cosa predeterminada que se vaya a hacer cuando se pulsa sobre l.
Tenemos que indicar nosotros qu debe ocurrir cuando ese botn sea pulsado. Esto se
indica con lneas de JavaScript por ejemplo, as que por el momento no lo usaremos,
que de eso no tenemos (an) mucha idea. Nos quedamos con los dos anteriores, oki?
Que son facilitos y suficientes para lo que queremos por el momento.

Envo de la informacin de un
formulario

Ahora s que tenemos el formulario completo. Bueno, tenemos lo que se ve del


formulario, pero nos falta ver qu hacemos con la informacin recopilada y es aqu
donde entra a jugar el lenguaje PHP que estamos aprendiendo.
Con los datos que ha rellenado nuestro amigo el visitante en el formulario podemos
hacer tres cosas. La primera y ms sencilla es no hacer nada, cmo no, je je, la segunda
es mandarla a la pgina siguiente de nuestra web para que juegue con esos datos y la
tercera es enviarlos a una base de datos donde quedarn guardados para su uso en el
futuro.
En las siguientes pginas vamos a ver los dos ltimos modos y te dejo a t el primer
modo para que lo pienses, a ver si eres capaz ;=)
Hey, te das cuenta de cunto sabes ya? No es genial? je je je.

Formulario de ejemplo

Recuerdas la base de datos que creamos pginas atrs? Vamos a crear un formulario en
el que pediremos al visitante los datos de aquella tabla USUARIOS que habamos
creado en el ejemplo aqul. Los campos que tenamos en esa tabla eran NOMBRE,
EMAIL, URL y ACTIVO. Tenamos un campo ms llamado ESTADO. Obviamente
este no ser un campo a relenar por el usuario, as que podemos establecerlo nosotros
con el valor Activo y ya ms tarde si se porta mal lo ponemos como Inactivo. Este sera
una buena ocasin para aplicar lo del campo oculto, verdad? Aadiremos este campo
como oculto en el formulario con el valor de Activo entonces. Sin ms rollo vamos a ver
cmo pasamos todo eso a cdigo Html.
Damos por hecho que ya tienes creada la base de datos del ejemplo que dejamos atrs,
con la tabla aquella llamada USUARIOS con los campos NOMBRE, EMAIL, URL y
ESTADO.
Para empezar escribimos las etiquetas de inicio y fin del formulario:
<form method="post" action="mostrardatosenpagina.php">
</form>
Ahora colocamos dentro los cdigos Html correspondientes a cada uno de los campos.
Para NOMBRE por ejemplo, que es una cadena de texto de una sola lnea, pondremos
estas lneas:
<input type="text" name="Nombre" value="Escribe tu nombre" size=30
maxlength=50 />
Si recuerdas, cuando creamos hace unas cuantas pginas la tabla USUARIOS
indicabamos en el PhpMyAdmin que el campo Nombre deba tener como mximo 50
carcteres. Lo pusimos en esta tabla, te acuerdas?

As que en el cdigo del formulario pondremos un maxlenght de 50. De este modo no


nos dejar escribir ms que esos carcteres. Total, tampoco los tomara la base de datos.
El valor de SIZE en cambio no varia ni recorta ese valor por largo que sea, solo indica
la anchura del recuadro del formulario, as que lo dejamos en por ejemplo 30.
<form method="post" action="mostrardatosenpagina.php">
<input type="text" name="Nombre" value="Escribe tu nombre" size=30
maxlength=50 />
</form>

Pasamos a los siguientes campos, EMAIL y URL. Son iguales que el campo NOMBRE
anterior, por lo que modificamos solamente el valor VALUE para indicar lo que
queremos que aparezca junto con el formulario en cada hueco. Quedara as:
<form method="post" action="mostrardatosenpagina.php">
<input type="text" name="NOMBRE" value="Escribe tu nombre" size=30
maxlength=50 />
<input type="text" name="EMAIL" value="tuemail@correcto" size=30 maxlength=50
/>
<input type="text" name="URL" value="http://www.tudirecciondepagina.web"
size=30 maxlength=50 />
</form>
Nos falta solo el campo oculto en cuyo cdigo ponemos ya que tenga el valor ACTIVO,
quedando as el cdigo hasta ahora:
<form method="POST" ACTION="mostrardatosenpagina.php">
<input type="text" name="NOMBRE" value="Escribe tu nombre" size=30
maxlength=50 />
<input type="text" name="EMAIL" value="tuemail@correcto" size=30 maxlength=50
/>
<input type="text" name="URL" value="http://www.tudirecciondepagina.web"
size=30 maxlength=50 />
<input type="hidden" name="ESTADO" value="Activo" />
</form>
El aspecto del formulario sera este:
Escribe tu nombre

tuemail@correcto

http:/ / www.tudirecciondepagina

Y si queremos que aparezcan esos recuadros uno bajo el otro podremos una etiqueta <br
/> que indica salto de lnea, al final de cada lnea de INPUT, quedando as:
Escribe tu nombre
tuemail@correcto
http:/ / www.tudirecciondepagina

Hey! Le faltan los botones an! je je. Veamos, con las lneas de cdigo del botn de
envo quedara as:
<form method="POST" action="mostrardatosenpagina.php">
<input type="TEXT" name="NOMBRE" value="Escribe tu nombre" size=30
maxlength=50><br />
<input type="TEXT" name="EMAIL" value="tuemail@correcto" size=30
maxlength=50><br />
<input type="TEXT" name="URL" value="http://www.tudirecciondepagina.web"
size=30 maxlength=50><br />
<input type="HIDDEN" name="ESTADO" value="Activo">
<input type="SUBMIT" value="Botn de envio estandar" name="Enviar la

informacin al servidor"><br />


</form>
Y el aspecto sera este:
Escribe tu nombre
tuemail@correcto
http:/ / www.tudirecciondepagina

Bonito verdad? Je je je. Ya sabes que con imaginacin, gusto y..... y la hoja de estilos!
puedes dar un aspecto mucho mejor al formulario.

Uso de la informacin del formulario en


otras pginas de la web
Qu hace realmente este formulario cuando se pulsa el botn de envo? Te lo cuento
paso a paso, oki? Tras pulsar el botn, los tres valores o mejor dicho, los cuatro valores
(tambin tenemos el valor oculto!) se quedan guardados en una variable del tipo cadena.
Un tipo cadena significa que esos cuatro valores se quedan guardados "en cadena", es
decir, uno detrs de otro. La variable que los guarda mantiene esos datos as:
NOMBRE, Escribe tu nombre,
EMAIL, tuemail@correcto,
URL, http://www.tudirecciondepagina.web,
ESTADO, Activo
Como ves, estn en cadena. Se queda guardado el nombre (NAME) del botn junto con
el valor que se haya escrito en el formulario. Vers tambin como se ha guardado el
campo oculto, con su nombre ESTADO y el valor que hemos puesto predeterminado en
el cdigo del formulario, Activo.
Para recuperar esa informacin o mejor, para imprimirla en la ventana del navegador
tenemos que hacer un echo, como siempre, y llamar a la variable que contiene esos
datos con la siguiente lnea de cdigo Php:
<?php
echo $_POST[NAME];
?>
donde en lugar de NAME tenemos que colocar el nombre de ese campo, como por
ejemplo, NOMBRE, ESTADO, URL o EMAIL. Por ejemplo, para el cdigo Php de
arriba se mostrara en la ventana del navegador esto:
Francisco Gonzalez

suponiendo claro que se escribi ese nombre en el formulario antes de pulsar el boton
de envo.
Si en lugar de haber puesto el valor POST en la primera lnea del cdigo del formulario,
hubieramos escrito GET (te dije que podiamos usar cualquiera de los dos, recuerdas?)
los datos del formulario se habran guardado no en la variable POST sino en la variable
GET, por lo que para imprimir los datos del formulario tendramos que haber escrito
este otro cdigo Php:
<?php
echo $_GET[NAME];
?>
Adems de eso, el usuario vera en la direccin de la pgina de destino no solo la
informacin que escribi, sino tambin los valores de campos ocultos y eso a veces no
es deseable, no? El formulario siguiente es igual que el anterior pero con GET en lugar
de POST. Pulsa el botn de envo y vers esa informacin al final de la direccin que
muestra tu navegador.
Escribe tu nombre
tuemail@correcto
http:/ / www.tudirecciondepagina

Y como te deca al principio de estas lecciones, como los navegadores normalmente no


son capaces de leer una direccin o URL demasiado larga, si los datos son muchos o
muy largos el navegador no podr leer los ultimos datos y perderas informacin del
formulario. As que, por el momento seguiremos usando POST en lugar de GET y tan
contentos.
Al pulsar sobre los botones de envo de estos ejemplos anteriores, se te dirije a una
pagina escrita en Php cuyo nico contenido es este:
<?php
echo "Hey, que esto an no est terminado!" ;
echo $_POST[ESTADO] ;
?>
De forma que se ve en el navegador el mensaje "Hey, que esto an no est terminado!"
seguido de lo que vale la variable ESTADO, es decir, Activo.
Esta pgina se llama mostrardatosenpagina.php y es la que aparece en la primera
lnea del cdigo Php de estos formularios de ejemplo. Osea, que la pgina que
pongamos all ser la que reciba los datos del formulario. Que hacer con esos datos ya
es otro cantar, verdad? En este ejemplo lo que hemos hecho con los datos del formulario
ha sido simplemente mostrar en pantalla el valor del campo oculto ESTADO. Ms
adelante en lugar de esa tontera lo que aprenderemos es a guardar todos ellos en una
base de datos.

Guardar la informacin de formulario en


una base de datos
Antes vimos cmo aprovechar la informacin del formulario para imprimir alguno de
sus datos en una pgina web. Ahora lo que vamos a aprender es a que tras pulsar el
botn de envo, todos esos datos queden guardados en una base de datos que tendremos
ya creada y preparada para recibir esa informacin.

El formulario va a ser el mismo que antes, sin cambiarle nada. La novedad en este caso
ser el indicar al servidor que guarde los valores de la variable POST en nuestra base de
datos de ejemplo, la que vimos al principio.
Bueno s cambia una cosilla, el nombre del archivo php de la primera lnea del cdigo
del formulario. Antes era la pgina mostrardatosenpagina.php y contena instrucciones
para mostrar una frase y el valor del campo oculto mientras que ahora ser otro archivo
distinto llamado por ejemplo insertardatosentabla.php y que ser el que vamos a crear
ahora y que contiene las instrucciones para que el servidor guarde los datos del
formulario recibidos a travs del POST, en la tabla USUARIOS de nuestra querida base
de datos.
Y a estas alturas siento decirte que.... ya no eres normal. Ahora empiezas a ser todo
un friki programador, de esos que no hay quien los entienda, ja ja ja ja. Es broma!!
Solo t te libras! ja ja ja ja. Hey, qu tal un paseito (no virtual, que te veo venir!)
para mover el esqueleto antes de continuar?

Jugando con los Datos


Para poder jugar con la informacin de una base de datos es imprescindible primero
conectar con ella. Con jugar con la informacin me refiero a mostrar, insertar, crear,
modificar o eliminar datos. Nosotros tenemos ya preparados los datos en la variable post
que vimos, pero antes de insertar esos datos en la base de datos necesitamos conectar
con ella.
Los datos de conexin los tenemos ya y si me has hecho caso, los tendrs a mano
escritos en algn papelito por tu mesa. Si no es as, te los recuerdo:
Nombre de la base de datos: cartago_basedepruebas
Nombre de usuario de la base de datos: cartago_pepe
Contrasea: noteladigo
Host: localhost

En tu caso, en lugar de cartago tendrs que poner tu nombre de usuario del Cpanel tal y
como te dije, adems de tu propia contrasea, claro.
Ls lneas de cdigo Php que has de poner para abrir la conexin con esa base de datos
son estas (en adelante coloreo de gris aquellas lneas que no son ms que comentarios
aclaratorios, oki? Para distinguirlo del resto de cdigo php):
<?php
// Rellena los espacios ente comillas de abajo con los datos que te da
// el servidor al activar la base de datos.
// Este dato de abajo suele ser localhost casi siempre:
$server="localhost";
// Aqui abajo escribe el nombre de la base de datos.
// Si tu servidor tiene cpanel normalmente va primero tu nombre de username,
// por ejemplo: username_nombredelabasededatos
$database = "cartago_basedepruebas";
// Aqui abajo el nombre de username de la base de datos para acceder a ella.
$db_user = "cartago_pepito";
// Y ahora la contrasea:
$db_pass = "esunsecreto";
?>
Las lneas de cdigo realmente importantes son solo las que no llevan el smbolo //
delante, pues esas son simples comentarios que si quieres puedes mantener (te lo
recomiendo) para recordar para que sirve cada una de ellas. Realmente son solo cuatro
las lineas importantes y en ellas se guardan en variables los datos de conexin.
Podras pensar que es un poco arriesgado dejar guardados los datos de la base de datos,
con la contrasea y todo, en un archivo colgado en internet, pero como es cdigo Php no
hay riesgo alguno. Por qu?
Si recuerdas lo que te comentaba al principio de hablarte del Php, es un cdigo que solo
lee el servidor de forma que, como no tenemos ningn echo en estas lneas, el resultado
de todo este cdigo en un navegador ser nada, cero, ninguno. Esos datos son leidos por
el servidor, pero es imposible que cualquier usuario pueda leerlos, as que tranquilo.
Para no tener que escribir esas lneas cada vez que queramos abrir la conexin a la base
de datos lo que haremos es guardar todo ese cdigo en un archivo que llamaremos
config.php y al que llamaremos cada vez que queramos abrir la base de datos (ya te
digo cmo).
Abre por tanto tu block de notas, escribe todo ese cdigo dentro, cambia los valores por
los tuyos (la contrasea y la palabra cartago por tu nombre de usuario en el Cpanel) y
guarda el archivo con la extensin .php en la raiz de la carpeta en la que ests haciendo
este ejemplo, vale? Ahora crea otro archivo ms, tambin con extensin .php llamado
insertardatosentabla.php

Como ese archivo es Php puedes ya escribir sus etiquetas de apertura y cierre. Ya
dijimos que las pginas Html empezaban con la etiqueta <html> y terminaban con
</html> y que en cambio los archivos Php empezaban con <?php y terminaban con ?>
as que escribe eso dentro y guarda los cambios.
En este archivo llamado insertardatosentabla.php escribiremos el cdigo Php
necesario para incluir los datos guardados en la variable post dentro de la base de datos
de ejemplo. Como adivinars, lo primero es conectar con la base de datos.
Para ello deberamos escribir el cdigo Php que habamos guardado en el archivo
config.php pero como lo tenemos en aqul archivo, basta con indicar que aada todo su
contenido en esta otra pgina. Esto se hace muy rapidamente usando la palabra mgica
include tal y como te muestro abajo:
<?php include("config.php") ; ?>
Con esto el servidor leer el contenido de config.php cuando vea la lnea del include y
de este modo nos ahorramos escribir ese cdigo cada dos por tres. Una vez que lo ha
leido ya conoce las claves para la conexin. Ahora le indicamos que conecte con estas
otras lneas:
<?php
// leer datos de usuario y contrasea de la base de datos
include("config.php") ;
// Conexin con el servidor
mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
// Seleccin de Base de Datos
mysql_select_db($database) or die ("error2".mysql_error());
?>
Los comentarios (las he diferenciado con otro tono de color arriba), es decir, las lneas
que empiezan por // hablan por si solas, no? La primera nueva lnea conecta con el
servidor y la segunda con la base de datos.
Si por algn motivo falla la conexin con el servidor, se mostrar en el navegador el
mensaje "error1" y se deber seguramente a haber puesto mal el nombre del servidor,
de usuario o la contrasea en el archivo config.php
Si lo que falla es la seleccin de la base de datos, aparecer en la pantalla "error2" y
ser seguramente por haber escrito mal el nombre de la base de datos en el archivo
config.php
Si no aparece ninguno de esos mensajes ser que todo ha ido como esperabamos,
aunque no lo notaremos por el momento. Lo importante ser saber que la conexin est
hecha!!!

Solo nos queda indicar al servidor mediante el cdigo Php que inserte los datos
guardados en POST en la tabla USUARIOS. Esto se hace con esta sencilla lnea de
cdigo:
mysql_query (" INSERT INTO base.tabla (nombre de los campos) values (datos
correspondientes) ");
que en nuestro caso tomara la forma siguiente:
mysql_query ("INSERT INTO `cartago_basedepruebas`.`USUARIOS` (`NOMBRE`,
`EMAIL`, `URL`, `ESTADO`) VALUES ('$_POST[NOMBRE]', '$_POST[EMAIL]',
'$_POST[URL]', '$_POST[ESTADO]') ");
En esa lnea no hay nada raro, no? Se pone el nombre de tu base de datos, un punto, el
nombre de la tabla y luego dentro del primer parntesis el nombre de los campos y
dentro del segundo parntesis las palabras mgicas $_POST[nombre de campo], una
para cada campo que rescatamos del formulario.
Pues con eso queda guardada la informacin del formulario en nuesta base de datos.
Qu tal? Te ha parecido muy complicado? Imagino que no. Quizs muy diferente a
trabajar con Html, no? Pero te aseguro que hace tres das no sabia nada de Php, bases de
datos ni de formularios y mira, aqu estoy explicndote cmo se usan, je je. Es cierto,
tras unos cuantos ejemplos y testeos se me ha quedado bien grabado en la cabeza, no es
muy dificil.
An se pueden hacer miles de cosas con los valores guardados en la base de datos. Solo
necesitamos aprender un poco ms y podremos crear nuestros propios foros, sistemas de
mensajes, de noticias, hacer ms dinmicas nuestras webs dotndolas de registro de
usuarios, etc, etc, etc. Pero sigamos poco a poco, je je je.
Escribe tu nombre
tuemail@correcto
http:/ / www.tudirecciondepagina