Bases de datos, Guía rápida de PHP + MySQL, MySQL, PHP, Programación, Tutoriales

Guía rápida de PHP + MySQL

Tras terminar mi primer proyecto web, quería hacer un breve tutorial para manejar fácilmente PHP y MySQL y compartirlo con más principiantes de estos lenguajes. Así que, aquí está.

Requisitos (características que he usado, básicamente)

  • Eclipse Indigo (en mi caso la versión de 64 bits para Windows 7, pero vale cualquiera).
  • Versión de Java: jdk1.7.0_03 de 64 bits. (Ésta es la versión que he utilizado por que era la última del momento. Cualquiera versión del JDK 1.6 va a funcionar igualmente. Ya una versión inferior no lo puedo asegurar).
  • AppServ v2.5.10 (Servidor PHP + base de datos MySQL). Las características de esta aplicación son muy parecidas a las que luego puedes encontrar en un ‘hosting’ como 1and1.es, que es el sitio donde tengo alojada la web.

Breve comentario

La aplicación AppServ instala en tu máquina un servidor de PHP y una base de datos MySQL que funcionan de forma independiente. La potencia de PHP permite conectar con la base de datos con apenas 4 comandos fáciles de utilizar.

Preparación del entorno

Desde la web http://www.eclipse.org/downloads/ podemos bajar cualquier versión de Eclipse. En este caso, descargué la versión para desarrolladores Java EE, ya que es la más completa. Aun así, será necesario descargas los plugins para el desarrollo PHP. Para ello:

  • Hacemos click en la barra de tareas en Help à Install New Software…

  • En ‘Work with’ seleccionamos ‘—All Available Sites—’. Puede tardar un rato en cargar las herramientas disponibles, pero así garantizamos que saldrá lo que necesitamos. (Requiere internet). Una vez que se carguen las herramientas, podemos introducir ‘php’ en el buscador.

  • Elegimos las herramientas de PHP que aparecen. No tienen por qué salir las mismas que las de la imagen, lo importan es que sean herramientas de desarrollo de PHP.
  • Instalamos las herramientas y esperamos a que Eclipse se reinicie y termine de configurarse.
  • Una vez que tenemos las herramientas instaladas, podemos configurar el servidor de PHP de AppServ en el Eclipse. En la barra de herramientas seleccionamos Window à Preferences… y se configura el ejecutable PHP como se ve en el siguiente dibujo:

  • Con esto ya tenemos preparado el entorno. Ahora creamos un nuevo proyecto PHP. Conviene seleccionar como carpeta para el workspace la carpeta c:\AppServ\www\, ya que aquí es donde el servidor PHP hospeda las páginas web.
  • Para poder usar el servidor PHP, deberemos configurarlo en ‘Run configurations…’ como aparece en el siguiente dibujo:

Con esta configuración ya es posible realizar y probar un proyecto PHP en eclipse sin necesidad de tener que realizarlo en un servidor web real.

Uso básico de PHP con base de datos MySQL

Con todo preparado, ya sólo queda hacer un proyecto PHP básico con uso de MySQL.

Como lo que trata es de explicar de qué forma hice el proyecto web que nombro al principio de este post, no voy a entrar en un curso de PHP, sino en cómo he utilizado sus potentes recursos en una página HTML normal y corriente.

Dentro de una página web HTML podemos incrustar el código PHP que necesitemos. Esto se hace tan simple como poner el código PHP dentro de las etiquetas <?php >. Desde aquí, ya podemos utilizar todo el PHP que queramos. También es necesario guardar la página web con la extensión *.php, si no, el servidor no compilará el código incrustado.

Por ejemplo, podemos hacer un formulario como este el de http://www.pizzeriapinocchio.es/sugerencias.html para hacer que un usuario escriba una sugerencia a la página web, que llegará al email que yo elija y una copia al usuario que lo escribe. Además, usaremos unas funciones de validación del formato del email.

OJO: muchos servidores PHP gratuitos no permiten el uso de la función mail(), encargada del envío de emails.

Podemos usar un formulario como el siguiente:

<div id=“formulario”>

<form action=‘sugerencias.php’ method=‘post’ >

Nombre: <input name=‘nombre’ type=‘text’/><br />

Email: <input name=‘email’ type=‘text’/><br />

Mensaje:<br /><textarea name=‘texto’ rows=’15’ cols=’40’></textarea><br />

<input type=‘submit’/>

</form>

</div>

Es importante poner en el action del formulario la página PHP a la que queremos enviar los datos. Este formulario puede estar en la propia página PHP, enviándose los datos a sí misma.

En PHP podemos usar funciones para luego ser llamadas las veces que hagan falta, como por ejemplo:

    <?php

        function cadenaVacia($c){

            if(empty($c)) return true;

            else if(trim($c) == “”) return true;

            else return false;

        }

        function valida_email($c){

            if(eregi(“^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$”, $c))

                return true;

            else

                return false;

        }

Estas dos sencillas funciones validan las cadenas de caracteres que se le pasen como parámetro (los textos del formulario que elijamos). La función cadenaVacia() la uso para todos los campos del formulario, ya que no quiero que se quede ningún campo vacío. La función valida_email() la usaré sólo para validar si el email introducido está correctamente formado.

En el caso de que alguna de las dos funciones devuelva false, podemos mostrar un mensaje de error informando sobre la situación. Además, no se mandará email a nadie.

Para capturar los datos enviados por el formulario podemos usarlo de esta manera:

    if (!cadenaVacia($_REQUEST[‘nombre’]) && !cadenaVacia($_REQUEST[‘email’]) && !cadenaVacia($_REQUEST[‘texto’])) {

    // si los datos están rellenos

        $nombre = $_REQUEST[‘nombre’] ;

        $email = $_REQUEST[‘email’] ;

$texto = $_REQUEST[‘texto’] ;

Con el comando $_REQUEST, podemos obtener los valores que se le han asignado en el formulario. Con la condición del if, comprobamos que todos los campos están con al menos 1 carácter. Si es así, se lo asignamos a variables. En el caso de que alguno de los campos esté vacío, podemos mostrar un error de esta manera:

    } else {

        // si los datos no están rellenos

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, pero todos los datos son obligatorios.</b></p></div>”;

    }

Con el comando echo, escribimos en la página web el texto deseado. En el CSS se debe tener en cuenta este <div> por si aparece.

A continuación, comprobamos si el formato del email introducido es válido:

    // se valida el email

if(valida_email($email)) {

Y de la misma manera, si el formato no es correcto:

    } else {

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, el formato del email no es correcto.</b></p></div>”;

    }

Si todo ha ido bien, ya podemos enviar el email a mi servidor:

if (mail(“info@pepito.com”, “Sugerencia desde la web”, “Mensaje de ” . $nombre . “:\n\n” . $texto, “From: ” . $email )) {

Los parámetros deben cumplimentarse así: mail($to, $subject, $message, $additional_headers, $additional_parameters)

Si el envío del email falla por algún motivo (servidor caído, mal configurado,…), la función mail devolverá un false, por lo que se puede tratar el error para mostrarlo en la página web:

    } else {

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, hubo alg&uacute;n problema al enviar la sugerencia.</b></p></div>”;

    }

Si el email se ha enviado correctamente, podemos hacer unas cosas más. Como enviar una copia al usuario que ha enviado el formulario:

    // email de copia al usuario

    $asunto = “Gracias por contactar con nosotros.”;

    $mensaje = “Hola ” . $nombre . “,\n\n” .

    “Gracias por tu mensaje.\n\n” .

    “Tu mensaje fue: ” . $texto;

    mail($email, $asunto, $mensaje,“From: no-reply@pepito.com”);

Y ahora vamos a darle uso a la base de datos MySQL. Para este caso, he decidido que, además de enviarme un email, quiero guardar la copia en la base de datos. Para ello podemos usar un código como el siguiente (la base de datos debe estar previamente creada con las tablas y atributos correspondientes a las siguientes queries):

    // y lo insertamos en la BBDD

    // conexión con la BBDD

    $conexion = mysql_connect(“servidorMySQL”,“usuarioMySQL”,“contraseñaMySQL”);

    mysql_select_db(“nombreBBDDMySQL”,$conexion);

    // peticiones

    $ins_sug=“INSERT INTO Sugerencias (NOMBRE, EMAIL, MENSAJE) VALUES (‘$nombre‘, ‘$email‘, ‘$texto‘)”;

    mysql_query($ins_sug);

    // se cierra la conexión con la BBDD

    mysql_close($conexion);

Como dije antes, con 4 comandos podemos hacer uso de la base de datos casi sin despeinarnos.

Este es un uso bastante simple de la base de datos. Para hacer algo más complicado, como obtener datos de una tabla y mostrarlos en la web, podemos hacer algo como esto:

    // petición de las familias

    $queryFamilias=“SELECT DISTINCT FAMILIA FROM Producto”;

    $familias = mysql_query($queryFamilias);

    echo “<table id=’tablaFamilias’>”;

    while ($familia = mysql_fetch_array($familias)) {

        echo ‘<script>anadirFamilia(“‘ . $familia[‘FAMILIA’] . ‘”);</script>’;

        echo ‘<tr><td><a href=”javascript:ocultarTodos();mostrarCuerpo(\” . html_entity_decode(str_replace(” “, “_”, $familia[‘FAMILIA’]), ENT_QUOTES, “UTF-8”) . ‘\’);”>’ . $familia[‘FAMILIA’] . ‘</a></td></tr>’;

    }

    echo “</table>”;

Este código obtiene los elementos de una tabla para mostrarlos en una tabla de HTML. Además, a cada elemento de la tabla se le añade unas funciones Javascript para un uso dinámico de la página web. Aunque se ve un poco engorroso, al final sólo se usa una función que ya se usó antes (mysql_query()) para el envío de queries a la base de datos. El resto es programación simple.

A partir de aquí, sólo es jugar con las típicas herramientas que ofrece cualquier lenguaje de programación (condiciones, bucles,…), combinando con otros lenguajes (Javascript, HTML, MySQL,…). Así, se puede hacer una página web como la que hice Pizzería Pinocchio.

Espero que este “tutorial” sirva para dar un empujoncito a quien esté todavía dudando en hacer una web simple y estática con HTML, o meterse un poco en PHP y base de datos MySQL, haciendo así una web mucho más eficaz e interactiva.

Cualquier duda o sugerencia, no hay más que escribir un comentario en este mismo post.