Gua de Estudio
AVANZADO
Aplicable a las asignaturas Tecnologa de Internet
Elaborado por:
Ing. Alfredo Daz, M.Sc
Aldea: IUTC
1
2
SISTEMAS E INFORMTICA
MISIN SUCRE
ASIGNATURA: TECNOLOGA DE INTERNET
TRAYECTO III / TRIMESTRE II
GUIA DE ESTUDIO
TRABAJO CON FORMULARIOS EN PHP Y MYSQL
I. PRERREQUISITOS
El fin de esta gua es ilustrar al alumno acerca de la optimizacin de formularios PHP+MySQL
utilizando validacin de datos y confirmaciones, adems de mostrar el resultado de los
procesos y algunas variables del sistema, empleando funciones tiles de MySQL
Para tal efecto, debemos contar con lo siguiente:
1. Un editor de textos. En este caso, se utilizar Dreamweaver, el cual, es un software de
administracin de sitios web con soporte para los lenguajes php y html.
2. Un servidor (local) de apache/mysql. (se utilizar Wamp5 server)
3. Un administrador de bases de datos MySQL (Aunque el Wamp5 incluye el phpMyAdmin,
se utilizar el MySQL Front)
Es de destacar que TODOS estos programas deben estar instalados en cada equipo (pc)
donde se desarrollar la aplicacin web. Una vez hecho esto, sigamos los siguientes pasos:
II. CREACIN DE LAS TABLAS PARA UTILIZAR ESTA GUIA.
1. Abra su MySQL Front y luego haga clic sobre la base de datos test.
2. Luego, clickee sobre la seccin query del MySQL Front para copiar el siguiente cdigo:
CREATE TABLE IF NOT EXISTS `alumnos` (
`cedula` varchar(8) NOT NULL DEFAULT '' ,
`nombre` varchar(50) NOT NULL DEFAULT '' ,
`apellido` varchar(50) NOT NULL DEFAULT '' ,
`direccion` varchar(200) NOT NULL DEFAULT '' ,
`telefono` varchar(20) NOT NULL DEFAULT '' ,
`edocivil` varchar(50) NOT NULL DEFAULT '' ,
`correo` varchar(200) NOT NULL DEFAULT '' ,
PRIMARY KEY (`cedula`)
);
La vista quedar as:
3. Ahora, presione F9 para ejecutar la consulta. Si no existen errores, la tabla ser creada.
4. Para visualizar la tabla haga clic en el panel databases de la parte superior y presione F5
para refrescar la vista tal como se muestra a continuacin:
3
5. Antes de iniciar la creacin de los archivos para acceder a la base de datos desde
PHP/HTML, es necesario que abramos la carpeta C:\WAMP\WWW\CLASE que creamos en el
mdulo anterior. Si no existe, debemos crearla y ser all donde depositaremos todos los
archivos a crear en el transcurso de este curso.
Recordemos que la carpeta www de Wamp5 es una ubicacin especial donde se colocan
los archivos de los distintos proyectos PHP que tengamos. Es necesario que cada proyecto se
separe en una carpeta distinta y as poder trabajar ms organizadamente. Al momento de
ejecutar las pginas en nuestro navegador, debemos abrir el localhost y ubicarlos en el
directorio www.
PERSPECTIVA DE LA APLICACIN WEB (QU ACCIONES REALIZAR LA APLICACIN
WEB QUE DESARROLLAREMOS?
Se desarrollar una pequea aplicacin web para el ingreso de los alumnos de una institucin
educativa. Se utilizarn formularios en HTML con sus objetos textbox, labels, combos, etc. Se
aplicarn validaciones para verificar que todos los datos requeridos han sido ingresados. Al
mismo tiempo, se proceder a guardar los mismos y se optimizar el cdigo de tal manera que
puedan convivir rutinas de php y javascript con HTML.
As mismo, se utilizarn el alert() y confirm() para mostrar mensajes y confirmaciones
respectivamente.
El usuario deber ingresar su cdula, nombre, apellido, direccin, telfono, estado civil y correo
electrnico. Para el caso de la direccin se utilizar un objeto textarea y para el estado civil un
combobox. El resto de los objetos sern textboxes.
Cuando el usuario presione el botn Guardar, ser necesario que se verifique que todos los
datos hayan sido ingresados antes de enviarlos a la tabla existente en la base de datos. As
mismo, si los cambios se guardaron satisfactoriamente, se mostrar un cuadro de mensaje
informando dicha accin. Lo mismo ocurrira si se produce un error.
Un aspecto importante a destacar es el hecho de que luego de guardar o no un registro, se
enviar el usuario a la misma pgina alumnos.php, es decir, no se quedar la ventana del
navegador en blanco como se vio en cursos anteriores.
1. Primeramente, crearemos el archivo de formulario alumnos.php en el block de notas
2. Iniciemos bloc de notas (Presionemos INICIO+R) y escribimos notepad. Luego,
presionamos Enter, tal como se muestra en la figura:
3. All se mostrar la ventana principal de
notepad. Para mayor comodidad, debe
maximizarla.
Se preguntar por qu notepad y no
dreamweaver o frontpage? Sencillamente en
este curso, se pretende que usted aprenda
la sintaxis y lgica funcional de algunas
instrucciones en HTML, PHP y JavaScript,
para lo cual, debe evitar el uso de asistentes
o generadores de cdigo. De esta manera,
podr realizar alguna modificacin en futuras aplicaciones web an sin contar con algn editor
de pginas muy elaborado.
4. Primeramente, es necesario copiar el cdigo de la pgina 4 en el archivo en blanco
5. Abra el men Archivo/Guardar como y luego seleccione la carpeta c:\wamp\www\clase en
el campo Tipo seleccione Todos los Archivos. Coloque el nombre alumnos.php. Luego
presione Guardar (Importante: Debe indicar la extensin obligatoriamente)
4
<html>
<head><title>Agregar Alumnos</title></head>
<script language="javascript">
function validar(){
if(frmalumnos.txtcedula.value=="" || frmalumnos.txtnombre.value=="" ||
frmalumnos.txtapellido.value=="" || frmalumnos.txtdireccion.value=="" ||
frmalumnos.txttelefono.value=="" || frmalumnos.txtcorreo.value==""){
alert("Ingrese la cedula, nombre y apellido del alumno");
return false;
}else{
return true;
}
}
</script>
<body>
<form action="guardar_alumnos.php" method="post" name="frmalumnos">
<p><label>Cedula<input type="text" name="txtcedula" /></label></p>
<p><label>Nombre<input type="text" name="txtnombre" /></label></p>
<p><label>Apellido<input type="text" name="txtapellido" /></label></p>
<p><label>Direccin:<textarea name="txtdireccion">
</textarea></label></p>
<p><label>Telfono<input name="txttelefono" type="text" /> </label></p>
<p>
<label>Estado Civil
<select name="cmbedocivil" >
<option>Soltero</option>
<option>Casado</option>
<option>Divorciado</option>
<option>Concubinato</option>
<option>Viudo</option>
<option>No Especificado</option>
</select>
</label>
</p>
<p><label>Correo<input name="txtcorreo" type="text" /></label></p>
<p>
<label><input name="cmdGuardar" type="submit" value="Guardar"
onclick="return validar();" /></label>
<label><input name="cmdlimpiar" type="reset" value="Restablecer"
/></label>
</p>
</form>
</body>
</html>
Ahora, se analizar el cdigo insertado.
ANLISIS DEL CDIGO
5
1. Se observa la existencia de las etiquetas <html> y </html> al inicio y final del documento.
Esto indica que se trata de un documento que tiene la estructura de un archivo .html, aunque
tenga incrustaciones de cdigo php y javascript.
2. Note la presencia de los tags (etiquetas) <head> y </head> que delimitan el encabezado de
la pgina y dentro de ellas, el ttulo respectivo, especificado como <title> y </title>
3. En la seccin <body> y </body> se colocar el cdigo referente al cuerpo de la pgina. En
esta parte, haremos especial nfasis:
a. Lo primero que se observa, es la etiqueta <form> que se cierra con </form>, lo que nos
indica que estaremos trabajando con un formulario. Un formulario es un objeto contenedor de
una serie de elementos que permiten el ingreso, edicin, eliminacin o bsqueda de los datos
existentes en una base de datos (sea de MySQL, Access, SQL Server o cualquier otro motor).
Los formularios html, tienen los siguientes atributos o propiedades:
action="guardar_alumnos.php"
method="post"
name="frmalumnos"
En la propiedad action se deber indicar el nombre del archivo .php que procesar el
formulario en el servidor. En este caso, se utilizar el archivo guardar_alumnos.php que ser
creado posteriormente. Ntese que el nombre del archivo debe estar entre comillas y si no se
indica una ruta absoluta, se utilizar la relativa al documento.
Al mismo tiempo, se observa la propiedad name que es el nombre que tendr nuestro
formulario a efectos de cdigo fuente. Un nombre de objeto no debe tener espacios en blanco,
ni empezar por nmeros ni utilizar caracteres especiales.
Tambin es importante utilizar prefijos para saber con qu tipo de objeto estamos trabajando.
Es decir, frm para formularios, txt para textboxes, cmb para los botones de comando, cmb
para los comboboxes etc. Luego del prefijo se colocar el nombre del objeto. Para el caso del
formulario se utilizar frmalumnos. El nombre del objeto debe ir entre comillas, ya que es una
cadena de caracteres.
Otra de las propiedades a utilizar en el formulario es en mtodo (method) que se refiere al
modo en que se enviarn los datos al servidor. En este mbito existen dos: GET y POST. La
diferencia entre estos dos mtodos radica en la forma de enviar los datos a la pgina,
mientras que el mtodo GET enva los datos usando la URL, el mtodo POST los enva por la
entrada estndar STDIO. Es importante destacar que el mtodo debe ir entre comillas ya que
es un valor de tipo cadena de caracteres.
En otras palabras, si se utiliza el mtodo GET, los datos enviados al servidor se podrn
visualizar en la barra de direcciones, mientras que con el POST, no se visualizarn. Es muy
recomendable utilizar este ltimo por razones de seguridad.
Veamos el siguiente ejemplo utilizando el GET:
http://localhost/Clase/editar.php?id=1
Ahora, utilizando el POST
http://localhost/Clase/guardar_nuevo.php
Note que dentro del primer ejemplo, aparece un ? justo despus del nombre del archivo .php
que procesar los cambios en el formulario, y all, se colocan los parmetros y valores a enviar
al servidor. En este caso, es el parmetro id=1
6
Por su parte, en el segundo ejemplo, se observa que cuando se envan los parmetros al
servidor a travs del archivo guardar_nuevo.php, los parmetros enviados no se observan en la
barra de direcciones.
b. Ahora es el momento de detallar los objetos que estn contenidos dentro del formulario. Un
aspecto a destacar es la presencia de la etiqueta <p> </p> que indica inicio y fin de un nuevo
prrafo.
Dentro del formulario, se observan una serie de objetos, etiquetas y cuadros de texto que son
utilizados comnmente. En el caso de los labels o etiquetas, se emplean para colocar una
leyenda o ttulo a los cuadros de texto. Normalmente, van debajo o arriba de un textbox,
combo o botn, de acuerdo a lo que decida el diseador de la pgina web.
Los labels se delimitan por las tags <label> y </label>. En medio de estas tags se coloca el
texto deseado como rtulo del objeto. No confundir etiqueta de html o php con etiqueta de
ttulo de objeto en un formulario.
Por su parte, los cuadros de texto, se agregan colocando las tags <input type=text>.
El input indica que es un objeto que permite el ingreso de datos y el type especifica que se
trata de un cuadro de texto.
Los cuadros de texto tambin tienen un nombre (name) y el prefijo a utilizar ser txt. Observe
la siguiente lnea de cdigo:
<p><label>Cedula<input type="text" name="txtcedula" /></label></p>
Aqu se observa que comienza un prrafo <p> y luego se coloca una etiqueta <label> con el
texto Cedula (el texto de un label no va entre comillas) y a lado de sta, se dibuja un textbox
<input type=text> con el nombre txtcedula. Note que el type y name se colocan entre
comillas.
Finalmente, se cierra el prrafo </p>, el label </label> y el input />
Lo mismo se realiza con el resto de los objetos. (txtnombre, txtapellido, etc). Cada uno se
coloca en un prrafo (lnea) diferente con su etiqueta y nombre respectivo.
<p><label>Nombre<input type="text" name="txtnombre" /></label></p>
<p><label>Apellido<input type="text" name="txtapellido" /></label></p>
c. Tambin se puede observar textarea que permite el ingreso de un rea de texto. Muy usado
para los campos memo. En este formulario slo se emplear para la direccin. Los mismos
tienen la propiedad name y utilizaremos el mismo prefijo txt.
d. Para el caso del estado civil se observa el selecta area (o combobox) que muestra una
lista desplegable muy parecida a un cuadro de texto, pero con una flecha apuntando hacia
abajo en la parte derecha. Las propiedades de este objeto son:
name: que indica el nombre del objeto. El prefijo a utilizar ser cmb.
option: Se coloca para cada una de las opciones de la lista desplegable. Cada <option> cierra
con </option> y el texto entre ambos tags no se coloca entre comillas, tal como se muestra en
el siguiente cdigo:
7
<select name="cmbedocivil" >
<option>Soltero</option>
<option>Casado</option>
<option>Divorciado</option>
<option>Concubinato</option>
<option>Viudo</option>
<option>No Especificado</option>
</select>
Observe que un <select> cierra con un </select> y dentro de estos delimitadores, se colocan
los <option> respectivos que cierran con un </option>. En este caso, se observa que la lista
tendr 6 elementos.
e. Para enviar la informacin hacia la base de datos, se debe colocar un botn de comando
que procesar el archivo indicado en el form action, es decir el guardar_alumnos.php. Para
ello, se utiliza el <input> con el tipo submit
El botn Guardar tendr las siguientes propiedades:
name="cmdGuardar"
type="submit"
value="Guardar"
El name es el nombre del objeto. Se utilizar el prefijo cmd abreviatura de command button.
As mismo el type ser submit (enviar). Este valor debe ir entre comillas
El value es la leyenda que aparece sobre el botn. En este caso. guardar, la cual, tambin
debe ir entre comillas.
f Existe una observacin especial sobre este botn. Debemos preguntarnos qu pasara si el
usuario deja de ingresar algn dato obligatorio como la cdula, nombre, apellido, etc y luego
presiona Guardar. Lo ideal sera que se le mostrara un mensaje de error al usuario a travs de
un cuadro de mensaje. Para ello, se coloca el evento onclick el cual, recibe una cadena de
caracteres con el conjunto de instrucciones a ejecutar cuando el usuario presiona click sobre el
botn.
En este caso, se indica return validar() que no es ms que una invocacin a una funcin, es
decir, una serie de instrucciones especificadas en otra parte del archivo .php que en este caso,
se llama validar y que devolver verdadero (true) si el usuario ha ingresado la totalidad de los
datos requeridos y falso (false) si no lo ha hecho correctamente. La invocacin de la funcin
quedar as:
onclick="return validar();"
g. Antes de examinar la funcin, es importante acotar algo:
PHP es un lenguaje que se interpreta en el servidor, es decir, no se ejecuta en el computador
cliente de cada usuario que accede a nuestra pgina. Como el mensaje de error debe
mostrarse en cada usuario localmente, debemos buscar alternativas con un lenguaje que se
ejecute en las Pc cliente como JavaScript o Visual Basic Script (VBScript) por ejemplo.
En este caso, se utilizar JavaScript, ya que el cdigo js puede ejecutarse sin ningn problema
con Internet Explorer, Mozilla, Opera, etc; mientras que VBScript slo se ejecuta en
navegadores Microsoft (Internet Explorer).
h. Finalmente, es el momento de revisar el cdigo de la funcin validar() que ser escrito en
JScript. Para ello, debemos dirigirnos al inicio del documento html justo antes de comenzar el
<body> y despus del cierre de la etiqueta </head>. All se comenzar a escribir la seccin de
cdigo javascript. Para ello, se utiliza la etiqueta <script language> que desde luego cierra
con la respectiva </script> una vez que se terminan las instrucciones de jscript.
8
i. la funcin se escribe como se indica a continuacin:
<script language="javascript">
function validar(){
if(frmalumnos.txtcedula.value=="" ||
|| frmalumnos.txtapellido.value==""
frmalumnos.txtdireccion.value=="" ||
|| frmalumnos.txtcorreo.value=="")
{
alert("Ingrese la cedula, nombre
return false;
frmalumnos.txtnombre.value==""
||
frmalumnos.txttelefono.value==""
y apellido del alumno");
}else{
return true;
}
}
</script>
j. Lo primero que se valida es si el usuario dej algn campo sin rellenar. Por eso se observa el
if(.) a saber, Si la cdula O el apellido O el nombre O la direccin, telfono o correo
quedaron en blanco, mostrar un error.
Ntese la presencia de los caracteres || que son el equivalente a la conjuncin o la una o la
otra en castellano.
Si efectivamente se omiti algn valor obligatorio, se muestra una ventana de alerta (alert) que
indica al usuario que debe ingresar los datos obligatorios y luego retorna false. En el caso
contrario, slo retorna true.
De esta manera se validan los datos cuando el usuario hace clic en Guardar justo antes de
enviarlos al servidor.
Tambin se utiliza el botn Restablecer que no reviste mayores consideraciones. Slo que su
tipo ser reset y su nomnre cmdrestablecer. Este botn limpiar todos los objetos del
formulario.
INFORMACIN IMPORTANTE:
USO DE LA SENTENCIA IF EN JavaScript
IF es una estructura de control utilizada para tomar decisiones. Es un condicional que realiza
unas u otras operaciones en funcin de una expresin. Funciona de la siguiente manera,
primero se evala una expresin, si da resultado positivo se realizan las acciones
relacionadas con el caso positivo. La sintaxis de la estructura IF es la siguiente.
if (expresin) {
acciones a realizar en caso positivo
...
}
Opcionalmente se pueden indicar acciones a realizar en caso de que la evaluacin de la
sentencia de resultados negativos.
if (expresin) {
acciones a realizar en caso positivo
...
} else {
acciones a realizar en caso negativo
...
}
9
Fijmonos en varias cosas. Para empezar vemos como con unas llaves engloban las acciones
que queremos realizar en caso de que se cumplan o no las expresiones. Estas llaves han de
colocarse siempre, excepto en el caso de que slo haya una instruccin como acciones a
realizar, que son opcionales.
Otro detalle que salta a la vista es el sangrado (margen) que hemos colocado en cada uno de
los bloques de instrucciones a ejecutar en los casos positivos y negativos. Este sangrado es
totalmente opcional, slo lo hemos hecho as para que la estructura IF se comprenda de una
manera ms visual. Los saltos de lnea tampoco son necesarios y se han colocado tambin
para que se vea mejor la estructura.
Perfectamente podramos colocar toda la instruccin IF en la misma lnea de cdigo, pero eso
no ayudar a que las cosas estn claras. Es aconsejable que utilices los sangrados y saltos
de lnea necesarios para que las instrucciones se puedan entender mejor.
Veamos algn ejemplo de condicionales IF.
if (dia == "lunes")
document.write ("Que tengas un feliz comienzo de semana")
Si es lunes nos desear una feliz semana. No har nada en caso contrario. Como en este
ejemplo slo indicamos una instruccin para el caso positivo, no har falta utilizar las llaves.
Fjate tambin en el operador condicional que consta de dos signos igual.
Vamos a ver ahora otro ejemplo, un poco ms largo.
if (credito >= precio) {
document.write("has comprado el artculo " + nuevoArtculo) //enseo compra
carrito += nuevoArticulo //introduzco el artculo en el carrito de la compra
credito -= precio //disminuyo el crdito segn el precio del artculo
} else {
document.write("se te ha acabado el crdito") //informo que te falta dinero
window.location = "carritodelacompra.html" //voy a la pgina del carrito
}
10
Lo que hacemos es comprobar si la batera de nuestro supuesto ordenador est a cero
(acabada) y tambin comprobamos si el ordenador no tiene red elctrica (est
desenchufado). Luego, el operador lgico los relaciona con un Y, de modo que si est sin
batera Y sin red elctrica, informo que el ordenador se va a apagar.
10
11
etiquetas H1 no se escriben en la pgina, sino que son interpretadas como el significado de la
misma, en este caso que escribimos un encabezado de nivel 1. Como estamos escribiendo en
una pgina web, al poner etiquetas HTML se interpretan como lo que son.
Cmo llamar a una funcin?
Cuando se llaman a las funciones Para ejecutar una funcin la tenemos que llamar en cualquier
parte de la pgina, con eso conseguiremos que se ejecuten todas las instrucciones que tiene la
funcin entre las dos llaves. Para ejecutar la funcin utilizamos su nombre seguido de los
parntesis.
NombreDeLaFuncion()
CREACIN DEL ARCHIVO guardar_alumnos.php
1. Ahora es el momento de crear el archivo php que procesar nuestro formulario y guardar
los cambios hacia la base de datos (es el archivo que invocamos en el <form action=>. Para
ello, abrimos notepad y pegamos el siguiente cdigo:
<?php
$link=mysql_connect("localhost","root","");
mysql_select_db("test",$link);
$ced=$_POST["txtcedula"];
$nom=$_POST["txtnombre"];
$ape=$_POST["txtapellido"];
$dir=$_POST["txtdireccion"];
$tel=$_POST["txttelefono"];
$edo=$_POST["cmbedocivil"];
$cor=$_POST["txtcorreo"];
$sql="INSERT INTO alumnos
(cedula,nombre,apellido,direccion,telefono,edocivil,correo)
VALUES('$ced','$nom','$ape','$dir','$tel','$edo','$cor')";
$result=mysql_query($sql,$link);
if(mysql_errno()>0){
?>
<script language="javascript">
alert("Registro No Guardado");
location.href="alumnos.php";
</script>
<?php
}else{
?>
<script language="javascript">
alert("Registro Guardado");
location.href="alumnos.php";
</script>
<?php
}
?>
dentro
de
la
carpeta
11
12
RECUERDE: Al momento de guardar el archivo, debe seleccionar Archivo/Guardar
Como/Tipo=Todos los archivos y asegurarse de colocar la extensin .php
ANLISIS DEL CDIGO
a. Lo primero que se observa son los delimitadores del archivo php, a saber: <?php y ?> que
cierran todo el bloque de cdigo global.
b. Lo primero que se realiza es la apertura de la base de datos y la seleccin de la base de
datos con el respectivo mysql_connect() y mysql_select_db() respectivamente. La conexin
a la base de datos se apertura en la variable de objeto $link
$link=mysql_connect("localhost","root","");
Y se selecciona la base de datos test mediante la siguiente instruccin:
mysql_select_db("test",$link);
c. El siguiente paso es leer el valor que el usuario ingres en cada campo del formulario y
asignarlo a una variable dentro de nuestra rutina: dichas variables son: $ced, $nom, $ape, $dir,
$tel, $edo, $cor. Para tal fin, se lee el valor de cada objeto del formulario utilizando la
instruccin $_POST de la siguiente manera:
$var=$_POST[nombre_del_objeto_del_form];
$var es una variable a la que se le asignar el valor introducido por el usuario,
$_POST[] es la instruccin propia de HTML para recibir los valores. Si se utiliz el mtodo GET
en el formulario, la instruccin cambia a $_GET[]. En este caso, como el mtodo fue POST, se
emplear el $_POST[]. Las variables y sus asignaciones quedarn as:
$ced=$_POST["txtcedula"];
$nom=$_POST["txtnombre"];
$ape=$_POST["txtapellido"];
$dir=$_POST["txtdireccion"];
$tel=$_POST["txttelefono"];
$edo=$_POST["cmbedocivil"];
$cor=$_POST["txtcorreo"];
d. Ahora se crea la instruccin para insertar un nuevo registro dentro de nuestra tabla alumnos
de acuerdo a la siguiente sintaxis:
$var=INSERT INTO tabla (campo1, campo2, campoN) VALUES ($var1, $var2, $var3);
Donde $var es la variable tipo cadena que guardar toda la instruccin INSERT que se
ejecutar.
INSERT INTO es la instruccin SQL que permite la agregacin de un nuevo registro a la tabla.
tabla: es la tabla donde se agregar el registro nuevo.
(campo1, campo2, campoN) son los campos de la tabla a los cuales se le asignarn los
valores del nuevo registro. Los mismos deben ir separados por coma.
VALUES ($var1, $var2, $var3) especifica los valores que se asignarn a cada campo
indicado en la instruccin INSERT INTO. Se acostumbra asignar en VALUES una lista de
variables separadas por coma a las que previamente se les asign el valor de los textboxes del
formulario. IMPORTANTE: Si se han especificado 3 campos a asignar en la instruccin
INSERT INTO, tambin deben obligatoriamente aparecer 3 valores. De lo contrario, se
generar un error.
Tambin debe saber que las variables de la lista VALUES( ) deben estar separados por coma y
cada uno entre comillas, salvo que se pasen valores puntuales y algunos de ellos sea de tipo
numrico u otro tipo de dato incompatible. Puede revisar la ayuda de mysql para mayores
detalles.
12
13
$sql="INSERT INTO alumnos (cedula,nombre,apellido,direccion,telefono,edocivil,correo)
VALUES('$ced','$nom','$ape','$dir','$tel','$edo','$cor')";
e. Una vez que se ha creado la instruccin SQL general, se ejecuta con el mysql_query( )
f. Luego, se guarda el resultado en una variable llamada $result( )
$result=mysql_query($sql,$link);
g. Luego, se verifica si se ha producido un error con mysql_errno() que devuelve cero (0) si
todo sali bien. En el caso contrario, devuelve el nmero de error generado.
La idea es que si se ha producido algn error, muestra un cuadro de alerta, utilizando el alert()
de JavaScript y redirecciona el programa nuevamente hacia la pgina alumnos.php
if(mysql_errno()>0){
h. Debido a que incrustaremos unas lneas de cdigo en javascript, se hace necesario cerrar
parcialmente el cdigo php colocando un delimitador de cierre ?> para iniciar una pequea
rutina de javascript que muestra el mensaje por pantalla.
Ntese que la instruccin location.href propia de javascript nos enva a nuestra misma pgina
alumnos.php una vez que se han guardado los cambios satisfactoriamente, tal como se
muestra a continuacin:
<script language="javascript">
alert("Registro No Guardado");
location.href="alumnos.php";
</script>
y luego, procedemos a reabrir el fragmento de cdigo <?php ya que nuestro if qued
inconcluso ya que debemos indicarle al programa qu debe hacer en caso de existir algn error
al guardar los registros. Para ello, utilizamos el bloque de cdigo perteneciente al else.
<?php
}else{
i. Volvemos a cerrar el cdigo parcialmente con ?> para escribir unas cortas rutinas de
javascript y redireccionamos con location.href hacia nuestra pgina alumnos.php
<script language="javascript">
alert("Registro Guardado");
location.href="alumnos.php";
</script>
j. Finalmente reabrimos el cdigo php con su delimitador de apertura <?php slo para cerrar el
cdigo asociado al bloque if() que qued abierto en el else() y cerramos todo el cdigo php.
<?php
}
?>
PRUEBA DEL CDIGO EN EL NAVEGADOR
1. Ahora es el momento de ejecutar la pgina desde Wamp5. Haga click sobre la barra de
tareas en el icono de Wamp5
y se abrir la ventana localhost.
13
14
2. Ubique la carpeta clase y clickee
sobre ella para mostrar los archivos
que contiene.
RECUERDE: para ejecutar archivos
.php, debe iniciarse el servidor de este
lenguaje. De no ser as, pueden
generarse resultados inesperados en
la pgina.
3. Abra el archivo alumnos.php y se
ver como se muestra en la siguiente
figura.
14
15
<html>
<head><title>Consulta</title></head>
<body>
<formid="frmbuscar"name="frmbuscar"method="post"
action="criterios.php">
<p>Apellido<inputname="txtapellido"type="text"id="txtapellido"/>
<inputtype="submit"name="cmdbuscar"value="Buscar"/>
<inputtype="reset"name="Submit2"value="Restablecer"/>
</form>
</body>
</html>
2. En realidad este archivo no tiene nada destacable. Se trata de un formulario HTML con un
campo txtapellido que servir como criterio de bsqueda dentro de la tabla alumnos. El
formulario enviar el parmetro de bsqueda hacia el archivo criterios.php que es realmente
quien generar los resultados. Ntese la existencia de un textbox (input type=text), un botn
submit y otro de restablecer.
3. Ahora, guarde los cambios y genere un nuevo archivo en notepad al que llamaremos
criterios.php y se almacenar en nuestra carpeta c:\wamp\www\clase All, pegaremos el
siguiente cdigo:
<html>
<head><title>Buscar</title></head>
<body>
<table width="200" border="1">
<tr>
<th scope="col">Cédula</th>
<th scope="col">Apellidos</th>
<th scope="col">Nombres</th>
<th scope="col">Dirección</th>
<th scope="col">Teléfono</th>
</tr>
<?php
$ape=$_POST["txtapellido"];
$link=mysql_connect("localhost","root","");
mysql_select_db("test");
$sql="SELECT * FROM alumnos WHERE apellido LIKE '%$ape%'";
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result)){
?>
<tr>
<td><?php echo $row["cedula"]; ?></td>
<td><?php echo $row["apellido"]; ?></td>
<td><?php echo $row["nombre"]; ?></td>
<td><?php echo $row["direccion"]; ?></td>
<td><?php echo $row["telefono"]; ?></td>
</tr>
<?php
}
$numreg=mysql_num_rows($result);
echo "<p>No. de Registros coincidientes: $numreg";
mysql_free_result($result);
?>
</table>
</body>
</html>
15
16
16
17
apellido LIKE %LEON% Busca todos los apellidos que contengan la palabra LEON. Esto es
muy til cuando se tienen apellidos largos con espacios como por ejemplo: DE LEN
8. Luego, se ejecuta la consulta y se almacena en la variable de resultados $result
$result=mysql_query($sql,$link);
10. En este mundo, se inicia un ciclo repetitivo que se ejecuta mientras existan resultados
dentro de la variable $result. Para ello se utiliza la instruccin while (mientras). Su sintaxis es:
while(condicin){
Instrucciones
}
Donde condicin es una validacin que se realiza al principio del ciclo y que determinar si se
ejecuta o no. Si la condicin es true (verdadero), se ejecutarn las instrucciones que estn
entre las llaves. De ser false (falso), se salta el ciclo.
En este caso, la condicin se evala la expresin $row=mysql_fetch_array($result) es decir,
mientras existan registros (rows) dentro del conjunto de registros resultantes (array),
mostrar los valores dentro de la tabla
while($row=mysql_fetch_array($result)){
y luego de esto, se cierra parcialmente el bloque de instrucciones php. (?>)
11. Lo que sigue es dibujar las lneas horizontales (filas) de la tabla dependiendo de cuantos
registros haya encontrado. Para ello, se utiliza el <tr> </tr> y para colocar el valor de cada
columna de la fila se emplea el <td> </td>
Existe un detalle importante Los tags <td> y <tr> son nativos de HTML y no de php. Adems,
hemos cerrado arriba el cdigo php. Entonces, lo que debemos hacer sencillamente es abrir
brevemente en cada lnea un pequeo segmento de cdigo quedando as:
<td><?php echo $row["nombre_del_campo_en_la_tabla"]; ?></td>
El echo imprime un mensaje en la pantalla. En este caso, se muestra el contenido del campo
encerrado entre comillas y corchetes que pertenece al arreglo $row que previamente se utiliz
en el while para leer cada lnea del resultado.
Desde luego, cada lnea debe abrir y cerrar su fragmento de php con los delimitadores <?php>
y </php> respectivamente.
MUY IMPORTANTE: Recuerde que no puede mezclar instrucciones nativas de un lenguaje con
las de otro sin antes especificar con sus delimitadores dnde empieza y termina cada bloque
de programa.
Nuestra tabla queda as: Es importante destacar tambin que se cierra con un </table>
<tr>
<td><?php
<td><?php
<td><?php
<td><?php
<td><?php
</tr>
</table>
echo
echo
echo
echo
echo
$row["cedula"]; ?></td>
$row["apellido"]; ?></td>
$row["nombre"]; ?></td>
$row["direccion"]; ?></td>
$row["telefono"]; ?></td>
12. Para culminar el cdigo, debemos abrir un ltimo bloque de php para cerrar la llave final del
while que qued abierto anteriormente. Al mismo tiempo le mostramos un mensaje al usuario
indicando cuntos registros se encontraron dentro de la tabla.
17
18
<?php
}
$numreg=mysql_num_rows($result);
echo "No. de Registros coincidientes: $numreg";
mysql_free_result($result);
?>
Ntese la funcin mysql_num_rows() que devuelve el nmero de registros existentes dentro
de la variable resultado ($result) y que coinciden con el criterio de bsqueda. Esto es muy til
para el usuario para efectos de informacin.
13. Finalmente, se libera de la memoria el arreglo $result con la funcin $mysql_free_result()
14. Abra su wamp5 en la carpeta localhost / clase y ejecute el archivo buscar.php. Realice
pruebas de bsqueda.
18
19
8
strtolower(): Pasa a minsculas todos los caracteres de una cadena
Ejemplo
$var = strtolower("MiCaDeNa");
echo $var;
Devuelve:
micadena
strtoupper(): Pasa a maysculas todos los caracteres de una cadena
Ejemplo
$var = strtoupper("micadena");
echo $var;
Devuelve:
MICADENA
str_replace(): Reemplaza un carcter por otro en una cadena. Nota: Diferencia entre
maysculas y minsculas
Ejemplo
$var = str_replace("e","o","Lelele");
echo $var;
Devuelve:
Lololo
Obtencin de la fecha
getdate ( [int marca_de_tiempo] )
Devuelve un arreglo que contiene informacin de fecha o la hora local actual
19
20
Clave
Descripcin
0 a 59
0 a 59
"hours"
0 a 23
"mday"
1 a 31
"wday"
"mon"
1 a 12
"year"
"yday"
0 a 365
"weekday"
Sunday a Saturday
"month"
Ejemplo
<?php
$hoy = getdate();
print_r($hoy);
?>
El resultado del ejemplo seria algo similar a:
Array
(
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0]
=> 1055901520
)
1. Para ver un ejemplo completo de estas funciones, cree un archivo llamado primero.php,
gurdelo en la carpeta c:\wamp\www\clase y bralo con el motor de wamp5.Luego, copie
el siguiente cdigo:
20
21
<?php
echo "funcion getdate <br>";
$fecha = getdate();
print_r($fecha);
echo "<br><br>";
echo
echo
echo
echo
21
22
El archivo mysqldump se encuentra en c:\wamp\mysql\bin
Para respaldar la base de datos test (estructura y datos), presione INICIO+R para abrir la
ventana Ejecutar de Windows
Luego, escriba cmd y presione enter
Cuando aparezca la ventana de ms-dos, c:\documents > escriba: lo siguiente:
cd \wamp\mysql\bin <enter>
y luego escriba: mysqldump h localhost u root test > c:\mirespa.sql
y presione enter.
Aparentemente no ha ocurrido nada, pero se ha creado un archivo llamado mirespa.sql en el
disco c: que no es ms que un archivo de texto (con extensin ,sql) que contiene toda la
definicin y datos de nuestras tablas. Importante, este archivo no crea la base de datos;
solamente las tablas y datos.
Puede examinar este archivo abrindolo con block de notas. Ntese su estructura.
Si desea restaurar el archivo .sql hacia la base de datos, realice lo siguiente:
Abrimos el cmd de Windows xp (o posterior)
Cuando aparezca la ventana de ms-dos, c:\documents > escriba: lo siguiente:
cd \wamp\mysql\bin <enter>
y luego escriba: mysql h localhost u root test < c:\mirespa.sql
y presione enter.
Observe que para respaldar se utiliza el mysqldump que es una utilidad para respaldos en
mysql y para restaurar, se utiliza mysql que es un comando ejecutable desde Windows que
interpreta los archivos .sql y donde podemos administrar nuestras bases de datos en modo
texto.
Para restaurar un archivo .sql, con mysql front, slo debe copiar el contenido del mismo en la
ventana query, aunque primero debe crear la base de datos y seleccionarla.
El parmetro h es el nombre del servidor o direccin ip (para el caso local, se utiliza
localhost)
El parmetro u especifica el usuario. En este caso, root
test es el nombre de la base de datos a respaldar (en mysqldump) o a restaurar (en mysql)
> indica que el contenido de la base de datos se enva hacia un archivo y por el contrario, <
indica hacia dnde se restaurar el archivo .sql
22
23
c:\mirespa.sql es el archivo (o script) mysql que contiene el volcado de todas las tablas (y
datos) que se desean restaurar o respaldar segn sea el caso.
Para mayores detalles de cmo respaldar slo estructura sin datos u otras opciones de
respaldo/restauracin, consulte la ayuda de mysql.
2. EL MYSQL ADMINISTRATOR
MySQL Administrador es un software para la administracin de servidores de Bases de Datos
de MySQL que ha creado MySQL LAB y que cuenta con un entorno grfico de usuario muy
amigable. Permite realizar tareas administrativas sobre servidores de MySQL incluyendo:
la posibilidad de configurar las opciones de inicio de los servidores
inicio y detencin de servidores
monitoreo de conexiones al servidor
administracin de usuarios
monitoreo del estado del servidor, incluyendo estadsticas de uso
visualizacin de los logs de servidor
gestin de copias de seguridad y recuperaciones
visualizacin de catlogos de datos.
Instalacin y configuracin:
La descarga del programa se hace desde la pgina web de MySQL, en
http://dev.mysql.com/downloads/administrator, Tambin en la pgina de MySQL existen una
serie de FAQs que ayudan en la instalacin en caso de dudas, aunque la misma es bastante
simple, en http://www.mysql.com/products/administrator/.
Una vez instalado es necesario configurar una primera conexin contra un servidor de MySQL
para poder acceder a la administracin del mismo.
En la pantalla de configuracin se debern especificar los datos del servidor, nombre de
usuario, contrasea y puerto, de la base de datos a la cual se desea conectar.
Una vez introducidos de forma correcta, aparece la pantalla principal del programa:
23
24
Desde la pantalla principal se puede ver la informacin relativa al servidor de base datos al que
se ha conectado, as como las caractersticas de la mquina en la que se est ejecutando el
programa.
En la barra de men a travs de Tools, se tiene acceso a una consola de sistema (Windows o
Linux dependiendo del caso), un cliente de conexin a MySQL bajo lnea de comandos y a
MySQL Query Browser. Desde este mismo men, se accede a las opciones de configuracin
del administrador y de las conexiones que hay configuradas:
utilidades
accesibles
desde
la
ventana
principal
del
programa
son:
24
25
Server conections: Visualiza y gestiona las conexiones abiertas con el servidor de bases de
datos.
Health: Informacin sobre la carga del servidor
Server Logs: El historial de logs del servidor.
Replication Status: Con informacin de los sistemas replicados.
Backup: Para hacer una copia de seguridad de las bases de datos.
Restore: Para restaurar las copias de seguridad.
Catalogs: Para mostrar las bases de datos, visualizar, crear y editar las tablas.
Te invito a explorar con mayor deternimiento, las opciones proporcionadas por el MySQL
Administrator.
APENDICE: INDICE DE PROGRAMAS TILES PARA EL DESARROLLO WEB
Paint Shop Pro (Shareware)
Editor de imgenes. Excelente alternativa al photoshop
http://www3.jasc.com/pub/foreign/psp704sv.exe
The Gimp (Gratuito)
Programa de edicin de imgenes que permite inclusive crear banners. Es considerado
el mejor programa de este tipo que es gratuito.
ftp://ftp.cs.umn.edu/pub/gimp/v2.0/testing/gimp-2.0pre2.tar.gz
PafileDB
Administrador de descargas muy completo y adminstrable via web.
http://www.phparena.net/
Overlib
Javascript que permite que al pasar por encima de un enlace salga como una caja de
texto con informacin extra, como un layer o una capa.
http://www.bosrup.com/web/overlib/
osCommerce
Permite crear tu tienda on-line. Gratuito. Require PHP.
http://sourceforge.net/projects/tep/
http://www.oscommerce.com/
25
26
Coppermine
Galeras de fotos organizadas, administracin, etc.
http://coppermine.sourceforge.net/
Php-nuke
Facilita el diseo de pginas web administrables.
http://www.phpnuke.org
Drupal
Portal tipo php-nuke.
http://www.drupal.org/
En espaol:
http://drupal.badopi.org/
26
27
Asignacin:
1.- FORMULARIO HTML+PHP
Campos:
Cdigo
Descripcin
Deposito
Principal
Secundario
Ubicacin
Tabla: Productos
Cdigo: VARCHAR (10) pk
Descripcin VARCHAR (30)
Deposito VARCHAR (12)
Ubicacin VARCHAR (10)
2.- Cdigo para guardar ese registr.
Traer: formulario, guardar y la estructura de la tabla.
27