sábado, 4 de junio de 2011

Cómo obtener datos de MySQL usando PHP

El lenguaje PHP es muy extenso, como todos. Aprender todas las posibilidades del lenguaje cuesta tiempo y perseverancia. Hoy vamos a explicar como conectarse a una base de datos en MySQL usando PHP.
Lo primero que debemos hacer es crear un archivo PHP por separado, en el cual crearemos "la conexión" a la base de datos. Este archivo será un objeto reutilizable en nuestra página.
<?php
$hostname = "localhost";
$database = "mi_base_de_datos";
$username = "mi_nombre_de_usuario";
$password = "mi_password";
$conexion = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
?>
De esta forma, la variable $conexion será nuestro enlace a la base de datos.
Ahora bien, ¿de dónde sacamos esos valores que le daremos a este pequeño script? Veamos nuestro phpMyAdmin para entenderlo
Clic para agrandar la imagen
En esta pantalla haremos clic en la opción "Agregar un nuevo usuario"
Colocamos nuestro nombre de usuario, elegimos servidor Local, colocamos una contraseña y la repetimos. Luego debemos asignarle a este nuevo usuario privilegios. En principio vamos a usar la opción "Marcar todos/as", luego podremos hablar con más detalles acerca de estos privilegios.
De estos datos tomaremos en cuenta:
  • El nombre de la base de datos
  • El nombre de usuario que acabamos de crear
  • El password de este usuario
Estos tres datos los escribiremos cada uno en su sitio en nuestro archivo de conexión, el cual llamaremos conexion.php.

Capturemos datos de una tabla
Ahora vamos a crear un archivo PHP que se conecte a la base de datos, lea una tabla, extraiga un registro e imprima los datos de este registro.
Lo primero que haremos es cargar el archivo de coenxión, con la orden siguiente:
<?php require_once('conexion.php'); ?>
Luego, seleccionamos la base de datos y la tabla que queremos acceder (Recuerde siempre encerrar el código PHP entre "<?php" y "?>".)
mysql_select_db($database, $conexion);
Ahora creamos una variable con la sentencia SQL con la que accederemos a los datos que deseamos.
$sql_query = "SELECT * FROM clientes";
Por supuesto que se pueden hacer consultas mas complejas, así como hacer uso variables de las cuales dependa el resultado, utilizando el punto (.) para concatenar o la función sprintf. Veamos dos ejemplos:
$sql_query = "SELECT * FROM clientes WHERE id_cliente=".$id_a_consultar." ORDER BY nombre_cliente";
O bien,
$sql_query = sprintf("SELECT * FROM clientes WHERE id_cliente=%s ORDER BY nombre_cliente", $id_a_consular);
Donde las ocurrencias de "%s" son sustituidas por las variables después de la coma, en el mismo orden en que aparezcan.
Luego crearemos una instancia de la tabla a través de la función mysql_query.
$clientes = mysql_query($sql_query, $conexion) or die(mysql_error());
Por último, obtendremos el número de registros, y si es superior a 0 (cero), entonces podremos acceder a los datos.
$num_registros = mysql_num_rows($clientes);
  if ($num_registros) {
    $columnas = mysql_fetch_assoc($ciudad);
    do {
      $id = $columnas['id_cliente'];
      $nombre = $columnas['nombre_cliente'];
      $telef = $columnas['tel_cliente'];
      echo $id . " - " . $nombre . " - " . $telef . "<br />"; // resultados
    } while ($columnas = mysql_fetch_assoc($ciudad))
  }
Existen varias otras formas de acceder a los datos, con el uso de las funciones propias de PHP para MySQL.
De esta forma habremos obtenido los resultados deseados. Tomemos en cuenta que al exponer los resultados, podemos agregar cualquier elemento HTML, es decir, podemos construir listas desplegables, tablas, cuadros de selección, etc. Nuestra propia audacia será nuestro límite!!

miércoles, 1 de junio de 2011

PHP: protegiendo el código fuente

PHP es un lenguaje de programación para crear scripts, ámpliamente usado en el desarrollo de páginas Web y sistemas bajo ambiente Web. Los scripts de PHP pueden ser colocados en archivos independientes o incrustado en el HTML de una página.

¿Qué tiene de particular el PHP?
PHP es un lenguaje de scripts que se ejecuta en el servidor. Esto quiere decir que las órdenes que coloquemos van a ser interpretadas en el servidor, traducidas en resultados que luego serán enviados al cliente, sin que se vea nada del código PHP que dio origen a ese resultado.
Veamos un ejemplo práctico. En su servidor de prueba o el servidor en donde hospeda su página, creemos un archivo PHP con apenas un par de órdenes:
<?php
echo "Hola mundo!!<br \>";
echo "Hoy es ".date("d/m/Y", time());
?>
Estas dos líneas las guardaremos como "prueba.php" en la carpeta raíz del servidor.
Luego navegaremos esta página en http://localhost/prueba.php. El resultado deberá ser algo como esto:
 Y al ver el código de la página en el navegador obtendremos:
Como podemos ver, los elementos del código PHP no aparecen en el resultado. El intérprete de PHP que trabaja en el servidor, procesa el código PHP y ofrece el resultado como HTML, para luego enviar este resultado a la PC cliente. De esta manera, PHP permite proteger la integridad del código fuente de nuestra página Web.

PHP incrustado en HTML
Ahora probemos algo un poco mas complejo para demostrar como funciona PHP incrustado en medio de HTML. Crea un archivo con este código y guárdalo en la raíz de tu servidor como prueba2.php.
<html>
<head>
<title>Prueba de PHP incrustado en HTML</title>
<?php
$nombre = "Neeos";


function fecha_en_espanol()
{
$result = ""; // variable de resultado vacia
// matriz de valores para dias de la semana
$diaArr[0] = "Domingo";
$diaArr[1] = "Lunes";
$diaArr[2] = "Martes";
$diaArr[3] = "Miercoles";
$diaArr[4] = "Jueves";
$diaArr[5] = "Viernes";
$diaArr[6] = "Sabado";
// matriz de valores para meses del ano
$mesArr[0] = "";
$mesArr[1] = "ENERO";
$mesArr[2] = "FEBRERO";
$mesArr[3] = "MARZO";
$mesArr[4] = "ABRIL";
$mesArr[5] = "MAYO";
$mesArr[6] = "JUNIO";
$mesArr[7] = "JULIO";
$mesArr[8] = "AGOSTO";
$mesArr[9] = "SEPTIEMBRE";
$mesArr[10] = "OCTUBRE";
$mesArr[11] = "NOVIEMBRE";
$mesArr[12] = "DICIEMBRE";
$result = $diaArr[(int)date('w')]." ".date('d')." de ".$mesArr[(int)date('m')]." de ".date('Y');
return $result;
}
?>
</head>
<body>
<p>Hola mundo!!<br />
Hoy es <?php echo fecha_en_espanol(); ?><br />
Les saluda cordialmente <?php echo $nombre; ?>
</p>
</body>
</html>

Quiero resaltar varias cosas en este código:

  1. El archivo lo hemos nombrado ".php" a pesar de contener código html. Esto se hace para que el intérprete PHP en el servidor "traduzca" la página a HTML antes de enviarla al cliente.
  2. El código PHP se puede incluir en la zona <head> de la página. En este área es frecuente encontrar funciones, declaraciones de variables o constantes y sus valores, conexiones al servidor  y capturas de datos de base de datos, etc.
  3. También se puede colocar código PHP en medio del diseño de la página, para hacer llamadas a funciones o valores declarados o capturados previamente.
  4. El código PHP se debe colocar entre las etiquetas "<?php" y "?>". Notemos también que cada línea debe terminar en ";".
  5. Para obtener el resultado concatenado, hemos usado la función 'date' propia de PHP, pasándole el argumento que conviene en cada caso. Vea este artículo del manual oficial del PHP.
  6. Note que el caracter de concatenacion en PHP es el punto '.'
El resultado en el navegador (cliente) será el siguiente:
Y el código fuente de este página no mostrará nada del código PHP original:
Les animo a que hagan sus propias pruebas y vean el potencial de este excelente lenguaje. Esté alerta a las próximas publicaciones, ya que seguiremos usando constantemente PHP para hacer muchas tareas comunes en el desarrollo de una página Web.

martes, 31 de mayo de 2011

Como crear una base de datos con MySQL

En esta oportunidad usaré un ejemplo simple que servirá para explicar paso a paso la construcción de una base de datos en MySQL. Crearemos una lista de clientes y sus datos de ubicación.
Asumiré que ya tiene instalado MySQL en su computadora en un servidor de prueba; si no es así, puede ver como se hace la instalación en el artículo Servidores de prueba: Qué tal me esta quedando?.
También podemos usar el servicio MySQL que seguramente venga pre instalado en el servidor donde tiene alojada su página.Lo primero que haremos en acceder a phpMyAdmin, el software por defecto para administrar MySQL, las pantallas son similares en cualquier sistema operativo. Escribimos en la barra de nuestro navegador preferido:

http://localhost/
Si tu servidor esta bien instalado y funcionando, debería aparecer la página inicial del mismo. En mi caso aparece esto:
Luego, buscamos el enlace a phpMyAdmin (PMA) y hacemos clic. Si nos presentara la pantalla de seguridad colocamos la clave que hayamos configurado. En mi caso no llegué a configurar la seguridad del servidor, así que uso la clave por defecto para el usuario "root" (la clave es lampp).
Ok! ya entraremos al phpMyAdmin. Probablemente ya podremos ver en la columna de la izquierda algunas bases de datos propias de sistema, las cuales recomiendo no tocar.

Ahora creamos nuestra base de datos
Para este ejercicio de prueba, le daremos a la tabla el nombre de "clientes". Colocamos el nombre en el campo correspondiente y le damos clic al botón "Crear".

Para conocer criterios profesionales de creación de bases de datos les puedo recomendar estos dos enlaces:

De inmediato PMA nos presentará una pantalla para comenzar a crear las tablas. Crearemos la tabla "clientes_data". Yo lo haré en principio con 7 campos, pero tu puedes hacerlo a tu gusto o necesidad. Además, esta cantidad de campos se podrá aumentar o disminuir a gusto posteriormente. Luego presionamos el botón "Continuar".
Ahora nos presentará el formulario de creación de los campos de la tabla. Llenamos todos los campo tomando en cuenta cada atributo:
  • Campo: el nombre del campo (tome en cuenta las recomendaciones que aparecen en el primero de los dos artículos que menciono líneas arriba)
  • Tipo: el tipo de datos. Presenta muchas opciones, pero puedo mencionarles los siguientes:
    • INT = números enteros. Es ideal para la clave principal del registro, además de otros datos similares
    • VARCHAR = caracteres o texto
    • DATE = fechas en formato mm/dd/yy
    • FLOAT = números de coma flotante o decimales
    • BOOLEAN = datos de valor dual como Falso/Verdadero, SI/NO, Activo/Inactivo
  • Longitud: la longitud máxima de los datos a contener. Tome en cuenta que para los datos de tipo FLOAT debe indicarse la longitud total y cuantos decimales llevará (nivel de precisión). Por ejemplo, si indicamos "8,2", 8 será el largo total del número, y 2 la cantidad de decimales. Para más detalles se puede consultar la documentación oficial.
  • Predeterminado: el valor por defecto del campo. Se puede dejar en blanco si no hay ninguno.
  • Nulo: Indica si el campo permitirá contener valor nulo, es decir, ningún valor.
  • Indice: En el caso de que el campo sea la Clave Principal de la tabla, se indica en esta columna
  • A_I: Significa Auto Incrementable, este campo activado habilita a MySQL a asignar un valor que se incrementa automáticamente en cada nuevo registro.
  • Comentarios: Recomiendo ámpliamente llenar este campo con una breve explicación del dato que se esta almacenando. Con el tiempo vamos aprendiendo el valor de documentar todo lo que hacemos, se los puedo asegurar ;-)
 Luego podremos "Grabar" los cambios o "Añadir" más campos y "continuar". Los campos que dejemos sin nombre no se guardarán.
Todos los detalles de estos campos pueden ser modificados posteriormente, aunque sería ideal estudiar bien la estructura de la base de datos desde el principio. Así tendremos lista nuestra tabla.
Luego podremos agregar registros con la opción "Insertar", eliminarlos, vaciar la tabla o eliminarla, modificar su estructura, o realizar cualquier tipo de consulta SQL. También tenemos la posibilidad de cargar datos desde un archivo externo desde varios formatos.
Igualmente podremos exportar a muchos tipos de archivos, cada formato nos presentará las opciones necesarias y se puede incluso comprimir los archivos resultantes.

Otra herramienta muy buena para diseño de bases de datos en MySQL es la provista por la empresa ORACLE, dueños de MySQL. Se trata de MySQL Workbench y podemos encontrarlo "aun" gratis en su página oficial http://wb.mysql.com/, les invito a que le den un vistazo.
Por favor, no duden comentar, preguntar o cuestionar lo escrito en este blog, todos estamos para aprender algo nuevo cada día.