Me he hecho un blog en PHP: Accediendo a los datos

He trabajado en PHP siempre a muy alto nivel, primero con WordPress, y luego vía Codeigniter, así que me apetecía bajar un poco de nivel y hacer un poco de fontanería, con un objetivo claro, aprender qué hay por debajo de todo lo que trabajo.

En esta serie veremos cómo crear un blog muy simple usando las opciones más básicas que ofrece PHP.

La idea:

Para finalizar esta serie vamos a ver cómo acceder a una base de datos mysql local, obtener la información, y agregar un post nuevo, podremos además, comprobar cómo acceder a funciones que se sitúan en otros ficheros.

La estructura de datos

La estructura será simple: una base de datos (blog) con una única tabla (posts) que a su vez tendrá 3 campos: id, title y text, un identificador numérico auto-incremental, una variable de tipo varchar(128) y la otra de tipo longtext.

Conectando a mySQL

En cierta entrevista de trabajo me preguntaron cómo se accedía a una base de datos mysql desde PHP, y en su momento no supe responder, pues bien, hay tres pasos, el primero conectar al servidor, el segundo seleccionar la base de datos con la que vamos a trabajar y el siguiente es ejecutar la consulta a realizar.

SQL (Structured Query Language) es un lenguaje que se basa en la ejecución de líneas de código denominadas consultas. Una consulta fundamentalmente puede devolver datos, insertar datos, modificarlos o destruirlos, entre otras cosas. En esta primera aproximación únicamente emplearemos dos consultas, una para obtener los datos, y otra para acceder a ellos.

Además para este caso vamos a meter todo el código en una función, de tal manera que tengamos el código HTML (que se ejecuta en el navegador) y el código PHP (que se ejecuta en el servidor) lo más separado posible, así que creamos un nuevo fichero llamado backend.php y colocamos este código:

	function init(){
		mysql_connect('localhost', 'root', 'password');
		mysql_select_db('blog');
		$result = mysql_query('SELECT * FROM posts');
		return $result;
	}

El código anterior se conecta a la base de datos con el usuario root y la contraseña password, seguidamente selecciona la base de datos blog, y finalmente ejecuta la consulta, que viene a significar selecciona todos los elementos de la tabla posts. Desde nuestra web (en este caso el index.php) podremos entonces hacer una llamada a init(); al principio del fichero, y usar el resultado para movernos por la base de datos.

Recorriendo los datos

Para poder recorrer el resultado, lo que hacemos es usar la función mysql_fectch_assoc, que recorre el resultado de la query y devuelve un array asociativo (también llamado diccionario), donde podemos obtener el valor de los distintos campos de la tabla. El código mostrado a continuación muestra el resultado de recorrer el resultado de la consulta:

while ($row = mysql_fetch_assoc($result)) {
    echo "<h1>".$row['title']."</h1>";
    echo "<p>".$row['text']."</p>";
}

Esto nos da como resultado la lista de posts, mostrada por pantalla.

Agregando nuevos posts

La última opción que vamos a agregar a nuestro sistema será la opción de agregar un nuevo post, para ello necesitaremos un par de cosas, un formulario para introducir los datos y un código PHP que agregue los datos.

El formulario que tendremos tendrá el siguiente formato: dos etiquetas, un campo de texto para el título, un campo largo de texto para el contenido, y el siempre útil botón de publicar:

<h1>New Post</h1>
	<form action="add_new_post.php" method="post">
		<label for="title">Title:</label> <input type="text" name="title"></input><br/>
		<label for="text">Text:</label> <textarea name="text" rows="8" cols="40"></textarea><br/>
		<input type="submit"/>
	</form>

Por otro lado, el código para procesar la información se construirá de manera similar a como hemos procesado la información de login, y ejecutará una función que realice una consulta bastante parecida a la anterior, es decir, agregar el contenido de los campos title y text a un nuevo registro de la tabla:

	function add_new_post($title, $text){
		mysql_connect('localhost', 'root', 'password');
		mysql_select_db('blog');
		$result = mysql_query("INSERT INTO posts (title,text) VALUES ('".$title."', '".$text."')");
		echo mysql_error();
		echo "<a href='index.php'>Go to admin</a>";
	}

En caso de que todo vaya bien, debería mostrarnos una pantalla en blanco, con el enlace a la home, si se produjese algún error, se mostraría por pantalla.

Más información:

3 pensamientos en “Me he hecho un blog en PHP: Accediendo a los datos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s