Categoría: Php > 2

Vuelvo de nuevo con otro tutorial básico para comprender y meternos más en el mundo de las webs dinámicas, aunque si aun estás un poco perdido puedes consultar los anteriores tutoriales: Primeros pasos en PHP.

En esta ocasión, enseño las consultas más simples para poder usar una base de datos desde PHP.

Base de datos

Es importante saber controlar una base de datos mediante PHP, y aprender no resulta difícil, incluso sin saber SQL puedes hacerlo, ya que rara vez se usan consultas demasiado complejas, basta con conocer algunas instrucciones básicas (Buscar, Insertar, Modificar, Borrar), y unas pocas funciones en PHP.

Las consultas desde PHP se realizan con la función mysql_query (" ");, siempre y cuando uses la base de datos MySql, pero valdría cualquier otra, como Postgres, solo habría que cambiar mysql por postgres.




Insertar datos con Sql | Insert Sql


Para insertar datos en una tabla, en SQL se usa INSERT INTO, y en PHP sería:


<?
mysql_query 
("INSERT INTO usuarios (nombre, email, url)
VALUES ('Michael', 'michael@gmail.com', 'http://www.michael.com')"
);
?>

En este ejemplo, usuarios es el nombre de la tabla donde quieres insertar los datos; nombre, email y url los campos de dicha tabla, y lo que está entre comillas, después de VALUES, son los valores que quieres insertar (si es un valor numérico puede ir sin comillas).

Además puedes sustituir los valores por variables PHP, por ejemplo, en vez de poner Michael podrías haber puesto la variable $nombre, a la que le habrás dado valor anteriormente, $nombre = "Michael";.




Buscar datos con Sql | Select Sql


Para buscar y obtener datos en una tabla, en SQL se usa SELECT. Tomando como referencia el ejemplo anterior, en PHP sería:


<?
$result 
mysql_query ("SELECT nombre, email, url FROM usuarios");

while (
$row mysql_fetch_array ($result))
{
echo 
'Nombre: '.$row['nombre'];
echo 
'Mail: '.$row['email'];
echo 
'Url: '.$row['url'];
}
?>

Lo que hace este código es obtener y guardar todos los datos de la tabla usuarios en un array, mientras los va mostrando uno a uno con un bucle while.

Pero esto es demasiado básico, llegará el momento en que necesites obtener determinados datos según ciertos criterios, y no todos a la vez. Digamos que necesito saber el email y la url de un usuario determinado, de "Michael", lo haríamos de la siguiente manera:


<?
$nombre 
'Michael';

$result mysql_query ("SELECT email, url FROM usuarios
WHERE nombre = '$nombre'"
);

while (
$row mysql_fetch_array ($result))
{
echo 
'Mail: '.$row['email'];
echo 
'Url: '.$row['url'];
}
?>

Como ves solo he añadido una condición WHERE, le estoy diciendo que me devuelva el email y la url de todos los usuarios que se llamen Michael, en este caso usé una variable, pero se podría haber puesto 'Michael' directamente.

A parte de mostrar los datos obtenidos, muchas veces te encontraras con la necesidad de contarlos, y eso se puede hacer fácilmente con la función mysql_num_rows ();, ejemplo:


<?
$result 
mysql_query ("SELECT usuario FROM usuarios");

$numUsuarios mysql_num_rows ($result);
?>

Como ves, en la variable $numUsuarios se guarda el número de filas que devolvió la consulta.




Modificar datos con Sql | Update Sql


Muchas veces necesitamos actualizar o modificar un determinado dato en una tabla, para ello se usa UPDATE, el cual funciona de forma parecida a SELECT, se busca el dato o los datos que necesitas modificar y se le aplica el cambio:


<?
$nuevoEmail 
'michael_85@gmail.com';

$result mysql_query ("UPDATE usuarios SET email = '$nuevoEmail'
WHERE email = 'michael@gmail.com'"
);
?>

El usuario con el email "michael@gmail.com" cambiará su email por en nuevo. Pero hay que tener especial cuidado con esto; imaginemos que ponemos en la condición WHERE, que cambie su email si el usuario es igual a "Michael", sucedería que todos los usuarios que se llamen Michael, sufrirían un cambio de email, y no creo que nos interese eso.




Borrar datos con Sql | Delete Sql


No podía faltar la consulta para eliminar filas de una tabla, para ello se usa DELETE FROM, ejemplo:


<?
$Mail 
'michael_85@gmail.com';

mysql_query ("DELETE FROM usuarios WHERE email='$Mail'");
?>

Al igual que al actualizar, establecemos la condición usando el email del usuario, ya que dudo que existan dos usuarios distintos con el mismo email, por tanto en este caso se eliminaría solo al usuario cuyo email sea igual al indicado.




Si no me equivoco estas son las consultas más simples usadas en PHP, si estás empezando rara vez necesitaras usar las más avanzadas, hablo de consultas que ya requieren ciertos conocimientos de SQL.



<< Anterior | Como crear una base de datos

Recuerdo que cuando comencé a adentrarme en la programación PHP, base de datos, MySql y demás, me surgió una duda; ¿Como inserto una imagen en una base de datos MySql?, ¿Y cómo la recupero para mostrarla en una página web?

Insertar imagen mysql

Tras indagar un poco descubrí que esas preguntas estaban mal formuladas; aunque es posible subir una imagen a una base de datos, no es demasiado útil. La solución no está en subir la imagen, sino subir la URL de la imagen y guardar la imagen en una carpeta dentro del servidor.

He elaborado un sencillo código, expresamente para éste tutorial, que espero que te sirva a modo de ejemplo. Básicamente se trata de un formulario en HTML para enviar la imagen, y un pequeño script en PHP para guardarla, almacenar la URL en la base de datos y mostrar la imagen en la página.

Para poder almacenar la URL, primero deberás crear la siguiente tabla en la base de datos:


CREATE TABLE `imagenes` (
  `id` bigint(7) NOT NULL AUTO_INCREMENT,
  `url` char(250) NOT NULL,
  `alt` char(100) NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1;


A continuación copia el siguiente código en un archivo con extensión .php, y sigue las instrucciones que aparecen más abajo.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
</head>

<body bgcolor="#1B3D8A">
<?php
//DATOS DE CONEXION
$host 'localhost';
$user 'nombre';
$password 'password';
$database 'database';

mysql_connect ($host$user$password);
mysql_select_db ($database);
?>

<form method="post" enctype="multipart/form-data">
  ALT <input type="text" name="alt" size="40" /> <br /><br />
  IMAGEN <input type="file" name="file" size="20" /> <br /><br />

  <input type="submit" name="Subir" value="Subir Imagen"/>
</form>

<?php
if (isset ($_POST["Subir"])) { //AL PULSAR EL BOTON DEL FORMULARIO
  
$alt $_POST["alt"];
  
$url "http://.../imagenes/".$_FILES["file"]["name"];
  
//INSERTA LA URL EN LA BASE DE DATOS
  
mysql_query ("INSERT INTO imagenes (url, alt) VALUES ('$url', '$alt')");

  
//GUARDA LA IMAGEN EN LA RUTA DESTINO
  
$destino "C:/.../imagenes/".$_FILES["file"]["name"];
  
copy ($_FILES["file"]["tmp_name"], $destino);
}

echo 
'<br /><br /> Imagenes: <br /><br />';

//MUESTRA TODAS LAS IMAGENES
$result mysql_query ('SELECT * FROM imagenes');
while (
$row mysql_fetch_array ($result)) {
  echo 
'<img src="'.$row['url'].'" alt="'.$row['alt'].'" />';
}
?>

</body>

</html>

Debes hacer 3 cosas:

  • Sustituye los datos de conexión (al principio del código) por los tuyos.
  • Crea una carpeta con el nombre "imagenes" en tu servidor, no olvides darle permisos de escritura.
  • Sustituye la url "http://.../" y la ruta "C:/.../" por la dirección donde has creado la carpeta "imagenes".

Nota: Si tu servidor está basado en Linux, la ruta sería algo como "/var/.../"



Espero que te haya sido de utilidad, si tienes alguna duda siempre puedes dejar un comentario.

PHP logo

Si buscas alguna guía o tutorial que te ayude a preparar tu sistema para probar tus scripts PHP, o estás dando tus primero pasos en PHP y andas un poco perdido o no sabes por dónde comenzar, seguramente te será útil la siguiente información. He elaborado 3 tutoriales bastante básicos para poder comenzar a trabajar con PHP.

Te ayudarán a montar un servidor local, instalar Dreamweaver (Una herramienta muy útil en el desarrollo web), y configurarlo para subir los scripts rápidamente al servidor, también a familiarizarte un poco con las bases de datos (Imprescindible para hacer páginas webs dinámicas), y como conectarte a ellas desde PHP.

Para ello haremos uso de una herramienta que facilita bastante la labor, Xampp, que incluye el servidor Apache y la base de datos Mysql.

A continuación aparecen los enlaces hacia los 3 tutoriales, te recomiendo que los hagas en orden:



Actualización: He creado un nuevo tutorial sobre consultas básicas en SQL, para buscar, insertar, modificar y borrar datos en la base de datos, desde PHP.

El uso de una base de datos es imprescindible si lo que quieres hacer es una página web dinámica. En éste tutorial intento explicar como configurar una base de datos MySql en PhpMyAdmin para ser usada directamente con desde PHP.

Logo MySql

Antes que nada debes tener instalado un servidor local y obviamente PhpMyAdmin, si aun no lo has hecho, accede primero a el siguiente tutorial: Como Instalar Un Servidor Local Para Php Y Mysql.

También puedes configurar un servidor de prueba en Dreamweaver con este tutorial: Configurar Dreamweaver.

Una vez tengas todo preparado, comencemos: Abre una nueva ventana o una nueva pestaña de tu navegador, y escribe la siguiente dirección:

http://localhost/

Si estas usando XAMPP te aparecerá una página de bienvenida con un menú lateral, pulsa en PhpMyAdmin, en el menú "Herramientas". También puedes acceder directamente escribiendo la siguiente dirección en el navegador:

http://localhost/phpmyadmin/

Veras una especie de panel con muchas opciones, y seguramente en la parte inferior aparecerá un aviso que te pide que asignes una contraseña al root.




Asignar una contraseña al root phpMyAdmin


Como seguramente usaras una base de datos en modo local y para pruebas, no es necesario asignarle una contraseña, por lo que puedes saltarte esta parte, pero si aún así quieres hacerlo, sigue los siguientes pasos:

  • Pulsa en la pestaña Privilegios (Aparecerán una lista de usuarios).
  • En el que pone Usuario: root y Servidor: localhost, editamos los privilegios (pulsando en el dibujo de el hombre con el lapiz).
  • En la ventana que aparece, un poco más abajo, aparece una sección que pone Cambio de Contraseña, le asignamos una escribiéndola dos veces y pulsamos en continuar.
  • Ahora si intentas acceder a PhpMyAdmin te lo impedirá, por lo que tienes que cambiar la contraseña en el archivo config.inc
  • Para ello accede en tu ordenador a la ruta donde instalaste el servidor, en la carpeta PhpMyAdmin, y busca el fichero config.inc, ábrelo con un editor de texto (blog de notas) y donde pone $cfg['Servers'][$i]['password'] = '';, entre las comillas después del =, escribe la contraseña que pusiste en PhpMyAdmin, ahora guárdalo y ya podrás acceder de nuevo.



Crear una base de datos MySql


Para crear una base de datos en PhpMyAdmin, accede a la página principal "http://localhost/phpmyadmin/", y donde pone: Crear nueva base de datos, asígnale un nombre, por ejemplo BasePrueba, y pulsa crear.



Crear base de datos

Una vez creada, si te fijas en la parte izquierda aparecerá la nueva base de datos, pulsa en ella. Ahora lo que necesitas es crear tablas para poder almacenar y organizar los datos, puedes hacerlo paso a paso desde la pestaña Estructura, donde pone Crear nueva tabla en la base de datos, o directamente desde la pestaña SQL, con una consulta en este lenguaje.

Aquí lo hare con una simple consulta, por ejemplo, una tabla donde guardaremos los datos personales de los alumnos de una universidad.

Primero pulsa en la pestaña SQL de la base de datos que has creado, aparecerá un campo de texto, donde deberás escribir o pegar la siguiente consulta y pulsar continuar:


CREATE TABLE alumnos (
      id bigint(7) NOT NULL auto_increment,
      nombre char(100) NOT NULL,
      apellido char(200) NOT NULL,
      DNI char(200) NOT NULL,
      KEY id (id));

Una vez hecho esto, debería aparecer a la izquierda, debajo del nombre de la base de datos, la tabla alumnos. Ya está, ya tenemos base de datos, y una tabla, ahora podemos probarla desde PHP.



Nueva Tabla Alumnos


Usar una base de datos desde PHP


Para acceder a una base de datos desde PHP se recomienda (Por seguridad), crear en PhpMyAdmin un nuevo usuario con privilegios limitados, pero en este caso, y como es un servidor local para pruebas, usaremos el usuario root.

Bueno, como eh explicado en otros tutoriales, para poder probar páginas hechas en PHP, después de instalar un servidor local (Que imagino habrás hecho ya), debemos guardar los archivos dentro de una carpeta que llamaremos por ejemplo prueba y la meteremos dentro de:

C:/.../xampp/htdocs/

Y para poder verlo en el navegador, debemos escribir en la barra de direcciones:

http://localhost/prueba/

Ahora creamos un nuevo archivo con extensión .php, con el nombre conexion.php, y lo guardamos dentro de la carpeta prueba, lo abrimos con un editor de texto o con Dreamweaver (en caso de que lo tengas instalado y configurado), y escribimos dentro lo siguiente:


<?
mysql_connect
('localhost','root','password'); //Usuario 
mysql_select_db('baseprueba'); //Base De Datos
?>

Nota: Debes sustituir password por la contraseña que le asignaste al root, en caso de que te saltaras ese paso, no pongas nada, quita la palabra password y deja las comillas vacías.

Ahora creamos otro archivo en la misma carpeta, llamado insertar.php y escribimos dentro lo siguiente:


<?
//Conectamos con la base de datos
include ('conexion.php');

$nombre 'Antonio';
$apellido 'Lopez Martin';
$DNI '111111';

//Insertamos un registro en la tabla alumnos de la base de datos
mysql_query ("INSERT INTO alumnos (nombre, apellido, DNI)
              VALUES ('$nombre', '$apellido', '$DNI')"
);

//Hacemos una consulta en la tabla alumnos
$result mysql_query ("SELECT * FROM alumnos");

//Mostramos el contenido de la tabla alumnos
while ($row mysql_fetch_array ($result)) {
   echo 
'Nombre: '.$row ['nombre'].'<br />';
   echo 
'Apellido: '.$row ['apellido'].'<br />';
   echo 
'DNI: '.$row ['DNI'].'<br />';
}

//Cierra la conexion con la base de datos
mysql_close();
?>

Podemos ver lo que pasa escribiendo lo siguiente en la barra de direcciones del navegador:

http://localhost/prueba/insertar.php

Esto es solo un ejemplo de como insertar datos en la base de datos y mostrarlos, evidentemente necesitas saber PHP para hacerlo, si aún no sabes al menos con este tutorial, y los otros dos que he nombrado al principio, tendrás todo preparado para probar cualquier script PHP que vayas aprendiendo a hacer.



<< Anterior | Configurar servidor de prueba con Dreamweaver

Consultas básicas en SQL | Siguiente >>