Introducción

Una base de datos (BD) es una colección de información organizada de tal forma que un programa pueda seleccionar rápidamente conjuntos de datos deseados.
Las bases de datos tradicionales se organizan por campos, registros y archivos.
Un campo es una pieza simple de información.
Un registro es un conjunto completo de campos.
Un archivo es un conjunto de registros
Una base de datos está determinada por un conjunto de archivos.

Para accesar a la información de una base de datos es necesario un sistema manejador de bases de datps (Database Management system). Este programa permite entrar, organizar, seleccionar la información contenida en la BD

base de datos
Sistemas de gestión de bases de datos
Un conjunto de programas que permiten almacenar, modificar, y extraer información de una base de datos. Hay diferentes tipos de DBMS desde los muy pequeños para operar sobre PC’s hasta los muy grandes que operan sobre mainframes.

Un DBMS contiene:
  • DDL: Lenguaje de Definición de Datos
  • DML: Lenguaje de Manipulación de Datos
  • SQL: Lenguaje de Consulta.
Entre los DBMS mas comunes están: Oracle, SqlServer, Informix, Sysbase, MySQL, postgreSQL.

Una BD es una colección de archivos interrelacionados almacenados en conjunto sin redundancia y un DBMS es un conjunto de numerosas rutinas de software interrelacionadas cada una de ellas es responsable de una determinada tarea.
Algunas Aplicaciones con DBMS
  • Sistemas de reservación
  • Inventarios
  • Sistema de consulta de una biblioteca
  • Sistema para control de Recursos humanos
  • Bases de datos topográficas, etc
 
 
El modelo relacional
Este es el modelo que se está empleando con más frecuencia en la práctica, debido el rápido entendimiento por parte de los usuarios que no tienen conocimientos profundos sobre Sistemas de Bases de Datos En este modelo toda la información se representa a través de arreglos bidimensionales o tablas.
En este modelo toda la información se representa a través de arreglos bidimensionales o tablas.
Las operaciones básicas son:
  • Seleccionar renglones de alguna tabla (SELECT)
  • Seleccionar columnas de alguna tabla (PROJECT)
  • Unir o juntar información de varias tablas (JOIN)
 
¿Cómo diseñar una BD?
Las etapas de diseño de una base de datos son:
  • Diseño conceptual
  • Diseño lógico
  • Diseño físico
El diseño conceptual se refiere a identificar qué datos serán usados para una aplicación, por ejemplo para una agenda serían: ¿?

El diseño lógico se refiere a la descripción de cada pieza de información y las relaciones que existen entre ellas.
En esta etapa se definen las tablas (y su contenido) que se van a usar, relaciones entre los datos, campos llave, así como la normalización de dichos datos.

Las tablas se relacionan con otras teniendo columnas en común, dicha columna puede aparecer en más de dos tablas. Existen tres tipos de relación: uno a uno, uno a muchos y muchos a muchos.
  • Ejemplo de uno a uno: un profesor estará solamente en un cubo, cada departamento solamente tiene un jefe.
  • Ejemplo de uno a muchos: los profesores que están en cierto instituto. Los alumnos que son de cierta carrera.
  • Ejemplo de muchos a muchos: un alumno puede asistir a más de un curso, cada curso puede tener más de un alumno.
 
Normalización
Es el proceso para eliminar redundancia y aumentar la estabilidad y rendimiento de una BD. Ayuda a determinar qué dato pertenece a qué tabla y las relaciones entre las columnas de una tabla.

Primera forma normal (1NF)
Cada atributo de la tabla es atómico – debe almacenar el dato más pequeño posible, esto para facilitar la búsqueda y ordenamiento de los datos. Ejemplo: el nombre de una persona puede ocasionar problemas, ya que se podrían hacer búsquedas por nombre o por apellidos. Entonces es necesario tener un campo para el nombre y otro para apellidos.
No existen atributos multivaluados: por ejemplo un libro puede tener más de un autor, y además tener estar en más de una categoría. Para este caso dichos atributos deben ser movidos a otra tabla.

Segunda Forma Normal (2NF)
Todas las columnas deben depender directamente de la llave primaria. En caso de encontrar atributos que no dependan de la clave primaria deberán ser enviados a otra tabla.

2nf


Se puede dividir en dos tablas como se muestra a continuación:
El con el código postal podemos identificar directamente la ciudad y el estado
2nf

Entonces con poner el nombre de la persona y su dirección además del código, podemos identificar el resto de la información.
2nf
 
Tercera Forma Normal (3NF)
Se cumple con esta forma cuando se tienen columnas independientes. Es decir cuando una columna no puede ser derivada de otra.
Por ejemplo no es necesario un campo edad si se tiene por ejemplo la fecha de nacimiento

3nf

Llave
Es una columna o grupo de, que funciona como un identificador único en una columna
 
 
El diseño físico
Se hace un refinamiento del diseño lógico y se elige qué DBMS se usará. En esta etapa se determina:
  • Los datos que se usarán más comunmente
  • Columnas que requieran índices
  • Áreas que necesitarán más espacio físico por un mayor incremento de la información que habrá en ella
  • Si es factible hacer una desnormalización de los datos para obtener una mejora en el rendimiento de la BD
 
SQL
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos.

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Comandos
Existen dos tipos de comandos SQL:
  1. Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.
  2. Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos
Comandos DLL
  1. CREATE Utilizado para crear nuevas tablas, campos e índices
  2. DROP Empleado para eliminar tablas e índices
  3. ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.
Comandos DML:
  1. SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado
  2. INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.
  3. UPDATE Utilizado para modificar los valores de los campos y registros especificados
  4. DELETE Utilizado para eliminar registros de una tabla de una base de datos
Cláusulas
  1. Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.
  2. FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
  3. WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar
  4. GROUP BY Utilizada para separar los registros seleccionados en grupos específicos
  5. ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico
 
Operadores lógicos
  1. AND Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
  2. OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.
  3. NOT Negación lógica. Devuelve el valor contrario de la expresión.
Operadores de Comparación
  1. < Menor que
  2. > Mayor que
  3. <> Distinto de
  4. <= Menor ó Igual que
  5. >= Mayor ó Igual que
  6. = Igual que
  7. BETWEEN Utilizado para especificar un intervalo de valores.
  8. LIKE Utilizado en la comparación de un modelo
  9. IN Utilizado para especificar registros de una base de datos
 
Funciones de Agregado
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros.
  1. AVG Utilizada para calcular el promedio de los valores de un campo determinado
  2. COUNT Utilizada para devolver el número de registros de la selección
  3. SUM Utilizada para devolver la suma de todos los valores de un campo determinado
  4. MAX Utilizada para devolver el valor más alto de un campo especificado
  5. MIN Utilizada para devolver el valor más bajo de un campo especificado


 
Ejemplo
Supongamos la BD para una librería con la siguiente estructura
LIBROS
Field
Type
ISBN 
varchar(20) 
titulo 
varchar(80) 
precio 
float 
editorial 
varchar(80) 
edicion 
varchar(20) 
annoEdic 
int(11) 
Idioma 
varchar(40) 
existencia 
tinyint(4) 
AUTORLIBR0
Field
Type
ISBN 
varchar(20) 
Nombre 
varchar(40) 
Apellidos 
varchar(40) 
VENTAS
Field
Type
id 
int(11) 
RFC 
varchar(30) 
ISBN 
varchar(20) 
Cliente 
varchar(60) 
Fecha 
date 
Cantidad 
int(11) 
PrecioUnidad 
float 
 
Ejemplos de consultas usando Select:
Mostrar todos los datos que están en la tabla libros
Select * from libros

que generará la siguiente salida. Otra opción es poner exactamente qué campos quiere mostrar:
Select isbn, titulo, precio, editorial, edicion, annoedic, idioma, existencia from libros

ISBN titulo precio editorial edicion annoEdic Idioma existencia
 84-181-36662-0   Fundamentos de programacion   325.23   McGraw Hill   3   2002   Español   7 
 84-89660-00-X   Fundamentos de Algoritmia   259.95   Prentice Hall   1   1997   Español   7 
 84-189-76952-0   Redes para todos   215.62   Prentice Hall   2   1999   Español   7 
 83-298-37952-x   Arquitectura de computadoras   250   Prentice Hall   2   1999   Español   7 
 33-588-37741-x   1001 tips para programar en Java   257.35   McGraw Hill   2   1997   Español   7 
 
Otras consultas
  1. select titulo, precio, precio*1.15 from libros
  2. select titulo, precio, precio*.15 from libros where precio>250
  3. select titulo, precio, precio*.15 from libros where precio>250 order by precio
  4. select titulo, precio, precio*.15 from libros where precio between 220 and 300 order by precio
 
Consultas que implican más de una tabla:

Mostrar apellido del autor y el título del libro.
select autorlibro.apellidos, libros.titulo from autorlibro, libros where libros.ISBN= autorlibro.ISBN
Joyanes Aguilar 
 Fundamentos de programacion 
 Brassard 
 Fundamentos de Algoritmia 
 Bratley 
 Fundamentos de Algoritmia 
 Gibbs 
 Redes para todos 
 Mano 
 Arquitectura de computadoras 
 Chan 
 1001 tips para programar en Java 
 Griffith 
 1001 tips para programar en Java 
 Iasi 
 1001 tips para programar en Java 
 
Más consultas
select autorlibro.apellidos, libros.titulo from autorlibro, libros where libros.ISBN= autorlibro.ISBN and autorlibro.apellidos like 'Jo%’


Si hacemos la siguiente consulta:
SELECT * FROM ventas;

id
RFC
ISBN
Cliente
Fecha
Cantidad
PrecioUnidad
 1 
 ZILJ-690122 
 84-181-36662-0 
 Ziga León Jorge 
 2003-12-13 
 2 
 210 
 2 
 SAHC-850226 
 84-89660-00-X 
 Santos Hernandez Cristina 
 2003-12-13 
 1 
 255.95 
 
La siguiente consulta:
select sum(preciounidad*cantidad) from ventas
select sum(preciounidad*cantidad) from ventas where fecha = '2003-12-13'
Arrojaría

sum(preciounidad*cantidad)
 675.94999694824 



select autorlibro.apellidos, libros.titulo, libros.precio from autorlibro, libros where libros.ISBN= autorlibro.ISBN and autorlibro.apellidos like 'Joy%‘ order by titulo

apellidos
titulo
precio
 Joyanes Aguilar 
 Fundamentos de programacion 
 325.23 


select autorlibro.apellidos, libros.titulo, libros.precio from autorlibro, libros where libros.ISBN= autorlibro.ISBN and (autorlibro.apellidos like 'Joy%' or autorlibro.apellidos like 'Br%') order by titulo

apellidos
titulo
precio
 Bratley 
 Fundamentos de Algoritmia 
 259.95 
 Brassard 
 Fundamentos de Algoritmia 
 259.95 
 Joyanes Aguilar 
 Fundamentos de programacion 
 325.23 



La instrucción DELETE
Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en concreto. Su sintaxis es:


DELETE FROM Tabla WHERE criterio

Ejemplo:
delete from ventas where fecha >= '2003-12-16'
 
 
INSERT
Insertar un único Registro
INSERT INTO Tabla (campo1, campo2, .., campoN)
VALUES (valor1, valor2, ..., valorN)


Otro ejemplo:
INSERT INTO ventas (id, RFC, ISBN, Cliente, Fecha, Cantidad, PrecioUnidad) VALUES (5, 'SAHC-850226', '33-588-37741-x', 'Santos Hernandez Cristina', '2003-12-14', 6, 250)

Si los datos del registro a insertar le son enviados en el mismo orden en que están definidos en la tabla, se puede usar la siguiente sintaxis
INSERT INTO Tabla VALUES (valor1, valor2, ..., valorN)

También es posible insertar datos generados por una consulta.
INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen


Actualización de valores:UPDATE
No genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización.

Update tabla set campo1=valor1, campo2=valor2 [,…] where condiciones

update libros set precio=precio*0.95
update libros set sueldo=sueldo*1.05 where sueldo > 45.50
 
USANDO PHP y MySQL
Conexión a la BD
<?php
function Conectarse() 
{  if (!($link=mysql_connect("localhost","usuario","Password"))) 
   { echo "Error conectando a la base de datos."; 
      exit(); //es posible también la instrucción die(“mensaje”);

   } 
   if (!mysql_select_db("base_datos",$link)) 
   {  echo "Error seleccionando la base de datos."; 
      exit(); 
   } 
   return $link; 

} 
$link=Conectarse(); 
echo "Conexión con la base de datos conseguida.<br>"; 

mysql_close($link); //cierra la conexion 
?> 
 
 
Instrucciones para conexión a BD en MySQL
Al ejecutar la instrucción mysql_connect se crea un vínculo entre la base de datos y la pagina PHP, este vínculo será usado posteriormente en las consultas que hagamos a la base de datos.

Finalmente, una vez que hemos terminado de usar el vínculo con la base de datos, lo liberaremos con la instrucción mysql_close para que la conexión no quede ocupada.

mysql_query sirve para hacer una consulta a la base de datos en el lenguaje de consultas SQL

mysql_fetch_array se extraen los datos de la consulta a un array.

mysql_free_result liberamos la memoria usada en la consulta.
 
Una conexión y una consulta a una BD
 
<body> 
<?php 
   include("conex.php"); //en este archivo está la función conectarse

   $link= conectarse(); 
   $result = mysql_query("select titulo, precio from libros",$link); 

?> 
   <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> 
      <TR><TD>Titulo</TD><TD>Precio</TD></TR> 

<?php       

   while($row = mysql_fetch_array($result)) { 
      printf("<tr><td>%s</td><td>%s</td></tr>",    				$row[“titulo"],$row[“precio"]); 
   } 
                  mysql_free_result($result); 
                  mysql_close($link); 

?> 
</table> 
</body> 
 
Inserción de registros
 <?php 
   include("conex.php"); 

            $link=Conectarse(); 
              //Petición de los datos desde la otra forma

              $nombre=$_GET['nombre']; 
              $apellidos=$_GET['apellidos'];    

             //ejecución de la inserción

 mysql_query ("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos')",$link); 

 mysql_close($link); 
    ?> 
 
Inicio de winmysqladmin.exe
Buscar en el directorio C:\apache\mysql\bin el archivo winmysqladmin.exe y darle click o enter para ejecutarlo.



La primer vez aparecerá una ventana pidiendo un usuario y password

pass


es importante tener a la mano dichos datos porque se usarán cada vez que se quiera conectar a la base de datos.

inmediatamente despues, aparecerá otra ventana mostrando la información del sistema como nombre de usuario conectado, IP, entre otras cosas.

winmyadmin

en caso de olvidar el nombre de usuario aparece como "local user name" y el password aparece en la pestaña "my ini setup" como se muestra en la siguiente figura


usando el botón derecho del mouse se puede minimizar la aplicación:


mini

 
 
 
Base de datos estadio
Suponga que se desea administrar con una base de datos las ventas de boletos para un evento en el estadio "vecinitos" cuya área de servicio será la siguiente:
Asientos
 seccion  tinyint(4)
 numero  mediumint(4)
 vendido  tinyint(4)
 
Clientes
 id  int(11)  
 nombre  varchar(40)  
 Direccion  varchar(60)  
 Tel  varchar(12)  
 ciudad  varchar(20)  
 estado  varchar(20)  
 
Precios
 seccion  tinyint(4)  
 precio  float  
 
estadio.rar
libreria.php
<?php
function Conectarse() 
{  if (!($link=mysql_connect("localhost","emmanuel","5up3r"))) 
   { echo "Error conectando a la base de datos."; 
      exit(); //es posible también la instrucción die(“mensaje”);

   } 
   if (!mysql_select_db("estadio",$link)) 
   {  echo "Error seleccionando la base de datos."; 
      exit(); 
   } 
   return $link; 

} 
?>
 
eliminaClientes.php
<html>
<head>
<title>eliminacion de clientes</title>
<style type="text/css">

body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;}

.tit1 {background-color:#ccccdd; text-align:right}
.tit2 {background-color:#FFFFFF}

.titulo {font-size:larger}
</style>
</head>

<body bgcolor="#eeeeFF">

<?php
	include("libreria.php");

	$id= $_POST['id'];
	$nombre = $_POST['nombre'];

	if( !empty($id) )
	{

		
		$link=Conectarse(); 
		$consulta= "delete from clientes where id=$id";

		echo $consulta;	
		if( mysql_query ($consulta ,$link) == TRUE )

			echo "eliminacion exitosa de $id" ;
		else
			echo "fallo en la eliminación del registro" ;

		
		mysql_close($link); 
	}	
?>


<form method="post" action="eliminaClientes.php">

	<table width="90%" style="background-color:#aaaaFF" cellpadding="3" cellspacing="1" border="" align="center">

	<?php
		$link=Conectarse(); 
		$consulta= "select * from clientes";

		$result = mysql_query($consulta,$link); 
		while($row = mysql_fetch_array($result)) 
		{    printf("\n<tr><td class=\"tit1\"><input type=\"radio\" value=\"%d\" name=\"id\">  %d</td>", 	$row["id"],$row["id"]); 
		     printf("\n    <td class=\"tit2\">  %s</td>", 	$row["nombre"]); 
		     printf("\n    <td class=\"tit2\">  %s</td>", 	$row["Direccion"]); 
		     printf("\n    <td class=\"tit2\">  %s</td>", 	$row["Tel"]); 
		     printf("\n    <td class=\"tit2\">  %s</td>", 	$row["ciudad"]); 
		     printf("\n    <td class=\"tit2\">  %s</td>", 	$row["estado"]); 
   		}	 
         mysql_free_result($result); 
         mysql_close($link); 
		
		
	?>

	
  	<tr>
		<td colspan="6" class="tit1" style="text-align:center">	<input type="submit" value="Eliminar al cliente"> </td>

	</tr>
	</table>
	
</form>
</body>
</html>
 
capClientes.php
<html>
<head>
<title>Captura de clientes</title>
<style type="text/css">

body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;}

.tit1 {background-color:#ccccdd; text-align:right}
.tit2 {background-color:#FFFFFF}

.titulo {font-size:larger}
</style>
</head>

<body bgcolor="#eeeeFF">

<?php
	$nombre= $_POST['nombre'];

	$direccion= $_POST['direccion'];
	$tel= $_POST['telefono'];

	$ciudad= $_POST['ciudad'];
	$estado= $_POST['estado'];

	if( !empty($nombre) && !empty($direccion) && !empty($tel) && !empty($ciudad) && !empty($estado))

	{
		include("libreria.php");
		$link=Conectarse(); 
		$consulta= "insert into clientes (nombre,Direccion, Tel, ciudad, estado) values ('$nombre','$direccion','$tel','$ciudad','$estado')";

		echo $consulta;	
		if( mysql_query ($consulta ,$link) == TRUE )

			echo "insercion exitosa" ;
		else
			echo "fallo en la insercion del registro" ;

		
		mysql_close($link); 
	}	
?>


<form method="post" action="capClientes.php">

	<table width="600" style="background-color:#aaaaFF" cellpadding="3" cellspacing="1" border="" align="center">

	  <tr>
	    <td class="tit1" colspan="3" style="text-align:center"> <strong class="titulo">Captura de clientes </strong></td>

      </tr>
	  <tr><td class="tit1" width="150"> Nombre </td>

		  <td class="tit2"> <input type="text" name="nombre" size="40"> </td>

		  <td class="tit1" rowspan="5" width="20"> </td>

	  </tr>
	  <tr>
	    <td class="tit1">Dirección</td>

	    <td class="tit2"><input type="text" name="direccion" size="40">

	    </label></td>
      </tr>
	  <tr>
	    <td class="tit1">Telefono</td>

	    <td class="tit2"><input type="text" name="telefono" size="15"></td>

      </tr>
	  <tr>
	    <td class="tit1">Ciudad</td>

	    <td class="tit2"><input type="text" name="ciudad" size="10"></td>

      </tr>
	  <tr>
	    <td class="tit1">Estado</td>

	    <td class="tit2"><input type="text" name="estado" size="10"></td>

      </tr>
	  <tr>
	    <td class="tit1" colspan="3" style="text-align:center"> <input type="submit" value="Insertar cliente"></td>

      </tr>
	</table>
</form>
</body>
</html>

 
 
 
 
 
 
 
 
enviar.rar
winrar - quitar extension.back
estadio.rar -> la base de datos para las consultas
 
 
 
Algunas consultas que pueden realizarse usando la bd anterior:
   1.  Select * from clientes

   2. Select * from clientes where nombre like '%Santos%'

   3. Select * from asientos where vendido <> 0

   4. select asientos.numero, asientos.seccion, clientes.nombre, from asientos, clientes where asientos.vendido=clientes.id and clientes.nombre like '%Karla%'

   5. select clientes.id, asientos.numero, asientos.seccion, clientes.nombre from asientos, clientes where asientos.vendido=clientes.id order by clientes.id
  
   6. select sum(asientos.seccion*precios.precio) from asientos, precios where asientos.vendido<>0 and asientos.seccion=precios.seccion and asientos.seccion=1

   7. select sum(asientos.seccion*precios.precio)/2 from asientos, precios where asientos.vendido<>0 and asientos.seccion=precios.seccion and asientos.seccion=2

   8. select sum(100/asientos.seccion) from asientos, precios where asientos.vendido<>0 and asientos.seccion=precios.seccion

   9. select sum(100/asientos.seccion) from asientos, precios, clientes where asientos.vendido= clientes.id and clientes.nombre like '%Karla%' and asientos.seccion=precios.seccion

  10. select clientes.id, clientes.nombre, asientos.numero, asientos.seccion, precios.precio from clientes, precios, asientos where asientos.seccion=precios.seccion and asientos.vendido=clientes.id

<html>
<head>
<title>Captura de clientes</title>
<style type="text/css">

body {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;}

.tit1 {background-color:#ccccdd; text-align:right}
.tit2 {background-color:#FFFFFF}

.titulo {font-size:larger}
</style>
</head>

<body bgcolor="#eeeeFF">

<?php
	include("libreria.php");

	$nombre= $_POST['nombre'];
	$direccion= $_POST['direccion'];

	$tel= $_POST['telefono'];
	$ciudad= $_POST['ciudad'];

	$estado= $_POST['estado'];

	if( !empty($nombre) && !empty($direccion) && !empty($tel) && !empty($ciudad) && !empty($estado))

	{

		$link=Conectarse(); 
		$consulta= "insert into clientes (nombre,Direccion, Tel, ciudad, estado) values ('$nombre','$direccion','$tel','$ciudad','$estado')";

		echo $consulta;	
		if( mysql_query ($consulta ,$link) == TRUE )

			echo "insercion exitosa" ;
		else
			echo "fallo en la insercion del registro" ;

		
		mysql_close($link); 
	}	
?>


<form method="post" action="capClientes.php">

	<table width="600" style="background-color:#aaaaFF" cellpadding="3" cellspacing="1" border="" align="center">

	  <tr>
	    <td class="tit1" colspan="3" style="text-align:center"> <strong class="titulo">Captura de clientes </strong></td>

      </tr>
	  <tr><td class="tit1" width="150"> Nombre </td>

		  <td class="tit2"> <input type="text" name="nombre" size="40"> </td>

		  <td class="tit1" rowspan="5" width="20">&nbsp;</td>

	  </tr>
	  <tr>
	    <td class="tit1">Direcci&oacute;n</td>

	    <td class="tit2"><input type="text" name="direccion" size="40">

	    </label></td>
      </tr>
	  <tr>
	    <td class="tit1">Telefono</td>

	    <td class="tit2"><input type="text" name="telefono" size="15"></td>

      </tr>
	  <tr>
	    <td class="tit1">Ciudad</td>

	    <td class="tit2"><input type="text" name="ciudad" size="10"></td>

      </tr>
	  <tr>
	    <td class="tit1">Estado</td>

	    <td class="tit2"><select name="estado" size="1">

		<?php
					$link=Conectarse();
					$consulta= "select estado from clientes order by estado";

					$result = mysql_query($consulta,$link); 
					$ant="";

					while($row = mysql_fetch_array($result)) 
					{

						if(strcmp($ant, $row["estado"]) !=0)

						{		    printf("\n <option value=%s>%s </option>",	$row["estado"],	$row["estado"]); 	
							$ant= $row["estado"];

						}
					}	
					mysql_free_result($result); 
			        mysql_close($link); 							
		?>					
						</select>

		</td>
      </tr>
	  <tr>
	    <td class="tit1" colspan="3" style="text-align:center"> <input type="submit" value="Insertar cliente"></td>

      </tr>
	</table>
</form>
</body>
</html>

 
<html>
<head>
<title>Form 2</title>
</head>
<body>

<h1>Form 2</h1>
<?
$record=$_POST['record'];

printf("$record[0]=%s",$record[0]);
printf("$record[1]=%s",$record[1]);

?>
</body>
</html>
 
<html>
<head>
<title>Form 1</title>
</head>
<body>

<h1>Form 1</h1>
<form action="form2.php" method=post>

<?
$record[0]="One";
$record[1]="Two";

printf("<input type=hidden name=\"record[0]\" value=\"%s\">",$record[0]);

printf("<input type=hidden name=\"record[1]\" value=\"%s\">",$record[1]);

?>
<input type=submit value="Go">
</form>

</body>
</html>
 
 
<! allformelements.php >
<HTML>
<HEAD>
<TITLE>Processing All Form Elements</TITLE>

</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM name="frm_Example" action=" allformelements.php" method="post">

<table border="" cellpadding="2" cellspacing="">

<tr>
<td align="left" valign="top"><b>Character s Name</b></td>

<td align="left" valign="top"><input type="text" name="strCharacter"></td>

</tr>
<tr>
<td align="left" valign="top"><b>Starting Amount of Gold</b></td>

<td align="left" valign="top">
<select name="dblGold">

<option value="1000">1000</option>
<option value="2000">2000</option>

<option value="3000">3000</option>
</select>
</td>

</tr>
<tr>
<td align="left" valign="top"><b>Starting Location</b></td>

<td align="left" valign="top">
<input type="radio" name="strLocation" value="mountains">Mountains

<input type="radio" name="strLocation" value="plains" checked>Plains

<input type="radio" name="strLocation" value="swamp">Swamp

</td>
</tr>
<tr>
<td align="left" valign="top"><b>Equipment</b></td>

<td align="left" valign="top">
<input type="checkbox" name="nEquipmentID[]" value="1" checked>Sword

<input type="checkbox" name="nEquipmentID[]" value="2" checked>Chain Mail

<input type="checkbox" name="nEquipmentID[]" value="3" checked>Shield

<input type="checkbox" name="nEquipmentID[]" value="4">Cross Bow

<input type="checkbox" name="nEquipmentID[]" value="5">Arrows

</td>
</tr>
<tr>
<td align="left" valign="top" colspan="2"><input type="submit" value="Submit"></

td>
</tr>
</table>
</FORM>
<?php
if($_POST)

{
$strCharacter = $_POST['strCharacter'];
$dblGold = $_POST['dblGold'];

$strLocation = $_POST['strLocation'];
echo("You Chose:<BR>$strCharacter<BR>$dblGold<BR>$strLocation<BR>");

$listvals = $_POST['nEquipmentID'];
for($i=0;$i<count($_POST['nEquipmentID']);$i++)

echo "Equipment ID $i=".$listvals[$i]."<br>\n";

}
?>
</BODY>
</HTML>
 
<! htmlform.php >
<HTML>
<HEAD>
<TITLE>Example Form Processing</TITLE>

</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM name="frmSample" action="htmlform.php" method="post">

<b>What is your character’s name?</b><br>
<input type="text" name="strCharacter">

&nbsp;<input type="submit" value="Submit">
</FORM>

<?php
if(isset($_POST["strCharacter"]))

{
echo("Welcome, " . $_POST["strCharacter"] . "!");

}
?>
</BODY>
</HTML>
If you were using the GET method, the example would look like this:

<! htmlform.php >
<HTML>
<HEAD>
<TITLE>Example Form Processing</TITLE>

</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM name="frmSample" action="htmlform.php" method="get">

<b>What is your character’s name?</b><br>
<input type="text" name="strCharacter">

&nbsp;<input type="submit" value="Submit">
</FORM>

<?php
if(isset($strCharacter))
{
echo("Welcome, " . $_REQUEST["strCharacter"] . "!");

}
?>
</BODY>
</HTML>
 
<! introSopa.php >
<HTML>
<HEAD>
<TITLE>Processing All Form Elements</TITLE>

</HEAD>
<BODY>
<FORM action="introSopa2.php" method="post">

	numero de palabras <input type="text" name="numero" value="5">

	<input type="submit">
</FORM>
</BODY>
</HTML>
 
<! introSopa2.php >
<HTML>
<HEAD>
<TITLE>Processing All Form Elements</TITLE>

</HEAD>
<BODY>
<FORM action="introSopa3.php" method="post">

	numero de palabras <?php  echo $_POST['numero']; ?>

	
	<table>
		<?php
			for($i=0; $i<$_POST['numero']; $i++)

			{	echo "\n  <tr><td> palabra $i </td><td> <input type=\"text\" name=\"pal[$i]\"> </td>";

			}
		?>
		<tr><td> tamaño de la matriz </td> <td><input type="text" name="tam" value="10"> </td></tr>

		
		<?php echo "<input type=hidden name=numero value=" .$_POST['numero'] . ">"; ?>

 	</table>
	<input type="submit">
</FORM>
</BODY>

</HTML>
 
<! introSopa3.php >
<HTML>
<HEAD>
<TITLE>Processing All Form Elements</TITLE>

</HEAD>
<BODY>
<FORM action="introSopa3.php" method="post">

	numero de palabras <?php  echo $_POST['numero']; ?>

	
	<table>
		<?php
			$pal=$_POST['pal'];

			for($i=0; $i<$_POST['numero']; $i++)

			{	echo "\n  <tr><td> palabra $i </td><td>". $pal[$i]."</td>";

			}
		?>
		<tr><td> tamaño de la matriz </td> <td><?php  echo $_POST['tam']; ?> </td></tr>

 	</table>

	La sopa generada es:
	
	<table border=1>

		<?php 
			$tam=$_POST['tam'];
			for($i=0; $i<$tam; $i++)

				for($j=0; $j<$tam; $j++)

					$mat[$i][$j]='.';

					
			//generando las posiciones
			srand((double) microtime() * 1000000);

			$dir=0; // -->>
			$numero= $_POST['numero'];

			for($i=0; $i<$numero; $i++)

			{	$ya=0;
				do				
				{	if($dir==0)

					{	//genera la posición 
						$px=rand(0, $tam-1 - strlen($pal[$i]));

						$py=rand(0, $tam-1);				
						//revisando que no haya interseccion

						for($k=0; $k<strlen($pal[$i]) ; $k++)

							if(  $mat[$py][$px+$k]!='.' &&  $mat[$py][$px+$k]!=$pal[$i][$k] )

							{	$ya=0;			
								break;
							}
					
						if($k==strlen($pal[$i]))

						{	
							for($k=0; $k<strlen($pal[$i]) ; $k++)

								$mat[$py][$px+$k]=	$pal[$i][$k];

							$ya=1;
							echo "\n<br> $px : $py ";

						}
					}
				}while($ya==0);				
				
			}		
			
			//se generan los que faltan

			for($i=0; $i<$tam; $i++)

				for($j=0; $j<$tam; $j++)

					if($mat[$i][$j]=='.')

						$mat[$i][$j]=sprintf( "%c", rand(97, 124));

			
			
			for($i=0; $i<$tam; $i++)

			{	echo "\n  <tr> ";
				for($j=0; $j<$tam; $j++)

					echo "\n    <td width=20 align=center>".$mat[$i][$j]."</td> ";

				echo "\n  </tr> ";
			}
		?>

	</table>


</FORM>
</BODY>
</HTML>