PHP
PHP
A QUIEN VA DIRIGIDO
Considere este libro como una guia sencilla, fácil de utilizar y con lo básico para
desarrollar una aplicación web con PHP y MySQL. Está dirigido a los programadores
que tienen intención de conocer como se desarrolla una aplicación web; en el
presente libro se tocan temas básicos y que ,sin su conocimiento, será muy difícil
el desarrollo de las mismas. PHP es un lenguaje de programación que trabaja sobre
Internet, por lo tanto, es indispensable conocer el lenguaje HTML, el cual es la
base de programación de las páginas web tanto estáticas, como dinámicas. Con el
presente libro, se aprenderá a realizar páginas web dinámicas basándonos en HTML y
PHP.
HTML
El HTML (Hyper Text Markup Language) es un lenguaje que sirve para escribir
hipertexto, es decir, documentos de texto presentado de forma estructurada, con
enlaces (links) que conducen a otros documentos o a otras fuentes de información
(por ejemplo bases de datos) que pueden estar en tu propia máquina o en máquinas
remotas de la red. Todo ello se puede presentar acompañado de cuantos gráficos
estáticos o animados y sonidos seamos capaces de imaginar.
ESTRUCTURA INICIAL
Ej.10001
<!--Este es un comentario -->
<HTML>
<HEAD>
<TITLE> Documento de prueba </TITLE>
</HEAD>
</BODY>
</HTML>
CABECERAS (HEAD)
La HEAD es la primera de las dos partes en que se estructura un documento HTML. En
la HEAD reside información acerca del documento, y generalmente no se ve cuando se
navega por él. En la HEAD se pone el elemento lleno <TITLE> que es una breve
descripción que identifica la página. Es lo que el navegador se guarda en el
"Bookmarks" (libro de marcas o libro de direcciones), con lo que crea la lista que
aparece en la orden "Go" de la barra de órdenes, lo que aparece en la esquina
superior izquierda cuando se imprime el documento, y lo que aparece en el marco de
la ventana del navegador. También lo guarda en su caché, y servirá para mostrar la
página, cuando sea llamada otra vez, sin necesidad de conectarse de nuevo al
servidor de origen. No hay que confundir el elemento <TITLE> con el nombre del
fichero. Por ejemplo, esta página está contenida en un fichero llamado head.htm y
el texto de su <TITLE> es: Head de un documento. Se escibirá asi:
<HEAD>
<TITLE>Head de un documento </TITLE>
</HEAD>
Dentro de la HEAD puede utilizarse otro elemento: META. Por ejemplo, si se escribe:
<HEAD>
<TITLE>Head de un documento </TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="10">
</HEAD>
Si se pone una fecha ya pasada, como la que hay en el ejemplo, el navegador elimina
inmediatamente de la caché la página recibida, y si no es pasada, lo hará en el
momento indicado por la misma. También se le puede dar valor cero a la fecha de
expiración:
<HEAD>
<TITLE>Head de un documento </TITLE>
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>
Este otro sirve para que los buscadores puedan ofrecer un breve resumen de los
contenidos de tu página:
<HEAD>
<TITLE>Head de un documento </TITLE>
<META NAME="description" CONTENT="Manual para escribir HTML.">
</HEAD>
Puedes poner todos los elementos <META> que creas necesarios, pero sin repetirlos.
Habrás notado que se ha utilizado la palabra "caché", y tal vez no sepas a qué se
refiere. Todos los navegadores, por defecto, siempre que reciben una página de un
servidor se hacen una copia de la misma en el disco de tu máquina. Con esto se
pretende que si vuelves a solicitar la misma página, en lugar de pedirla de nuevo
al servidor, te mostrará la que tiene guardada en el disco. A esta área del disco
donde el navegador va poniendo las páginas visitadas, se le denomina caché. El
tamaño de la caché lo puedes modificar desde las opciones de configuración del
navegador, e incluso puedes darle tamaño cero, con lo que siempre que veas una
página, ésta habrá sido solicitada al servidor independientemente de lo que digan
las instrucciones META. Hay otros elementos que pueden aparecer en la HEAD, como
ISINDEX, NEXTID, LINK o BASE, pero son de uso muy especializado y poco corriente,
algunos ya en desuso, y ninguno obligatorio (<TITLE> sí lo es).
COMENTARIOS
<!-- Coemntarios -->
</BODY>
</HTML>
ENCABEZADOS
<H1> Encabezado 1 ... Permite mostrar en un sstilo ya predeterminado, diferentes
tamaños para los titulos.g
Ej.10003
<HTML>
<HEAD>
<TITLE> Encabezados </TITLE>
</HEAD>
<BODY>
Esta es una priemr linea <BR>
<H1>Encabezado H1</H1>
<HR>
<H2>Encabezado H2</H2>
<HR>
<H3>Encabezado H3</H3>
<HR>
<H4>Encabezado H4</H4>
<HR>
<H5>Encabezado H5</H5>
<HR>
<H6>Encabezado H6</H6>
<HR>
</BODY>
</HTML>
TABLAS
<tabla> Etiqueta que permite iniciar las tablas <tr> Etiqueta con la que se inician
Filas <td> Etiqueta para crear celda (Columna) <th> Como la anterior solo que sirve
para encabezados de tablas
Tabla básica de 2x2 y 3X2
Ej. 10004
<table border="1">
<tr>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>C</td>
<td>D</td>
</tr>
</table>
Ej. 10005
A B C
D E F
<table border="1">
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
A B C
D E
<TABLE BORDER>
<TR>
<TD>A</TD>
<TD ROWSPAN=2>B</TD>
<TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD>
</TR>
</TABLE>
Ej. 10007
A B C D
E F G
<TABLE BORDER>
<TR>
<TD ROWSPAN=2>A/TD>
<TD>B</TD>
<TD>C</TD>
<TD>D</TD>
</TR>
<TR>
<TD>E</TD> <TD>F</TD> <TD>G</TD>
</TR>
</TABLE>
A 1 2
3 4
C D
<TABLE BORDER>
<TR>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>A</TD>
<TD>1</TD>
<TD>2</TD>
</TR>
<TR>
<TD>3</TD>
<TD>4</TD>
</TR>
<TR>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>C</TD>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>D</TD>
</TR>
<TR>
</TR>
</TABLE>
A B C
D E F
<TABLE BORDER CELLPADDING=10 CELLSPACING=0>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
Width=50% Width=50%
Celda 3 Celda 4
<TABLE BORDER WIDTH="50%">
<TR><TD>Width=50%</TD><TD>Width=50%</TD>
</TR>
<TR><TD>Celda 3</TD><TD>Celda 4</TD>
</TR>
</TABLE>
Celda
2
1
Celda
4
3
<TABLE BORDER WIDTH="50%">
<TR><TD>Celda 1</TD><TD>2</TD>
</TR>
<TR><TD>Celda 3</TD><TD>4</TD>
</TR>
</TABLE>
Bordes de colores en las tablas Ej.10023 Recuadro con ángulos redondeados Y este es
el código necesario:
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#DDE0FC" width="20"><img src="angulo1.gif" width="20" height="20">
<td bgcolor="#DDE0FC">
<td bgcolor="#DDE0FC" width="20"><img src="angulo2.gif" width="20" height="20">
</tr>
<tr>
<td bgcolor="#DDE0FC" width="20">
<td bgcolor="#DDE0FC">Recuadro con ángulos redondeados
<td bgcolor="#DDE0FC" width="20">
</tr>
<tr>
<td bgcolor="#DDE0FC" width="20"><img src="angulo4.gif" width="20" height="20">
<td bgcolor="#DDE0FC">
<td bgcolor="#E5E7FD" width="20"><img src="angulo3.gif" width="20" height="20">
</tr>
</table>
LISTAS
Para hacer una lista, se debe utilizar la directiva <UL>...</UL>; mientras que,
para cada elemento de la lista debe utilizarse la directiva <LI>...</LI>:
Listas Desordenadas
Ej. 10024
<UL>
<LI>Sr. Chema Pamundi</LI>
<LI>Sr. German Tequilla</LI>
<LI>Sr. Carmelo Coton</LI>
<LI>Sra. Carmen Tirosa</LI>
</UL>
Listas enumeradas
Para hacer una lista enumerada, se deberá especificar con la directiva
<OL>...</OL>. Cada elemento de la lista estará contenida entre <LI>...</LI>:
Ej. 10025
<OL>
<LI>Está conectado a la corriente?</LI>
<LI>Está el interruptor a ON?</LI>
<LI>Está la pantalla encendida?</LI>
<LI>Está la linea de alimentación caida?</LI>
</OL>
Listas de definiciones
Para formatear una lista de descripciones se usarán las directivas <DL>...</DL>.
Cada elemento debe especificarse entre <DT>...</DT>. Cada definición debe
especificarse entre <DD>...</DD>.
Ej. 10026
<DL>
<DT><B></DT>
<DD>Negrita (bold).</DD>
<DT><I></DT>
<DD>Cursiva (italic).</DD>
</DL>
Nota: Listas anidadas Dentro de un elemento de una lista se puede especificar otra
lista.
VINCULOS
Servici Descripción
Efecto
o Ejemplo
http:// Servicios WWW <A HREF="http://www.uv.es/"> WWW</A>
ftp:// Servicios FTP <A HREF="ftp://ftp.uv.es/">FTP</A>
news: Servicios NEWS <A HREF="news:'news.uv.es/">NEWS</A>
mailto: Servicios E-mail <A HREF="mailto:[email protected]/">E-mail</A>
file:'/
Fichero local <A HREF="indice.htm/">Fichero</A>
C|
<A HREF="indice.htm" TARGET="Ventana-2"> </A>
<A HREF="indice.htm" TARGET="_parent"> </A>
FRAMES
Los frames se declaran con la etiqueta <FRAMESET>, que debe ser colocada antes de
la etiqueta <BODY>. Si no se cumple este requisito, la etiqueta se ignorará.
Ej. 10027
<HTML>
<HEAD><TITLE> Título de la página </TITLE></HEAD>
<FRAMESET ROWS=75,*>
<FRAME SRC="frames1.htm" >
<FRAME SRC="frames2.htm" >
</FRAMESET>
<NOFRAMES>
<BODY>
Lo siento,su navegador no soporta frames.
Pulse <a href="frames1.htm>aquí </A>
para acceder a los contenidos de estas páginas.
</BODY>
</NOFRAMES>
</HTML>
FORMULARIOS
Las formas (<form>) son los elementos que se utilizan en HTML para agrupar objetos
o elementos que se van a enviar a otro programa para realizar ciertas acciones; a
continuación se muestra la sintaxis correspondiente:
<form action=”adondequieroir.php” method=”get” name=”minombre”>
...
...
</form>
Cuadros de texto
Estos elementos se utilizan para permitir al usuario la captura de información; se
tienen 3 diferentes tipos de elementos los cuales se diferencian solamente por
algunas propiedades. A continuación se muestra la sintaxis de cada uno de ellos:
<input type=”text” name=”nombredato” value=”valorinicial” size=”4” maxlenght=”20”>
La propiedad type indica en tipo de objeto que vamos a utilizar, la propiedad name
indica el nombre que se va a asignar al valor que se teclee en este campo, la
propiedad value nos indica el valor que se asignará por defecto (si no queremos que
tenga un valor en especial se indica de la siguiente forma value=””), con la
propiedad size le indicamos el tamaño del elemento, si colocamos size=”4” le
estamos indicando que en el elemento son visibles 4 caracteres que se escriban; la
propiedad maxlenght permite limitar el tamaño máximo de caracteres a escribir.
TextArea
Este elemento se utiliza para la captura de información que sabemos que va a ser
demasiada; permite especificar el número de renglones y columnas que queremos que
utilice el mismo
<textarea name=”nombre” rows=”10” cols=”25”>valor</textarea>
File
Estos elementos permiten al usuario el seleccionar un archivo de su computadora y a
través de ciertos mecanismos, enviarlo por email, o subirlo como adjunto a una base
de datos.
La sintaxis es la siguiente:
<input type=”file” name=”archivo” value=””>
}
Radiobuttons
Este elemento permite seleccionar UNA sola opción de una serie presentada. A
continuación se presenta la sintaxis de la misma:
<input type=”radio” name=”nombre” value=”1” checked>Si
<input type=”radio” name=”nombre” value=”2”>No
En este caso, la palabra reservada SELECT nos indica que el objeto va a ser una
lista de selección, de igual forma, contiene La propiedad NAME para especificar el
nombre que se asignará al valor(es) seleccionado(s). La propiedad size se utiliza
para especificar el número de opciones que serán visibles para el usuario y en este
ejemplo veremos la opción MULTIPLE, la cual nos indica que el usuario puede
seleccionar más de una opción, en caso de que queramos que solamente se elija una,
se omite esta propiedad.
Después de especificar las propiedades anteriores, tenemos que asignar los valores
que contendrá nuestra lista, lo cual se realiza con la sintaxis
<option value=”3”>Cuba
la propiedad value nos indica el valor que tomará esa opción al momento de
seleccionarla y en el ejemplo mostrado, después de cerrar el etiqueta <option...>
se muestra la palabra CUBA, la cual es la etiqueta que visualizará el usuario y si
es su elección, la seleccionará. Es decir la propiedad value cuyo valor es 3 es la
que tomará el objeto SELECT al momento de seleccionar la etiqueta Cuba.
En caso de no cerrar el etiqueta <select> con la etiqueta </select> es probable que
el despliegue en nuestro navegador web no sea el adecuado.
Checkbox
Al igual que las listas de selección, los checkbox permiten seleccionar una o más
opciones de las presentadas, o en su defecto, ninguna.
La sintaxis es la siguiente:
<input type=”checkbox” value=”1” checked>Etiqueta1
Button
Este objeto tiene las mismas propiedades que el anterior (submit) con la diferencia
de que se tiene que utilizar javascript para que realice cierta acción, en pocas
palabras es un botón virgen, el cual se genera con la siguiente sintaxis:
<input type=”button” value=”Almacenar” name=”enviar” OnClick=”accion;”>
La única diferencia con el objeto submit es que tenemos que especificarle QUE
acción realizar en caso de que se de click en el mismo, esto se comprenderá más
adelante cuando entremos a javascript.
Reset
Finalmente se explicará el objeto tipo reset, el cual no es más que un botón, que
al momento de presionarlo, inicializa los valores de los objetos tal y como estaban
al momento de cargar la página web, su sintaxis es la siguiente:
<input type=”reset” value=”Limpiar” name=”limpia”>
IMAGENES
En muchas aplicaciones es necesario utilizar imágenes para armar menú de
navegación, o simplemente como elemento que pertenece al diseño gráfico; para esto
se utiliza la siguiente sentencia de HTML:
<img src=”nombedeimagen” border=”ancho del borde de la imagen” width=”ancho” height=”alto”>
¿QUÉ ES CSS?
Hojas de Estilo en Cascada (Cascading Style Sheets), es un mecanismo simple que
describe cómo se va a mostrar un documento en la pantalla, o cómo se va a imprimir,
o incluso cómo va a ser pronunciada la información presente en ese documento a
través de un dispositivo de lectura. Esta forma de descripción de estilos ofrece a
los desarrolladores el control total sobre estilo y formato de sus documentos.
CSS funciona a base de reglas, es decir, declaraciones sobre el estilo de uno o más
elementos. Las hojas de estilo están compuestas por una o más de esas reglas
aplicadas a un documento HTML o XML. La regla tiene dos partes: un selector y la
declaración. A su vez la declaración está compuesta por una propiedad y el valor
que se le asigne.
body {
padding-left: 11em;
font-family: Georgia, "Times New Roman", serif;
color: red;
background-color: #d8da3d;
}
h1 {
font-family: Helvetica, Geneva, Arial, sans-serif;
}
/*Este es un comentario*/
</style>
</head>
<body>
Esta es una cadena
<h1>Aquí se aplicará el estilo de letra para el Título</h1>
Nuevamente otra cadena
</body>
</html>
MODELO DE CSS
h1, h2, h3 {
color: red;
}
o lo que es lo mismo
h1 {color: red;}
h2 {color: red;}
h3 {color: red;}
La propiedad, que en este caso sería color, especifica qué aspecto se va a cambiar.
En este ejemplo la propiedad cambiada será el color. Las propiedades que se desean
modificar en una CSS para un mismo selector pueden agruparse, pero será necesario
separar cada una de ellas con un punto y coma. p {text-align:center;color:red}
Normalmente se describe una propiedad por línea, de la siguiente manera:
h1 {
padding-left: 11em;
font-family: Georgia, "Times New Roman",Times, serif;
color: red;
background-color: #d8da3d;
}
SELECTORES
Selector Descripción
* Selector niversal, son todos los elementos del CSS
E E representa cualquier elemento del tipo E (span, p, …)
E F Todos los elementos F que sean descendentes de E
E > F Todos los elementos F que sean hijos de E
E:first-child De esta forma podemos seleccionar el primer elemento de tipo E
E:link , Selecciona los elementos E que sean un enlaces y no hayan sido
E:visited visitados (:link) y los si visitandos (:visited)
E:active ,
Selecciona los elementos de tipo E , en sus correspondientes
E:hover ,
acciones.
E:focus
Cogemos los elementos del tipo E que estén en el idioma (humano)
E:lang(c)
especificado en (c).
Se trata de cualquier elemento F inmediatamente despues del
E + F
elemento del tipo E
E[foo] Elementos del tipo E con el atributo foo
E[foo="ejemplo"] Elementos del tipo E con el atributo foo igual a “ejemplo”
Elementos del tipo E con el atributo foo contenga “ejemplo”. Se
E[foo~="ejemplo"
pueden añadir varias palabras separadas por espacios. ( =ALT +
]
0126)
Similar al anterior, pero se referirá a todos los elemento E tal
E[lang="es"] que su atributo lang comienze por “es”. Por ejemplo: “es_ES”,
“es_CA”,…
E[foo$="ejemplo" Elementos del tipo E en el que el atributo foo termine con
] “ejemplo”.
DIV.ejemplo Todos los elementos DIV que sean de la clase ejemplo
E#miID El elemento E en el que su ID sea igual miID
EL MODELO DE CAJA
Ej. 20004
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[http://www.w3.org/TR/] xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<style type="text/css">
p {
padding: 4px;
margin: 8px;
background-color: #DDDDDD;
}
p.cajita {
border-left: solid 2px black;
border-bottom: solid 2px black;
border-right: dashed 2px black;
border-top: dashed 2px black;
background-color: #DDaa54;
}
p.ele{
border-top: solid thin white;
border-left: solid thin white;
}
DIV{
background-color: #AAAAAA;
padding:10px;
}
</style>
<DIV>
<P class="cajita">Este es un texto del primer parrafo</P>
<P class="ele">Este es un texto del segundo parrafo</P>
<P>Este es un texto del tercer parrafo</P>
</DIV>
</body>
</html>
CAJAS FLOTANTES
Ej. 20005
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[http://www.w3.org/TR/] xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<style type="text/css">
p {
padding: 4px;
margin: 8px;
background-color: #DDDDDD;
}
p.cajita {
border-left: solid 2px black;
border-bottom: solid 2px black;
border-right: dashed 2px black;
border-top: dashed 2px black;
background-color: #DDaa54;
}
p.ele{
border-top: solid thin white;
border-left: solid thin white;
}
.capa1{
background-color: #AAAAAA;
padding:10px;
position:absolute;
left:192px;
top:114px;
width:334px;
height:226px;
z-index:1;
}
.capa2{
background-color: #CC3211;
padding:10px;
position:absolute;
left:280px;
top:190px;
width:334px;
height:226px;
z-index:2;
}
</style>
<DIV class="capa1">
<P class="cajita">Este es un texto del primer parrafo</P>
<P class="ele">Este es un texto del segundo parrafo</P>
<P>Este es un texto del tercer parrafo</P>
</DIV>
<DIV class="capa2">
<P>Otros datos de la capa dos</P>
</DIV>
</body>
</html>
VISIBILIDAD DE CAPAS
Se puede interactuar entre javascript y css
Ej. 20006
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[http://www.w3.org/TR/] xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<style type="text/css">
#capa1{
background-color: #AAAAAA;
padding:1em;
position:absolute;
left:50px;
top:100px;
visibility:hidden;
font:bold 14pt Verdana;
color: red;
width:334px;
height:226px;
border:solid 1px black;
}
#capatexto{
position:absolute;
left:10px;
top:10px;
font:bold 14pt Verdana;
visibility:show;
}
</style>
<script languaje="javascript1.2">
function muestraCapa(n){
eval("document.all.capa"+n+".style.visibility='visible'");
}
function ocultarcapa(n){
eval("document.all.capa"+n+".style.visibility='hidden'");
}
</script>
<DIV id="capatexto">
<a href="#" onMouseOver="muestraCapa(1);" onMouseOut="ocultarcapa(1);">_Haz click en este
vinculo</a>
</DIV>
<DIV id="capa1">
Este es el texto que queria mostrar
</DIV>
</body>
</html>
JavaScript
JavaScript es un lenguaje de programación que se utiliza principalmente para crear
páginas web dinámicas. Una página web dinámica es aquella que incorpora efectos
como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar
botones y ventanas con mensajes de aviso al usuario. Técnicamente, JavaScript es un
lenguaje de programación interpretado, por lo que no es necesario compilar los
programas para ejecutarlos. En otras palabras, los programas escritos con
JavaScript se pueden probar directamente en cualquier navegador sin necesidad de
procesos intermedios.
EL PRIMER SCRIPT
Ej. 30001
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ejemplo de código JavaScript en el propio documento</title>
<script type="text/javascript">
alert("Como novedad un Hola Mundo");
</script>
</head>
<body>
<p>Un párrafo de texto.</p>
<script type="text/javascript">
alert("Este es otro mensaje");
</script>
<p>Y esto salio despues</p>
</body>
</html>
PROGRAMACIÓN BÁSICA
Variables, comentarios y escritura de datos Las variables como en otros lenguajes
se declaran
Ej. 30002
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<script type="text/javascript" lanjuage="javascript1.2">
/*Este es un comentario*/
document.write("Imprecion de variablesr<br>");
var variable1 = 5;
document.write("el valor de la variable es: "+variable1+"<br>");
</script>
</body>
</html>
Tipos de variables
Aunque todas las variables de JavaScript se crean de la misma forma (mediante la
palabra reservada var), la forma en la que se les asigna un valor depende del tipo
de valor que se quiere almacenar (números, textos, etc.)
Ej. 30003
<script type="text/javascript" lanjuage="javascript1.2">
/*Este es un comentario*/
var variable1 = 5;
var variable2 = 60.5;
var cadena = "el valor de la \'variable\' es ";
document.write(cadena+variable1+" " +variable2+"<br>");
</script>
OPERADORES
aritméticos
FUNCIONES
Ej. 3000
<script type="text/javascript" lanjuage="javascript1.2">
function creaMensaje() {
var mensaje = “Mensaje de prueba”;
}
creaMensaje();
alert(mensaje);
</script>
DOM
Ej. 3000
<script type="text/javascript" lanjuage="javascript1.2">
// Crear nodo de tipo Element
var parrafo = document.createElement("p");
// Crear nodo de tipo Text
var contenido = document.createTextNode("Hola Mundo!");
// Añadir el nodo Text como hijo del nodo Element
parrafo.appendChild(contenido);
// Añadir el nodo Element como hijo de la pagina
document.body.appendChild(parrafo);
</script>
EVENTOS
Ej. 3000
<div onclick="alert('Has pinchado con el ratón');">
Puedes pinchar sobre este elemento o simplemente pasar el ratón por encima
</div>
FORMULARIOS
Utilidades básicas para formularios
Ej. 3000
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[http://www.w3.org/TR/] xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<p>hola</p>
<form name="formulario" id="formulario" >
<input type="text" name="elemento" id="elemento" />
<hr>
<input type="radio" value="si" name="pregunta" id="pregunta_si"/> SI
<input type="radio" value="no" name="pregunta" id="pregunta_no"/> NO
<input type="radio" value="nsnc" name="pregunta" id="pregunta_nsnc"/> NS/NC
<input name="cmden" value="Validar" type="submit" onClick="valida()">
<hr>
<input type="checkbox" value="condiciones" name="condiciones" id="condiciones"/> He
leído y acepto las condiciones
<input type="checkbox" value="privacidad" name="privacidad" id="privacidad"/> He leído
la política de privacidad
<input name="cmden" value="Validar 1" type="submit" onClick="valida1()">
<hr>
<select id="opciones" name="opciones">
<option value="1">Primer valor</option>
<option value="2">Segundo valor</option>
<option value="3">Tercer valor</option>
<option value="4">Cuarto valor</option>
</select>
<input name="cmden" value="Validar 1" type="submit" onClick="valida2()">
</form>
Requerir informacion
Ej. 3000
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"[http://www.w3.org/TR/] xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Codigo Java</title>
</head>
<body>
<form action="" method="" id="f1" name="f1" onsubmit="return validacion()">
//Si no se captura datos no permite pasar
<input type="text" id="campo" onkeypress="return permite(event, 'num')" />
// Sólo letras
<input type="text" id="texto" onkeypress="return permite(event, 'car')" />
<input type="submit" name="cmdenvia" value="Mandar">
</form>
<script type="text/javascript" lanjuage="javascript1.2">
function validacion() {
valor = document.getElementById("campo").value;
if( valor == null || valor.length == 0 || /^\s+$/.test(valor) ) {
alert ("Es necesario capturar datos");
document.getElementById("campo").focus();
return false;
}
}
</script>
</body>
</html>
indice = document.getElementById("opciones").selectedIndex;
if( indice == null || indice == 0 ) {
return false;
}
}
</script>
</body>
</html>
OTRAS UTILIDADES
Tooltip
[http://www.bosrup.com/web/overlib/?Download
INTRODUCCION
¿QUE ES PHP?
PHP (acronimo: Hypertext Preprocessor) es un lenguaje interpretado de alto nivel
embebido en páginas HTML y ejecutado en el servidor. Una respuesta corta y concisa,
pero que significa realmente? Un ejemplo nos aclarará las cosas: Ejemplo 1-1. Un
ejemplo introductorio
Ej. 40001
<html>
<head>
<title>Ejemplo 40001</title>
</head>
<body>
<?php echo "Hola Mundo Que novedad no..."; ?>
</body>
</html>
HISTORIA
PHP fue originalmente diseñado en Perl, seguidos por la escritura de un grupo de
CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus
Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos,
como la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue
publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su
propio Form Interpreter para crear PHP/FI. Php 3 Dos programadores israelíes del
Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico
(parser en inglés) en el año 1997 y crearon la base del PHP3, cambiando el nombre
del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones
públicas de PHP3 y fue publicado oficialmente en junio del 1998. Para 1999, Suraski
y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como
Zend Engine o motor Zend, un portmanteau de los nombres de ambos, Zeev y Andi.
También fundaron Zend Technologies en Ramat Gan, Israel.
PHP 4
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El día
13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión
4 de PHP,[1] a pesar de lo anunciado se ha liberado una nueva versión con mejoras
de seguridad,la 4.4.8 publicada el 13 de Enero del 2008. Según esta noticia [1] se
dará soporte a fallos críticos hasta el 2008-08-08.
PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine II (o
Zend Engine 2). La versión más reciente de PHP es la 5.2.6 (1 de Mayo de 2008), que
incluye todas las ventajas que provee el nuevo Zend Engine 2 como: Esta por salir
la version 6
Ej. 40003
<?php
/*
Este tipo de documentacion
es de varias lineas
*/
phpinfo();
//phpinfo muestra las directivas y servicios instalados
//del servicio apache , mysql , php etc ...
?>
Mi primer script
Ej. 40004
<html>
<head>
<title>Ejemplo 40004</title>
</head>
<body>
<?php
echo "Mi primer mensaje envevido en html";
echo "Otro mensaje<BR>";
echo "Y uno ams";
?>
</body>
</html>
Tipos de Datos
Como en todos los lenguages tenemos tipos de datos
array números en punto flotante entero objeto cadena
Ej. 40005
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$cad = 5;
echo gettype($cad).'<br>';
$cad = 5.8;
echo gettype($cad).'<br>';
$cad = "Cadena";
echo gettype($cad).'<br>';
$cad = True;
echo gettype($cad).'<br>';
?>
</BODY>
</html>
VARIABLES
Conceptos basicos
No hay mucho que hablar de las variables en PHP todo se reduce a lo siguiente: En
PHP las variables no se declaran solo se usan. PHP El servidor se encarga de
asignarle un determinado tipo.
Enteros $variable = 124; $variable = -124; $variable = 0124; $variable = 0x12;
Punto flotante $variable = 1.24; $variable = -1.24; $variable = 0124; $variable =
0x12;
Cadena $variable = 'Esta es una cadena';
Nota: Para conocer el tipo de datos se utiliza gettype($variable)
Array unidimensionales
$variable[0] = "Esta es una cadena"; $variable[1] = "Esta es una cadena";
$variable"A" = 13;
Objetos Las clases de objeto son creadas atrabes de las clase Ej.
Ej. 40006
<?php
class nueva_clase {
function funcion1 () {
echo "Mensaje";
}
}
$variable = new nueva_clase;
$nueva_clase->funcion1();
?>
Arrays Multidimensionales
Los arrays multidimensionales son bastante simples actualmente. Para cada dimensión
del array, se puede añadir otro valor
[clave] al final:
$variable[1] = $variable;
$variable["A"]= $variable;
$variable[1][0] = $variable;
$variable["A"][2] = $variable
$variable[3]["A"] = $variable;
En este caso estamos definiendo un arreglo cuyos elementos van a ser arreglos con
valores similares, si pudiésemos visualizar físicamente este arreglo tendría la
siguiente estructura:
En este caso se esta imprimiendo todo el arreglo mediante un ciclo y utilizando las
funciones current, y next.
Podemos colocar esta función con el objeto de analizar como se puede pasar un
arreglo como parámetro.
Ej. 40006_D
<?php
$estados=array("Aguascalientes", "BCN", "BCS","DF");
function avanza($estados) {
do {
$valor=current($estados);
print "El valor es: $valor <br>";
}while (next($estados));
}
avanza($estados);
?>
Variables Predefinidas
se pueden encontrar con la funcion phpinfo();
Ej. 40007
<?php
phpinfo();
?>
Variables de Apache
Estas variables son creadas por el servidor web Apache
Ej. 40008
<?php
echo 'IP'.$_SERVER['REMOTE_ADDR'];
?>
Variables de Entorno
Ejemplo las variables de CGI
Ej. 40009
// hello.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(void)
{
printf("Content-type: text/html\n\n");
printf("<HTML><HEAD><TITLE>Hello World Wide Web</TITLE></HEAD>");
printf("<BODY BGCOLOR=\"#FFFFFF\"><P ALIGN=CENTER>");
printf("<H1>Primer CGI</H1>");
printf("Mi primer CGI");
printf("</BODY></HTML>");
Variables de PHP
PHP_SELF _POST _GET _COKKIES _SESSION
Ambito de las variables
El ambito es el contexto dentro del que esta definida la variable veamos los
diferentes ambitos
Basico: Se utiliza la variable dentro del escript creada, abarca los ficheros
incluidos y requeridos.
Local de funcion: Esta variable solo va ha mantener su valor dentro de la funcion
declarada exclusivamente
Globales: Estas se utilizan tanto dentro como fuera de las funciones y siguen
manteniendo su valor
variables variables
Son Valiables que se crean apartir de otras Ej. 40010
<?php
$a="hola";
$$a = "pp";
echo $hola;
?>
Constantes
Las constantes mantienen su valor durante toda la ejecucion de la aplicacion
Ej. 40011
<?php
define (EstaesConstante,"valor de la constante");
echo EstaesConstante.'<br>';
?>
EXPRESIONES
Operadores
Las expresiones son la piedra angular de PHP. En PHP, casi cualquier cosa que
escribes es una expresión. La forma más simple y ajustada de definir una expresión
es "cualquier cosa que tiene un valor".
Operadores Aritméticos
ejemplo nombre resultado $a + $b Adición Suma de $a y $b. $a - $b Substracción
Diferencia entre $a y $b. $a * $b Multiplicación Producto de $a and $b. $a / $b
División Cociente de $a entre $b. $a % $b Módulo Resto de $a dividido entre $b.
Operadores de asignacion
$a = 5; $a += 7; Es como decir $a = $a + 7; $b = "Hola "; $b .= " Mundo"; establece
$b a "Hola Mundo" => $b = $b . "Mundo";
Operadores Bit a bit
ejemplo nombre resultado $a & $b Y Se activan los bits que están activos tanto en
$a como $b. $a | $b O Se activan los bits que están activos en $a o que lo están en
$b. $a ^ $b Xor Se activan los bits que están activos en $a o en $b pero no en
ambos a la vez.
Ej.10001
Operadores de Comparación
ejemplo nombre resultado $a == $b Igualdad Cierto si $a es igual a $b. $a === $b
Identidad Cierto si $a es igual a $b y si son del mismo tipo $a != $b Desigualdad
Cierto si $a no es igual a $b. $a < $b Menor que Cierto si $a es estrictamente
menor que $b. $a > $b Mayor que Cierto si $a es estrictamente mayor que $b. $a <=
$b Menor o igual que Cierto si $a es menor o igual que $b. $a >= $b Mayor o igual
que Cierto si $a es mayor o igual que $b.
Operadores de Comparacion
ejemplo nombre resultado $a == $b I
Operadores de Ejecucion
Ver también system(), passthru(), exec(), popen(), y escapeshellcmd().
Operadores de Incremento/decremento
ejemplo nombre efecto ++$a Preincremento Incrementa $a en uno y después devuelve
$a. $a++ Postincremento Devuelve $a y después incrementa $a en uno. --$a
Predecremento Decrementa $a en uno y después devuelve $a. $-- Postdecremento
Devuelve $a y después decrementa $a en uno.
Operadores Lógicos
ejemplo nombre resultado $a and $b Y Cierto si tanto $a como $b son ciertos. $a or
$b O Cierto si $a o $b son ciertos. $a xor $b O exclusiva Cierto si $a es cierto o
$b es cierto, pero no ambos a la vez.
ESTRUCTURAS DE CONTROL
If , else, elseif
If es una estructura condicional puede ser de tres tipos simple, en cascada y
anidado. Simple
Ej. 40012
<?php
$variable = 10;
$variable2 = 20;
if($variable <= $variable2 and $variable = 20){
echo “Variable es igual a 20”;
}else{
echo “Variable no es igual a 20”;
}
?>
Cascada
Ej. 40014
<?php
$edad = 30;
if($edad <=10 ){
echo “NiNO”;
}elseif($edad>10 and $edad<16){
echo “ADOLECENTE”;
}elseif($edad>15 and $edad<26){
echo “JOVEN”;
}elseif($edad>25 and $edad<61){
echo “ADULTO”;
}elseif($edad>60 and $edad<70){
echo “ADULTO MAYOR”;
}elseif($edad>=70){
echo “SENECTUD”;
}
?>
Do while, while
Es una estructura de ciclo que permite repetir estructuras hasta que una condicion
sea falsa la proposicion. Do while
Ej. 40015
<?php
$var = 0;
do{
echo 'Esta es una impresion de '.$var.'<br>';
}while($var!=0);
echo “Salio”;
?>
While
Ej. 40016
<?php
$var = 0;
while($var!=0){
echo 'Esta es una impresion de '.$var.'<br>';
}
echo “Salio”;
?>
for Esta estructura permite iniciar un valor entero y terminar en otro este proceso
va ha ciclar todas las instrucciones contenidas dentro de dicha estructura mientras
la condicion sea verdadera
Ej. 40017
<?php
for ($i=1;$i<=10;i++){
echo 'Esta es la '.$i.' linea<br>';
}
?>
foreach
Esto simplemente da un modo fácil de iterar sobre arrays Ej. 40018
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$cad = array(1, 2, 3, 17);
foreach($cad as $v => $c) {
echo $v. ' = ' . $c. '<br>';
}
$cad = "";
echo '<hr>';
$cad["A"] = 1;
$cad["B"] = 2;
$cad["C"] = 3;
$cad["D"] = 17;
foreach($cad as $v => $c) {
echo $v. ' = ' . $c. '<br>';
}
$cad = "";
echo '<hr>';
$cad = array("1"=>"Enero","2"=>"Febrero","3"=>"Marzo","4"=>"Abril",);
foreach($cad as $v => $c) {
echo $v. ' = ' . $c. '<br>';
}
?>
</BODY>
</html>
Break
break escapa de la estructuras de control iterante (bucle) actuales for, while, o
switch.
break accepta un parámetro opcional, el cual determina cuantas estructuras de
control hay que escapar.
Ej. 40019
for ($i=1;$i<=10;$i++){
for ($j=1;$j<=10;$j++){
echo 'Valor de i:'.$i.' Valor de j: '.$j.'<br>';
if($j == 5) break;
}
echo '<hr>';
}
?>
Ej. 40020
for ($i=1;$i<=10;$i++){
for ($j=1;$j<=10;$j++){
echo 'Valor de i:'.$i.' Valor de j: '.$j.'<br>';
if($j == 5) break 2;
}
echo '<hr>';
}
?>
continue continue se usa dentro de la estructura del bucle para saltar el resto de
la iteración actual del bucle y continuar la ejecución al comienzo de la siguiente
iteración.
continue accepta un parámetro opcional, el cual determina cuantos niveles (bluces)
hay que saltar antes de continuar con la ejecución.
Ej. 40021
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
for ($i=1;$i<=10;$i++){
for ($j=1;$j<=10;$j++){
if($j == 5) continue;
echo 'Valor de i:'.$i.' Valor de j: '.$j.'<br>';
}
echo '<hr>';
}
?>
</BODY>
</html>
Ej. 40022
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
for ($i=1;$i<=10;$i++){
for ($j=1;$j<=10;$j++){
if($j == 5) continue 2;
echo 'Valor de i:'.$i.' Valor de j: '.$j.'<br>';
}
echo '<hr>';
}
?>
</BODY>
</html>
switch
La sentencia switch es similar a una serie de sentencias IF en la misma expresión.
En muchas ocasiones, se quiere comparar la misma variable (o expresión) con nuchos
valores diferentes, y ejecutar una parte de código distinta dependiendo de a qué
valor es igual. Para ello sirve la sentencia switch.
Ej. 40022
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<FORM method="POST" action="" name ="Form1">
<SELECT name="select">
<option>opera</option>
<option>mozilla</option>
<option>konqueror</option>
<option>Nezcape</option>
</SELECT>
<INPUT type="submit" name="cmdmandar" value="Mandar">
</FORM>
<?php
$browserName = $_POST[select];
switch ($browserName) {
case 'opera':
echo 'opera';
break;
case 'mozilla':
echo "Mozilla";
break;
case 'konqueror':
echo 'Konqueror';
break;
default:
echo 'Default';
break;
}
?>
</BODY>
</html>
require()
La sentencia require() se sustituye a sí misma con el archivo especificado, tal y
como funciona la directiva #include de C. Un punto importante sobre su
funcionamiento es que cuando un archivo se incluye con include() o se requiere con
require()), el intérprete sale del modo PHP y entra en modo HTML al principio del
archivo referenciado, y vuelve de nuevo al modo PHP al final.
Ej. 40023
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
for($i=0;$i<=10;$i++){
//include('40023_A.php');
require('40023_A.php');
}
?>
</BODY>
</html>
Ej. 40023_A
<?php
echo 'Hola '.$i.'<br>';
?>
include()
La sentencia include() incluye y evalúa el archivo especificado. Ej. Repetir el
anterior y documenatr require y activar include
include() difiere de require() en que la sentencia include se re-evalúa cada vez
que se encuentra (y sólo cuando está siendo ejecutada), mientras que la sentencia
require() se reemplaza por el archivo referenciado cuando se encuentra por primera
vez, se vaya a evaluar el contenido del archivo o no (por ejemplo, si está dentro
de una sentencia if cuya condición evaluada es falsa).
FUNCIONES
Funciones definidas por el usuario
Sintaxi:
function ($arg_1,$arg_2,...,$arg_n){
$variable “Mensaje”;
return $variable;
}
Funcion simple
Unicamente se declara y se realiza una accion sin asignarla a alguna variables
Ej. 40024
<?php
function mensaje(){
echo "Hola";
}
mensaje();
?>
Funcion X Valor
Los parámetros de una función se pasan por valor (de manera que si cambias el valor
del argumento dentro de la función, no se ve modificado fuera de ella
Ej. 40025
<?php
function mensaje($a){
$a += 5;
echo $a.'<br>';
}
$a = 10;
echo $a.'<br>';
mensaje($a);
echo $a;
?>
Funcion X Referencia
Si deseas permitir a una función modificar sus parámetros, debes pasarlos por
referencia. Si quieres que un parámetro de una función siempre se pase por
referencia, puedes anteponer un ampersand (&) al nombre del parámetro en la
definición de la función
Ej. 40026
<?php
function mensaje(&$a){
$a += 5;
echo $a.'<br>';
}
$a = 10;
echo $a.'<br>';
mensaje($a);
echo $a;
?>
ENVIO DE ARCHIVOS
En ocaciones es necesario subir archivos al servidor ya sea como tareas, contratos,
fotografias, grafias, documentacion escaneada, etc... Para ello php proporciona
algunas funciones para poder subir de forma muy rapida archivos al server toma el
siguiente ejemplo y pruebalo toma en cuenta los permisos tanto de los archivos que
subes como las carpetas en donde se guardan.
Ej. 40031
<form action="40031_A.php" method="post" name="f_prof" id="f_prof" enctype="multipart/form-data">
fichero: <input type="file" name="fichero" id="fichero">
<input type="submit" name="enviar" value="enviar">
</form>
Ej. 40031_A
<?php
echo $_FILES['fichero']['name'];
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {
echo '<H2>Se envio el archivo a temporal...<H2>';
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $_FILES['fichero']['name']))
{
echo '<H4>Se envio el archivo...<H4>';
}
}
?>
Estos son los errores definidos para la acción de upload, mismos que se presentan
automáticamente en caso de fallar el proceso:
#define UPLOAD_ERROR_A 1 /* El archivo excede el tamaño de upload_max_filesize */
#define UPLOAD_ERROR_B 2 /* El archivo excede el tamaño de MAX_FILE_SIZE */
#define UPLOAD_ERROR_C 3 /* Parcialmente enviado */
#define UPLOAD_ERROR_D 4 /* No fue enviado */
#define UPLOAD_ERROR_E 5 /* Tamaño del archivo enviado 0 bytes */
FUNCIONES DE FECHA Y HORA
mktime
obtiene el timestamp UNIX de una fecha
Sintaxis:
int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])
Ej. 40032
<?php
echo 'Fecha sin formato'.mktime(0,0,0,12,1,1998).'<br>';
//Pero esto no nos dice nada pero si ponemos la funcion
echo 'Fecha con formato: '.date( "M-d-Y", mktime(0,0,0,12,1,2008) );
?>
Lo importante de esta funcion es que tomemos en cuenta el orden de los meses y los
dias podria conciderarse que estan al reves pero no es asi.
date
Da el formato para alguna fecha u hora .
Sintaxis:
string date (string format [, int timestamp])
checkdate
Verifica si una fecha es valida o no lo es
Sintaxis:
int checkdate (int month, int day, int year)
Ej. 40034
<?php
$dia = 12;
$mes = 13;
$axo = 2008;
if(checkdate ($mes, $dia, $axo)) echo "correcta";
else echo "incorrecta";
?>
getdate
obtiene información de fecha y hora
Sintaxis: array getdate (int timestamp)
Ej. 40035
<?php
$cad = getdate(mktime(0,0,0,12,1,2008));
foreach($cad as $v => $c) {
echo $v. ' = ' . $c. '<br>';
}
?>
gmstrftime
da formato a una fecha/hora GMT/CUT según las convenciones locales
Sintaxis:
string gmstrftime (string format, int timestamp)
Ej. 40036
<?php
echo gmstrftime ("%Y-%m-%d", mktime(0,0,0,12,1,2008));
?>
FUNCIONES DE CADENAS
Estas nos permitiran manipular las cadenasya sea para convertirals, contar letras
,cadenas convertirlas etc.
Chop Elimina espacios sobrantes al final
Sintaxis:
string chop (string cad)
Ej. 40037
<?php
$cad = "Cadena1 ";
$cad1 = " Cadena2";
$cad2 = $cad . $cad1;
echo $cad2.'<br>';//Aqui lo junta por que en HTML no hay espacios
echo '<INPUT type="text" name="t1" size="50" value="'.$cad2.'">';
$cad2 = chop($cad).$cad1;
echo '<INPUT type="text" name="t2" size="50" value="'.$cad2.'">';
/*
Toma en cuenta que cuando mandes datos a una BD tienes que hacer chequeos de este tipo si quieres
ahorrar espacios dentro de la abse para evitar que el usuario meta por errror espacios en blanco al
final
*/
?>
chr
Devuelve una cadena de un caracter que este especificado por ascii.
Sintaxis:
string chr (int ascii)
Ej. 40038
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<FORM method="POST" target="_self" action="<?php echo $_PHP_SELF ?>">
<INPUT type="text" name="txtcadena">
<INPUT type="submit" name="cmdenviar" value="Convertir">
</FORM>
<?php
if($_POST[cmdenviar]){
echo $_POST[txtcadena]. ' ==> '. chr($_POST[txtcadena]);
}
?>
</BODY>
</html>
chunk_split
Divide una cadena en trozos más pequeños
Sintaxis:
string chunk_split (string cadena [, int tamatrozo [, string final]])
Ej. 40039
<html>
<HEAD><TITLE>Agrega caracteres</TITLE></HEAD>
<BODY>
<?php
$str = "ATENTAMENTE";
echo chunk_split($str,1,".").'<BR>';
echo chunk_split($str,2," ").'<BR>';
echo chunk_split($str,5,"-").'<BR>';
echo chunk_split($str,8,"_").'<BR>';
?>
</BODY>
</html>
explode
Divide una cadena en trozos más pequeños
Sintaxis:
array explode (string separador, string cadena [, int limite])
Ej. 40040
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$str = "1|MIGUEL|CASARES|LUNA|28";
$datos=explode("|",$str);
echo $datos[0].'<BR>';
echo $datos[1].'<BR>';
echo $datos[2].'<BR>';
?>
</BODY>
</html>
implode
Divide una cadena en trozos más pequeños
Sintaxis:
array explode (string separador, string cadena [, int limite])
Ej. 40041
<?php
$str = "1|MIGUEL|CASARES|LUNA|28";
$datos=explode("|",$str);
echo $datos[0].'<BR>';
echo $datos[1].'<BR>';
echo $datos[2].'<BR>';
$cad_nueva=implode("-",$datos);
echo $cad_nueva;
?>
ltrim
Elimina el espacio en blanco del principio de una cadena
Sintaxis:
string ltrim (string cad)
Ej. 40042
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$cad = "Cadena1 ";
$cad1 = " Cadena2";
$cad2 = $cad . $cad1;
echo $cad2.'<br>';//Aqui lo junta por que en HTML no hay espacios
echo '<INPUT type="text" name="t1" size="50" value="'.$cad2.'">';
$cad2 = $cad.Ltrim($cad1);//Hace la nueva cadena pero elimina espacios en blanco al principio
echo '<INPUT type="text" name="t2" size="50" value="'.$cad2.'">';
?>
</BODY>
</html>
Ej. 40043
<?php
$cad = MD5("Clave1");
echo $cad;
?>
Ej. 40044
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<FORM method="POST" target="_self" action="<?php echo $_PHP_SELF ?>">
<INPUT type="text" name="txtcadena">
<INPUT type="submit" name="cmdenviar" value="Convertir">
</FORM>
<?php
if($_POST[cmdenviar]){
echo $_POST[txtcadena]. ' ==> '. ord($_POST[txtcadena]);
}
?>
</BODY>
</html>
parse_str Divide cad como si fuera la cadena de consulta enviada por un URL y crea
las variables en el ámbito actual.
Sintaxis:
void parse_str (string cad)
Ej. 40045
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$cad = "a=valor1&b=valor2+cadena&c=valor3";
parse_str($cad);
echo $a.'<br>'; //valor
echo $b.'<br>'; //valor2 cadena
echo $c.'<br>'; //valor3
?>
</BODY>
</html>
print y printf Emite una cadena y Emite una cadena con formato.
Sintaxis:
print (string arg) y int printf (string formato [, mixed args...])
Ej. 40046
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$cad = "Cadena para imprimir";
print("cad es igual a: $cad <br>");
printf("cad es igual a: %s <br>",$cad);
?>
</BODY>
</html>
strcasecmp
Comparación de cadenas insensible a mayúsculas y minúsculas y segura en modo
binario
Sintaxis:
int strcasecmp (string cad1, string cad2)
Ej. 40047
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$var1 = "Hello";
$var2 = "hello";
if (!strcasecmp ($var1, $var2)) {
echo $var1 .' es igual a '. $var2.' en una comparacion sin tener en cuenta mayusculas o
minusculas';
}
?>
</BODY>
</html>
strlen
Sirve para conocer la longitud de la cadena
Sintaxis:
int strcasecmp (string cad1, string cad2)
Ej. 40048
<?php
$cadena = "Esta es una cadena y tiene: ";
echo $cadena . Strlen($cadena) . ' caracteres';
?>
str_pad
Esta función rellena la cadena entrada por la derecha, la izquierda o por ambos
lados hasta el largo indicado. Si no se especifica el argumento opcional
cad_relleno, entrada es rellenada con espacios. En caso contrario, será rellenada
con los caracteres de cad_relleno hasta el límite. El argumento opcional
tipo_relleno puede valer STR_PAD_RIGHT, STR_PAD_LEFT, o STR_PAD_BOTH. Si no se
especifica, se asume que vale STR_PAD_RIGHT.
Sintaxis:
string str_pad (string entrada, int tama_relleno [, string cad_relleno [, int
tipo_relleno]])
Ej. 40049
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$entrada = "ITPeople";
print str_pad($entrada, 20).'<br>';
print str_pad($entrada, 20, "*", STR_PAD_LEFT).'<br>';
print str_pad($entrada, 20, "*", STR_PAD_RIGHT).'<br>';
print str_pad($entrada, 20, "_", STR_PAD_BOTH);
?>
</BODY>
</html>
strpos
Encuentra la posición de la primera aparición de una cadena
Sintaxis:
int strpos (string pajar, string aguja [, int desplazamiento])
Ej. 40050
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$micadena = 'burro';
$pos = strpos ($micadena, "b");
if ($pos === false) {
echo 'no encontro<br>';
}
$pos = strpos ($micadena, "c");
if ($pos === false) {
echo 'encontro';
}
?>
</BODY>
</html>
str_repeat
Devuelve la cad_entrada repetida veces. veces debe ser mayor que 0.
Sintaxis:
string str_repeat (string cad_entrada, int veces)
Ej. 40051
<?php
echo str_repeat ("*", 50);
?>
strrev
Invierte una cadena , Devuele la cadena invertida.
Sintaxis:
string strrev (string cadena)
Ej. 40052
<?php
$cadena = "HOLA";
echo strrev ($cadena);
?>
Ej. 40053
<?php
$cadena = "HolA";
echo strtolower ($cadena).'<br>';
echo strtoupper ($cadena).'<br>';
?>
str_replace Esta función sustituye todas las apariciones de la aguja en el pajar
por la cad dada. Si no precisa reglas especiales de sustitución, deberá usar
siempre esta función en lugar de ereg_replace().
Sintaxis:
string str_replace (string aguja, string cad, string pajar))
Ej. 40054
<?php
$cadena = 'Esta es la cadena que va ha tener remplazos';
echo str_replace('que', 'hola', $cadena);
?>
Ej. 40054
<?php
echo substr ("abcdef", 1).'<br>'; // devuelve "bcdef"
echo substr ("abcdef", 1, 3).'<br>'; // devuelve "bcd"
echo substr ("abcdef", -1).'<br>'; // devuelve "f"
echo substr ("abcdef", -2).'<br>'; // devuelve "ef"
echo substr ("abcdef", -3, 1).'<br>';// devuelve "d"
?>
FUNCIONES DE ARCHIVOS
Las siguienes son solo algunas funciones para el manejo de archivos se van ha crear
archivos y se van a leer archivos solamente
Ej. 40055 (Crear Archivo)
<html>
<HEAD><TITLE>Convertir</TITLE></HEAD>
<BODY>
<?php
$archivo= fopen("prueba.sql", "w"); //Abre el archivo y lo limpia si no existe lo crea
for($i=0;$i<=10;$i++){
$cadena ='Cadena '.$i.chr(13); //genera una cadena
echo $cadena.'<br>';
fputs($archivo,$cadena);//Escribe en el archivo la cadena
}
echo 'Se genero el archivo<hr>';
fclose ($archivo);//Cierra el archivo
?>
</BODY>
</html>
if (file_exists($archivo))
{
// lectura de un archivo
print "<pre>";
$bytes = readfile($archivo);
print "</pre>";
A diferencia del ejemplo anterior vemos que el documento presenta los saltos de
línea originales, además de la posibilidad de verificar la existencia del archivo y
presentar un error personalizado. En ambos ejemplos la función readfile es quien
esta mostrando en pantalla el contenido del archivo, dicha función nos regresa el
número de bytes que tiene el mismo. A continuación analizaremos otra manera de
desplegar el contenido de un archivo utilizando otras funciones:
<?php
// Nombre del programa: fichero3.php
Finalmente, tenemos fputs(), que escribe los archivos en modo binario. Su sintaxis
es: fputs(fopen(archivo, modo),"contenido nuevo"), donde: fopen abre el archivo.
contenido nuevo es el texto que se escribe (depende del modo declarado en fopen).
Otro ejemplo, que sustituye el contenido del documento, es:
<?php
// Nombre del programa: fichero5.php
$archivo = "random.txt";
if ($textonuevo) {
// Abrimos y actualizamos el archivo
$fd = fopen ($archivo, "w");
fputs($fd,$textonuevo);
fclose ($fd);
}
?>
<form action="<?php print ("$PHP_SELF"); ?>" method="POST">
<p><strong>Editar texto</strong></p>
<textarea name="textonuevo" rows="6" cols="30">
</textarea><br />
<input value="Actualizar" type="submit"> <input value="Borrar" type="reset">
</form>
<?php
// Abrimos y leemos el archivo
$fd = fopen ($archivo, "r");
$contenido = fread ($fd, filesize ($archivo));
fclose ($fd);
// Eliminamos las contradiagonales
$editado = stripslashes("$contenido");
// Lo presentamos en pantalla
print "<pre>";
print "$editado";
print "</pre>";
?>
Por otro lado, si deseamos editar el contenido del original, pero no sustituirlo en
su totalidad, podemos usar esta variación:
<?php
// Nombre del programa: fichero6.php
$archivo = "random.txt";
if ($textonuevo) {
// Abrimos y actualizamos el archivo
$fd = fopen ($archivo, "w");
fputs($fd,$textonuevo);
fclose ($fd);
}
// Abrimos y leemos el archivo
$fd = fopen ($archivo, "r");
$contenido = fread ($fd, filesize ($archivo));
fclose ($fd);
// Eliminamos las contradiagonales
$editado = stripslashes("$contenido");
?>
<form action="<?php print ("$PHP_SELF"); ?>" method="POST">
<p><strong>Editar texto del archivo <?php print "$archivo"; ?></strong></p>
<textarea name="textonuevo" rows="6" cols="30"><?php print "$editado"; ?></textarea><br />
<input value="Actualizar" type="submit"> <input value="Borrar" type="submit">
</form>
FUNCIONES DE CORREO
mail Mail() envía automáticamente el mensaje especificado en mensage al
destinatario especificado en para. Para especificar múltiples destinatarios se
puede hacer incluyendo una coma entre las direcciones en para.
Sintaxis:
bool mail (string para, string sobre, string mensaje [, string cabeceras_adicionales])
Ej. 40057
<?php
mail("[email protected]", "Sobre este tema", "Linea 1\nLinea 2\nLinea 3");
?>
<?php
/* Obtiene la información de formulario. */
$nombre=$_POST[“nombre”];
$email=$_POST[“email”];
$preferencia=$_POST[“preferencia”];
/* Variables de ambiente --Cambiarlas a los valores de operación--*/
print "<center>";
print "Muchas gracias, $nombre.";
print "<br /><br />";
print "Agradecemos tu participación.<br /><br />";
print "Te enviaremos información a $email, sobre $preferencia.";
print "</center>";
?>
</body>
</html>
<?php
/* Obtiene la información de formulario. */
$nombre=$_POST[“nombre”];
$email=$_POST[“email”];
$preferencia=$_POST[“preferencia”];
/* Variables de ambiente --Cambiarlas a los valores de operacion--*/
print "<center>";
print "Muchas gracias, $nombre.";
print "<br /><br />";
print "Agradecemos tu participación.<br /><br />";
print "Te enviaremos información a $email, sobre $preferencia.";
print "</center>";
?>
</body>
</html>
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail -t -i
Las dos primeras opciones trabajan en Windows, en el primer caso se considera que
localmente existe un servidor de correo que resolverá la petición; en el segundo se
le determina una cuenta de correo valida a través de la cual los mensajes se
enviarán. Con Unix, funciona teniendo el servidor de correos Sendmail, Qmail o
similar, instalado y funcionando localmente.
Algunos encabezados muy útiles son: From determina el remitente del mensaje. Reply-
To define una dirección de correo para las respuestas, que puede ser diferente de
From. X-Mailer es el cliente o sistema que envía el mensaje. Content-Type
especifica el tipo de formato del mensaje, HTML o texto. Entonces, una línea con
múltiples encabezados es:
Ej. 40057_D
<?php
mail("[email protected]",
"Informes",
"Información solicitada para implementar un CRM",
"From: [email protected]\nReply-To:[email protected]\nX-Mailer:
PHP Server");
?>
VARIAS FUNCIONES
die Envía a la salida un mensaje y finaliza el script actual Sintaxis:
void die (string message)
Ej. 40058
<?php
$filename = ’/path/to/data-file’;
$file = fopen($filename, ’r’) or die "unable to open file ($filename)";
die ('Hola');
?>
eval eval() evalúa la cadena de carácteres dada en code_str como código PHP. Entre
otras cosas, ésto puede ser útil para almacenar código en un campo de texto de base
de datos para una ejecución posterior. Hay algunos aspectos a tener en cuenta
cuando se utiliza eval(). Recuerde que la cadena de carácteres pasada debe ser
código PHP válido, incluyendo aspectos como sentencias de terminación con un punto
y coma para que el parser no finalice en la línea después de eval(), y secuencias
de formato correctas en code_str.
Sintaxis:
void eval (string code_str)
Ej. 40059
<?php
$string = ’cup’;
$name = ’coffee’;
$str = ’This is a $string with my $name in it.<br>’;
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>
exit Esta construcción del lenguaje finaliza la ejecución del script. No devuelve
nada.. Sintaxis:
void exit(void);
Ej. 40060
<?php
echo 'Mensaje 1';
exit();
echo 'Mensaje2';
?>
Ej. 40061
<?php
echo date('h:i:s') . "<br>";
sleep(5);
echo date('h:i:s') . "\n";
?>
EXPRECIONES REGULARES
Las expresiones regulares se usan en PHP para manipular cadenas complejas. Las
funciones que soportan expresiones regulares son: ereg() ereg_replace() eregi()
eregi_replace() split()
ereg Envía a la salida un mensaje y finaliza el script actual Sintaxis:
void die (string message)
Ej. 40062
<html>
<HEAD><TITLE>Convertir fecha</TITLE></HEAD>
<BODY>
<?php
$date = "05/06/2008";
if ( ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $date, $regs ) ) {
echo "$regs[3]-$regs[2]-$regs[1]";
} else {
echo "formato invalido: $date";
}
?>
</BODY>
</html>
Ej. 40063
<?php
$string = "Esta es una cadena";
echo ereg_replace( " es", " fue", $string );
?>
split Devuelve un array de cadenas, cada una de las cuales es una subcadena de
string formada al dividir esta en los límites formados por la expresión regular
pattern. Si ocurre un error, devuelve un valor falso. Sintaxis:
array split (string pattern, string string [, int limit])
Ej. 40064
<?php
$fecha = "04/30/2008";
list( $mes, $dia, $axo ) = split( '/', $fecha );
echo "Mes: $mes; Dia: $dia; Año: $axo<br>\n";
?>
SESSIONES
El soporte de sesiones en PHP es básicamente un sistema que preserva ciertos datos
en una serie de accesos. Esto permite construir aplicaciones más personalizadas e
incrementar el atractivo de un website. Si ya está familiarizado con la gestión de
sesión de PHPLIB, apreciará que algunos conceptos son similares al soporte de
sesiones de PHP.
session start session_start() crea una sesión (o continua con la actual basada en
el id de sesión pasado mediante una variable GET (o una cookie). Sintaxis:
bool session_start(void);
session_destro
session_destroy() elimina todos los datos asociados a la sesión en curso.
Sintaxis
bool session_destroy(void);
Ej. 40065
<?php
session_start();
$_SESSION['var1']="Mensaje";
?>
<html>
<HEAD><TITLE>Convertir fecha</TITLE></HEAD>
<BODY>
<?php
echo $_SESSION['var1'];
?>
<a href="40066_A.php">Mandar</a>
</BODY>
</html>
Ej. 40066_A
<?php
session_start();
echo 'Variable: '.$_SESSION['var1'];
session_destroy();
?>
MYSQL
¿Qué es MySQL?
MySQL es el servidor de bases de datos relacionales más popular, desarrollado y
proporcionado por MySQL AB. MySQL AB es una empresa cuyo negocio consiste en
proporcionar servicios en torno al servidor de bases de datos MySQL. Una de las
razones para el rápido crecimiento de popularidad de MySQL, es que se trata de un
producto Open Source, y por lo tanto, va de la mano con este movimiento.
INTRODUCCION
MySQL es un sistema de gestión de base de datos relacional, multihilo y
multiusuario con más de seis millones de instalaciones.[1] MySQL AB —desde enero de
2008 una subsidiaria de Sun Microsystems— desarrolla MySQL como software libre en
un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para
cualquier uso compatible con esta licencia, pero las empresas que quieran
incorporarlo en productos privativos pueden comprar a la empresa una licencia
específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.
Licencia
Esta es una cuestión importante, ya que fundamenta la existencia y avance de la
base de datos. El producto esta disponible bajo la GNU GPL (la misma licencia de
Linux), que permite su instalación y redistribución sin limitaciones, sin embargo,
en este caso existen excepciones por las que sería necesario pagar:
Utilizar la base de datos para alguna función comercial. Integrarla a algún
producto, por lo que se distribuiría embebida en el mismo. Obtención| de soporte
técnico. Con todo, continúa siendo muy económica, al cobrarse una licencia por cada
máquina en que corra y no por cada CPU, como es el esquema de Oracle.
Tipos de tablas
1.ISAM.- es el formato de almacenaje mas antiguo, y posiblemente pronto
desaparecerá. Presentaba limitaciones (los ficheros no eran transportables entre
máquinas con distinta arquitectura, no podía manejar ficheros de tablas superiores
a 4 gigas). 2.MYISAM.- es el tipo de tabla por defecto en MySQL desde la versión
3.23. Optimizada para sistemas operativos de 64 bits, permite ficheros de mayor
tamaño que ISAM. Además los datos se almacenan en un formato independiente, con lo
que se pueden copiar tablas de una máquina a otra de distinta plataforma.
Posibilidad de indexar campos BLOB y TEXT. 3.HEAP.- Crea tablas en memoria. Son
temporales y desaparecen cuando el servidor se cierra; a diferencia de una tabla
TEMPORARY, que solo puede ser accedida por el usuario que la crea, una tabla HEAP
puede ser utilizada por diversos usuarios. 4.BDB.- Base de datos Berkeley. TST.
Solo en MySQL MAX 5.INNODB.- TST, ACID, con posibilidad de commit, rollback,
recuperación de errores y bloqueo a nivel de fila. 6.MERGE mas que un tipo de tabla
es la posibilidad de dividir tablas MYISAM de gran tamaño (solo útil si son
verdaderamente de GRAN tamaño) y hacer consultas sobre todas ellas con mayor
rapidez. Las tablas deben ser myisam e idénticas en su estructura.
Vamos a conectarnos por modo texto a la base de datos, abrimos una terminal
(consola) y tecleamos:
[root@server carpeta]$ MySQL -u root MySQL
Con la instrucción anterior, estamos indicando que nos vamos a conectar con el
usuario root a la base de datos MySQL.
VARIAS FUNCIONES
En algunas ocasiones (que son muy esporádicas) podemos olvidar con que usuario nos
conectamos a la base de datos; para conocer el usuario activo; escribimos lo
siguiente:
MySQL> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.02 sec)
ACCISGNACION DE CONTRASEÑAS
Una vez que hemos conocido algunas sentencias de MySQL, es importante retomar un
tema muy importante; hemos visto que se crean dos bases de datos al momento de
instalar MySQL y además de estas, se crean dos usuarios; uno es el usuario
“root”, que es el propietario de la base de datos (ojo, no nos referimos al
usuario del sistema operativo) y se crea el usuario “anónimo”; ambos no tienen un
password asignado lo cual es peligroso, de esto deducimos que una de las primeras
cosas a realizar es asignar un password a el usuario 2root” con el objeto de
proteger nuestra base de datos.
Lo primero que tenemos que hacer para asignar dicha contraseña es identificar en
que tabla se tiene que realizar dicha acción; para esto es necesario conocer como
mostrar las tablas que tenemos dentro de una base de datos, lo cual se realiza con
la sintaxis siguiente:
MySQL> show tables;
+---------------------------+
| Tables_in_MySQL |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
| user_info |
+---------------------------+
16 rows in set (0.00 sec)
La sentencia anterior nos esta mostrando en pantalla en primer lugar el host desde
donde se puede conectar, en segundo el usuario y en tercero la contraseña, la cual
esta vacía.
El siguiente paso a realizar es asignar una contraseña a cada uno de estos
usuarios:
MySQL> UPDATE user SET Password=PASSWORD('nuevo_password') WHERE User ='root';
MySQL> FLUSH PRIVILEGES;
MySQL> select Host,User,Password from user;
+------------+------+------------------+
| Host | User | Password |
+------------+------+------------------+
| localhost | root | 6463ccf92ccda0ff |
| 10.4.1.170 | root | 6463ccf92ccda0ff |
| localhost | | |
| 10.4.1.170 | | |
+------------+------+------------------+
4 rows in set (0.01 sec)
Una vez realizada dicha acción, la siguiente vez que el usuario entre a MySQL,
deberá utilizar el parámetro "-p" para que se le solicite el password nuevo, como
ya se explicó anteriormente. En caso contrario nos mostraría un error como este
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
El comando FLUSH PRIVILEGES es muy importante y se debe ejecutar cada vez que se
cambie la configuración de accesos a una o varias bases de datos, ya que en caso
contrario se requerir�a que el servidor se detuviera y reiniciara para que los
cambios tomaran efecto.
ACCESO
Para accesar solo hay que escribir en una terminal
$ mysql -u root -p y enter aparecesa algo como esto
$ Enter Password: se escribe la contraseña y enter
CREAR USUARIOS
El siguiente paso a realizar es la creación de un usuario que pueda acceder a la
nueva base de datos, con el objeto de que éste tenga un los privilegios necesarios
para conectarse y realizar ciertas sentencias en una base de datos asignada. La
sintaxis es la siguiente:
shell> MySQL -u root MySQL -p
MySQL> GRANT ALL PRIVILEGES ON BaseDatos.*
-> to usuario@localhost
-> IDENTIFIED BY 'password';
MySQL> FLUSH PRIVILEGES;
CREAR TABLAS
mysql>
create table tabla1(
id_reg int not null auto_increment primary key,
nombre varchar(100) not null default “”,
paterno varchar(100) not null default “”,
materno varchar(100) not null default “”,
direccion text,
telefono varchar(50) not null default “”,
correo varchar(50) not null default “”,
fec_nac date not null default “0000-00-00”
);
FOREIGN KEY
mysql>
create table tabla2(
id_reg int not null auto_increment primary key,
nombre varchar(100) not null,
paterno varchar(100) not null,
materno varchar(100) not null,
sucursal int not null default 0,
FOREIGN KEY (sucursal) REFERENCES sucursales (id_sucursales)
)type=INNODB;
TIPOS DE DATOS
La siguiente tabla nos muestra los tipos de dato más importante que maneja MySQL:
AGREGAR DATOS
mysql> insert into tabla1 values (“0”, ”ALFREDO”, ”CASTILLEJOS”, ”SANCHEZ”, ”C.
LOPEZ PORTILLO COL AGUAZUL DEL. BENITO JUAREZ”, ”55467790”,
”[email protected]”,”1982-03-19”);
Donde:
select es la acción a realizar.
* es un comodín que indica todas las columnas. Se puede especificar una o más
columnas mediante su nombre.
from reclutamiento es la tabla que utilizaremos.
Otras opciones son:
MySQL> select Nombre from reclutamiento;
+----------+
| Nombre |
+----------+
| Hugo |
| Ramón |
| Arturo |
| Joaquín |
| Hiram |
| ilozada |
| Socorro |
+----------+
7 rows in set (0.02 sec)
Lo que despliega la información de los registros que cumplan todas las condiciones,
en caso de existir. Igualmente podemos filtrar con más de una variable el
resultado:
MySQL> select Nombre,Edad from reclutamiento where ID='1' OR ID='2';
+--------+------+
| Nombre | Edad |
+--------+------+
| Hugo | 34 |
| Ramón | 46 |
+--------+------+
2 rows in set (1.68 sec)
Con lo que presentará sólo los primeros cuatro registros que encuentre; si por el
contrario necesitamos darle un orden específico, sería:
MySQL> select Nombre,Edad from reclutamiento order by Edad;
+----------+------+
| Nombre | Edad |
+----------+------+
| Joaquin | 20 |
| Hiram | 32 |
| Hugo | 34 |
| ilozada | 35 |
| Socorro | 35 |
| Arturo | 36 |
| Ramón | 46 |
+----------+------+
7 rows in set (0.04 sec)
Por defecto, MySQL ordena los registros en base a la llave primaria o en caso de no
existir, en base a la primera columna en orden ascendente (de la A a la Z, del 1 al
9), sin embargo podemos forzar que lo ordene en orden descendente con la
instrucción DESC. Si viéramos la tabla utilizando todas estas funciones podemos
hacerlo así:
MySQL> select Nombre,Edad,Sueldo from reclutamiento
-> ORDER by Sueldo desc limit 5;
+---------+------+--------+
| Nombre | Edad | Sueldo |
+---------+------+--------+
| Hugo | 34 | 19500 |
| Ramón | 46 | 16850 |
| Socorro | 35 | 14000 |
| Hiram | 32 | 12500 |
| Joaquín | 20 | 9000 |
+---------+------+--------+
5 rows in set (0.07 sec)
La última instrucción que veremos es para eliminar registros de una tabla, lo cual
se realiza con la instrucción DELETE su sintaxis es la siguiente:
MySQL> delete from table where registro="valor";
Donde:
delete es la instrucción que ejecuta el borrado de información.
from table indica la tabla en que efectuamos la acción.
where registro="valor" define el parámetro para identificarlo, puede ser el
ID, el nombre o cualquier otro. En MySQL 3.23 generaba un error cuando no se
encontraba esta clausula, en la versión 4.0 ya no es requerido.
Un ejemplo, basado en los datos de la tabla "reclutamiento", sería:
MySQL> delete from reclutamiento where ID=3;
Query OK, 1 row affected (0.15 sec)
En los casos en que deseemos actualizar información por bloque, podemos realizarlo
como el siguiente ejemplo:
MySQL> UPDATE reclutamiento SET Sueldo = "10000" WHERE Sueldo<"9000";
Query OK, 3 rows affected (0.02 sec)
Rows matched: 3 Changed: 3 Warnings: 0
Esto incrementa una unidad a todos los registros de la tabla. También podemos
hacerlo sobre registros específicos:
MySQL> UPDATE reclutamiento SET Sueldo=Sueldo*1.15 WHERE Nombre="Socorro";
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Este ejemplo multiplica por 1.15 el contenido de la celda Sueldo. Debemos notar que
no utilizamos comillas cuando nos referimos a campos con valores numéricos, de
manera que se tomen como tales, en caso contrario se manejan como cadenas de texto.
MySQL> UPDATE piezas,periodo SET piezas.precio=periodo.precio
-> WHERE piezas.id=periodo.id;
Query OK, 2 row affected (0.10 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> Select * from tabla1 where between “2008-01-01” and “2008-04-01” order by nombre DESC;
Limit
mysql> Select * from tabla1 limit 1;
Group BY
mysql> Select * from tabla1 group by nombre;
Having
mysql> Select * from tabla1 group by nombre having nombre like “A%”;
Alias
mysql> Select sum(can) as cantidades from tabla1;
Distinct
mysql> Select distinct nombre from tabla1;
avg
mysql> Select avg(can) as cantidades from tabla1;
min, max
mysql> Select min(can) as minim, max(can) as maxim from tabla1;
count
mysql> Select count(*) as num_reg from tabla1;
Right Join
mysql> SELECT table1.* FROM table1 RIGHT JOIN table2 ON table1.id=table2.id WHERE table2.id IS
NULL;
left Join
mysql> SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
Revoke
mysql> REVOKE ALL PRIVILEGES ON widgets.* FROM widgetAdmin@localhost;
ALTERAR TABLAS
Cambiar nombre a las tablas
mysql> ALTER TABLE tabla1 RENAME tabla2;
Eliminar un campo
mysql> ALTER TABLE tabla1 DROP columna_a_eliminar;
Importar información
Una situación que es muy probable que se presente es la importación de información
cuyo origen sea un archivo de texto plano. Para esto utilizaremos el comando
mysqlimport
Este es un script externo que se ejecuta desde la línea de comandos. Tiene algunas
consideraciones importantes antes de querer utilizarlo:
Generalmente graba el contenido del archivo en una tabla con el mismo nombre;
es decir, si el archivo se llama "importar.txt", buscará una tabla llamada
"importar", por lo que debe existir previamente.
Por defecto, cada campo lo separa mediante un tabulador, opcionalmente se
pueden utilizar comas.
En caso de producirse errores, manda un resultado con el total de alertas,
pero no explica en que consisten o por que se produjeron.
Los campos yacios en principio deberían de contener algo, pero es valido
dejarlo sin nada y colocar un segundo tabulador, pero esto incrementa el
número de alertas (sin embargo, realiza la importación). En los campos
numéricos es posible dejar un cero ('0') como valor, ya que es de por si su
contenido por defecto.
La sintaxis básica es:
[root@server carpeta]$ mysqlimport [opciones] basededatos archivo1 [archivo2 ...]
Debemos notar que el id, al ser auto incremental, sólo requiere de un cero para
declarase, pero esto se puede realizar con un espacio en blanco, como veremos en el
siguiente ejercicio donde cambiamos algunos registros y utilizamos el parámetro -d
para que elimine el contenido original. Este es el nuevo toons.txt: Bugs Conejo
Daffy Pato Elmer Cazador Willie Coyote Claudio Gallo Piolin Canario Abuela
Debemos denotar que después del nombre "Abuela" existe un tabulador, para que se
tome como vacío el campo siguiente.
Acto seguido ejecutamos:
[root@server carpeta]$ mysqlimport -u root -p -d --local prueba toons.txt
Enter password:
prueba.toons: Records: 7 Deleted: 0 Skipped: 0 Warnings: 8
Y en la tabla encontramos:
MySQL> select * from toons;
+----+---------+---------+
| id | nombre | animal |
+----+---------+---------+
| 6 | Bugs | Conejo |
| 7 | Daffy | Pato |
| 8 | Elmer | Cazador |
| 9 | Willie | Coyote |
| 10 | Claudio | Gallo |
| 11 | Piolin | Canario |
| 12 | Abuela | NULL |
+----+---------+---------+
7 rows in set (0.01 sec)
Como se aprecia, el último campo quedo con valor 'NULL', que es considerado como un
valor inexistente dentro de una tabla. Otro detalle es que, si bien se
reescribieron los registros, el conteo comenzó en donde había terminado el anterior
(sólo en MySQL 4.04), aunque es posible asignar un número determinado desde el
archivo de texto, siempre y cuando no se repita.
mysqldump
Es muy recomendable utilizar la utilería mysqldump, que descarga todo el contenido
de una tabla, tablas o bases de datos en formato de texto con sentencias SQL, lo
que facilita moverlo y volverlo a subir. Su sintaxis básica es la siguiente:
[root@server carpeta]$ mysqldump [opciones] nombre_DataBase [tablas]
Algunas de las opciones que hemos encontrado más útiles para este proceso,
dependiendo de las necesidades, son:
--add-drop-table. Define la sintaxis para que se elimine una tabla antes de
crearla en la DB de destino.
-B, --databases. Descarga todo el contenido de una DB.
--help. Despliega la ayuda.
-F, --flush-logs. Elimina el archivo de logs antes de descargar.
-q, --quick. No manda la salida al buffer, sino directamente al destino.
Estas son sólo unas opciones, contándose cerca de treinta y con variaciones en la
sintaxis de cada una. Un ejemplo práctico, recordando que creamos una tabla llamada
"reclutamiento", en una base de datos llamada "prueba" y cuyo usuario sea "user",
es:
[root@server carpeta]$ mysqldump -q -u user prueba -p > respaldo.sql
Con esto se nos preguntará el password del usuario "user" y acto seguido se creará
una copia de TODAS las tablas de la base de datos llamada "prueba", el uso de "-q"
es recomendado con tablas muy grandes. Todo el contenido se vertirá en un archivo
llamado "respaldo.sql" junto con sintaxis SQL que facilitará subirla posteriormente
a otro base de datos. Debemos aclarar que en Windows es algo diferente, ya que en
Unix se toma por defecto al usuario activo si no se especifica uno con el parámetro
"-u", pero en Win9x/Me no es necesario, ya que al no ser un ambiente multiusuario
real, siempre se supone que se es root, por lo que la sintaxis será:
C:\> mysqldump -q [base_de_datos] > respaldo.sql
El archivo de respaldo puede ser visto desde un editor de texto (como el block de
notas de Windows o Emacs en Unix), donde veremos que incluye toda la sintaxis para
poder restablecerla en otro lado, aunque no sea en MySQL. Para restaurar la base de
datos, s�lo necesitamos teclear lo siguiente:
[root@server carpeta]$ MySQL -u usuario nombre_DB -p < respaldo.sql
Crea una copia de todas las bases de datos, incluyendo la de MySQL, sin embargo
requiere que el usuario sea el root del servidor de bases de datos. Una opción
similar es:
[root@server carpeta]$ mysqldump -u usuario -p --opt --databases
base1 base2 base3 > respaldo.sql
Donde definimos una a una, las bases de datos que queremos respaldar.
[root@server carpeta]$ mysqldump -u usuario -p --opt
--all-databases | gzip > respaldo.sql.gz
Una última forma, muy sofisticada, es esta donde podemos respaldar de un servidor a
otro. Con el parámetro --host se define el origen (generalmente localhost), con una
pipeta (|) indicará que se enviará a otro servidor con un segundo --host, que puede
ser una dirección IP o un nombre de dominio, para terminar con -C que comprime los
datos mientras se transfieren, siempre y cuando ambos equipos soporten la opción.
Una limitante muy importante es que no respalda índices, por lo que en tablas muy
grandes con esta opción, pueden tardar mucho tiempo en restaurarse.
mysqlhotcopy
Una actividad que todo administrador debe realizar, lo más frecuentemente que se
pueda, es un respaldo de la información. En el caso de MySQL se recomienda utilizar
mysqlhotcopy, que genera copias locales ESTABLES (puede funcionar en un servidor en
producción) y SEGURAS (sin corrupciones de los datos respaldados). Importante: Se
requiere el módulo de Perl para MySQL instalado (DBD-MySQL) y el módulo de
conectividad a bases de datos (Perl-DBI), en caso contrario fallará. A diferencia
de mysqldump, esta utilería crea una copia de los archivos .frm, .MYI y .MYD de
cada tabla y las agrupa en una carpeta con el mismo nombre que la base de datos.
La sintaxis básica es como la siguiente:
[root@server carpeta]$ mysqlhotcopy nombre_DB -u usuario -p password
[root@server carpeta]$ mysqlhotcopy nombre_DB -u usuario -p password
[root@server carpeta]$ mysqlhotcopy nombre_DB_1 nombre_DB_2 ... nombre_DB_N -u usuario -p
password
[root@server carpeta]$ mysqlhotcopy nombre_DB./regex/ -u usuario -p password
Con esto se crea una copia del respaldo anterior en carpeta_old. Un requisito de
este comando es que, debido a que tiene que leer el contenido de /var/lib/MySQL, es
necesario ejecutarlo como root de Unix. Pueden leer la documentación completa si
teclean perldoc /usr/bin/mysqlhotcopy en su línea de comandos.
PHP y MYSQL
mysql_fetch_row
Una matriz que corresponde a la fila selecionada, o falso si no quedan más lineas.
mysql_field_name
Devuelve el nombre del campo especificado en un resultado
mysql_field_seek
Asigna el puntero del resultado al offset del campo especificado
mysql_field_table
Devuelve el nombre de la tabla donde esta el campo especificado
mysql_field_type
Devuelve el tipo del campo especificado en un resultado
mysql_field_flags
Devuelve los flags asociados con el campo especificado en un resultado
mysql_field_len
Devuelve la longitud del campo especificado
mysql_free_result
Libera la memoria del resultado
mysql_insert_id
Devuelve el identificador generado en la última llamada a INSERT
mysql_list_fields
Lista los campos del resultado de MySQL
mysql_list_dbs
Lista las bases de datos disponibles en el servidor MySQL
mysql_list_tables
Lista las tablas en una base de datos MySQL
mysql_num_fields
devuelve el numero de campos de un resultado
mysql_num_rows
Devuelve el numero de filas de un resultado
mysql_pconnect
Abre una conexión persistente al servidor MySQL
mysql_query
envia una sentencia a la base activa en el servidor asociado al identificador de
enlace. Si no es especificado un identificador_de_enlace, se asumira el ultilmo
enlace abierto. Si no hay ningun enlace abierto, la función intenta estalecer un
enlace como si se llamara función mysql_connect() sin argumentos, y lo utiliza.
mysql_resul
devuelve el contenido de una celda de un resultado MySQL. El campo argumento puede
ser el nombre del campo o el offset o tabla.nombre_del_campo. Si el nombre de la
columna tiene un alias (’select foo as bar from...’), utilice el alias en lugar
del nombre de la columna.
mysql_select_db
establece la base activa que estara asociada con el identificador de enlace
especificado. Si no se especifica un identificador de enlace, se asume el ultimo
enlace abierto. Si no hay ningun enlace abierto, la función intentara establecer un
enlace como si se llamara a mysql_connect().
mysql_tablename
toma un puntero de resultado devuelto por mysql_list_tables() asi como un indice
(integer) y devuelve el nomnre de una tabla. Se puede usar la función
mysql_num_rows() para determinar el nombre de tablas en el puntero de resultado.
Nuevos registros
Vamos a insertar nuevos registros a la tabla información, para esto realizaremos
algunas modificaciones al programa emailme.php .
<!-- Nombre del archivo: emailme.php -->
<html>
<head>
<title>Confirmación</title>
<body>
<?php
/* Obtiene la información de formulario. */
$nombre=$_POST[“nombre”];
$email=$_POST[“email”];
$preferencia=$_POST[“preferencia”];
/* Primero validamos que nuestros campos principales estén llenos */
if (!$nombre || !$email || !$preferencia) {
print ("<h1>Faltó de poner un dato requerido,
favor de regresar a la pantalla anterior para llenar los
campos faltantes.</h1>");
/* Si lo anterior es correcto, ejecutamos el envío de información */
else {
/* Email del administrador */
$adminaddress = "[email protected]";
/* esto manda una respuesta automática al correo del usuario */
mail("$email", "Información que solicitaste", "$nombre\n
Gracias por participar!\n
Ya tomamos nota que estuviste en nuestro sitio \n
Visita frecuentemente [http://www.misitio.com,] \n
pronto comenzaremos a mandarte información sobre $preferencia!",
"From: $adminaddress");
/* Esto manda una respuesta automática al administrador del servicio. */
/* Personalizamos el envío para que veamos automáticamente la cuenta de correo del interesado. */
mail("$adminaddress",
"Solicitud de información.",
"$nombre solicitó información.\n
Su dirección de correo es $email. \n
su preferencia es $preferencia.","From: $email");
/* Podemos adicionar cuantos destinatarios necesitemos */
/* Presenta la información de formulario. */
PRINT "<div align=center>";
PRINT "Muchas gracias, $nombre.";
PRINT "<br /><br />";
PRINT "Agradecemos tu participación.<br /><br />";
PRINT "Te enviaremos información a $email, sobre $preferencia.";
PRINT "</div>";
/* manda llamar el archivo conecta.php, en el cual se definen las variables de conexión y se
conecta al host y base de datos seleccionada */
include (“conecta.php”);
/* coloca la info en la tabla */
$query = "INSERT INTO $userstable VALUES('','$nombre','$email', '$preferencia')";
$result = MySQL_QUERY($query);
PRINT "<div align=center>Hemos adicionado tu información en nuestra DB para
futuras referencias.</div>";
/* Cierra la conexión */
MySQL_CLOSE();
}
?>
</body>
</html>
} while($row = MySQL_fetch_array($result));
print ("</select>\n");
} else {print "<p>No tenemos usuarios registrados.</p>";}
?>
</p>
<input type="hidden" name="bandera" value="1">
<p><input type="submit" value="Enviar"> </p>
</form>
</td></tr></table></div>
<?php
}
MySQL_CLOSE();
?>
</body>
</html>
Búsqueda Estática
EL siguiente ejemplo nos presenta en pantalla la información que hasta el momento
hemos almacenado, lo cual realizaremos mandando ejecutar un query con SQL a la base
de datos MySQL. Partiendo del ejemplo en que los usuarios nos mandan sus
preferencias de sistema operativo, donde la tabla se llama "informacion" (sin
acento), definimos un script en que nos mostrará cuantos usuarios prefieren el
sistema operativo Linux:
<?php
// Nombre del programa: b_estatica.php
/* script para saber quienes utilizan Linux */
include (“conecta.php”);
/* Seleccionamos a los usuarios que prefieren Linux */
$query = "SELECT * FROM $userstable WHERE preferencia = 'Linux'";
$result = MySQL_QUERY($query);
/* Presentalo en pantalla */
$i = 0;
IF ($number == 0) :
PRINT "<div align=center><p>¡Nadie utiliza Linux!</div>";
ELSEIF ($number > 0) :
PRINT "<div align=center><p>Usuarios que prefieren Linux: $number<br />";
print “<table width='80%'>”;
print “<tr><td>Nombre</td>”;
print “<td>Email</td></tr>”;
WHILE ($i < $number):
$name = MySQL_result($result,$i,"nombre");
$email = MySQL_result($result,$i,"email");
PRINT "<tr><td> $name </td><td> $email.</td></tr>";
$i++; // Esto busca hasta que barre toda la base
ENDWHILE;
PRINT "</div>";
ENDIF;
MySQL_CLOSE();
?>
Búsqueda dinámica
A continuación analizaremos un ejemplo para realizar búsquedas utilizando más de un
criterio de consulta:
<html>
<!-- Nombre del programa: busqueda.php -->
<head>
<title>Formulario de búsquedas</title>
</head>
<body>
<form action="<?php print "$PHP_SELF"; ?>" method="post">
<p>Buscar en la tabla de información:</p>
<p>
Nombre: <input type="text" name="nombre" size="30" maxlength="90"></p>
<p>
Email: <input type="text" name="email" size="30" maxlength="90"></p>
<p>
Preferencia: <input type="text" name="preferencia" size="30" maxlength=90></p>
<p>
<input type=submit value="Buscar"> <input type="reset" value="Borrar">
</form>
<?php
/* declaramos las variables de la base de datos */
$nombre=$_POST[“nombre”];
$email=$_POST[“email”];
$preferencia=$_POST[“preferencia”];
if ($nombre == "")
{$nombre = '%';}
if ($email == "")
{$email = '%';}
if ($preferencia == "")
{$preferencia = '%';}
$result = MySQL_query ("SELECT * FROM $userstable
WHERE nombre LIKE '%$nombre%'
AND email LIKE '%$email%'
AND preferencia LIKE '%$preferencia%'
");
if ($row = MySQL_fetch_array($result)) {
print “<table width='100%'>”;
print “<tr><td>Nombre</td><td>Email</td><td>Preferencia</td></tr>”;
do {
print ("<tr><td>");
print $row["nombre"];
print ("</td>");
print ("<td>");
print $row["email"];
print ("</td>");
print ("<td>");
print $row["preferencia"];
print (" </td></tr>");
} while($row = MySQL_fetch_array($result));
print “</table>”;
} else {
print "<h5 align=\"center\">Lo sentimos, no tenemos registros con esos criterios.</h5>";
}
MySQL_CLOSE();
?>
</body>
</html>
Actualización de información
Una actividad que realizaremos frecuentemente es la actualización de registros,
cuya sintaxis puede realizarse de la siguiente forma: $query = "UPDATE $userstable
SET nombre = 'Antonio' WHERE nombre = 'ilozada'";
<html>
<!-- Nombre del programa: actualizacion.php -->
<head>
<title>Modificación de datos</title>
<body>
<p align="center">Modificación de nombre</p>
<?php
$nuevo=$_POST[“nuevo”];
$original=$_POST[“original”];
include (“conecta.php”);
/* Tabla de MySQL */
$userstable = "informacion";
if ($bandera) {
} else {
?>
<p>
Nombre anterior:<br />
<?php
if ($id == "")
{$id= '%';}
$result = MySQL_query ("SELECT * FROM $userstable WHERE id LIKE '$id' order by nombre");
if ($row = MySQL_fetch_array($result)) {
} while($row = MySQL_fetch_array($result));
print ("</select>\n");
?>
</p>
<input type="hidden" name="bandera" value="1">
</form>
</td></tr></table></div>
<?php
}
MySQL_CLOSE();
?>
</body>
</html>
Notamos que estamos incluyendo una variable llamada $nombre_nuevo, con lo que
podemos diferenciar el nombre nuevo del original. Para hacer funcional este
ejercicio, necesitaremos un formulario donde podamos capturar los datos nuevos:
<html>
<!-- Nombre del programa: actualizacion.php -->
<head>
<title>Modificación de datos</title>
<body>
<p align="center">Modificación de nombre</p>
<?php
$nuevo=$_POST[“nuevo”];
$original=$_POST[“original”];
include (“conecta.php”);
/* Tabla de MySQL */
$userstable = "informacion";
if ($bandera) {
} else {
?>
<p>
Nombre anterior:<br />
<?php
if ($id == "")
{$id= '%';}
$result = MySQL_query ("SELECT * FROM $userstable WHERE id LIKE '$id' order by nombre");
if ($row = MySQL_fetch_array($result)) {
} while($row = MySQL_fetch_array($result));
print ("</select>\n");
} else {print "<p>No tenemos usuarios registrados.</p>";}
?>
</p>
<input type="hidden" name="bandera" value="1">
</form>
</td></tr></table></div>
<?php
}
MySQL_CLOSE();
?>
</body>
</html>
<?php
$nuevo=$_POST[“nuevo”];
$original=$_POST[“original”];
include (“conecta.php”);
/* Tabla de MySQL */
$userstable = "informacion";
if ($bandera) {
} else {
?>
<p>
Nombre anterior:<br />
<?php
if ($id == "")
{$id= '%';}
$result = MySQL_query ("SELECT * FROM $userstable WHERE id LIKE '$id' order by nombre");
if ($row = MySQL_fetch_array($result)) {
} while($row = MySQL_fetch_array($result));
print ("</select>\n");
?>
</p>
<p>
Nombre nuevo:<br />
<input type="text" name="nuevo" size="20" maxlength="30"> </p>
</form>
</td></tr></table></div>
<?php
}
MySQL_CLOSE();
?>
</body>
</html>
Eliminar registros
El último ejemplo que nos hace falta analizar para poder administrar la información
de una base de datos desde un navegador web es el eliminar registros. En el ejemplo
a analizar nos daremos cuenta que la estructura es muy similar a la que encontramo s
en el programa de actualización; con la diferencia que en lugar de actualizar un
registro, se elimina esa información.
<html>
<!-- Nombre del programa: actualizacion.php -->
<head>
<title>Modificación de datos</title>
<body>
<p align="center">Modificación de nombre</p>
<?php
$nuevo=$_POST[“nuevo”];
$original=$_POST[“original”];
include (“conecta.php”);
/* Tabla de MySQL */
$userstable = "informacion";
if ($bandera) {
} else {
?>
<p>
Nombre anterior:<br />
<?php
if ($id == "")
{$id= '%';}
$result = MySQL_query ("SELECT * FROM $userstable WHERE id LIKE '$id' order by nombre");
if ($row = MySQL_fetch_array($result)) {
} while($row = MySQL_fetch_array($result));
print ("</select>\n");
?>
</p>
<input type="hidden" name="bandera" value="1">
</form>
</td></tr></table></div>
<?php
}
MySQL_CLOSE();
?>
</body>
</html>
Apéndice