Inicio

sábado, 10 de septiembre de 2011

Insertando datos desde un formulario

El siguiente paso después de haber visto como acceder y leer datos de una BD en MySQL será estudiar como conseguir insertar datos mediante un formulario HTML. Para ello necesitaremos dos ficheros, el primero un archivo con el formulario necesario para recoger los datos puede ser este:
<html>
<head>
<title>Formulario HTML</title>
</head>
<body>
<form action="insert.php" method="post">
<label>Nombre:</label>
<input type="text" name="nombre_form">
<label>Edad: </label>
<input type="text" name="edad_form">
<input type="submit"><input type="reset">
</form>
</body>
</html>

El fichero insert.php nos va a hacer todo el procesamiento de insertar los datos generando los mensajes de errores pertinentes si hay algún fallo:
<?php
// Crear conexión a la Base de Datos
$conexion = mysql_connect("localhost","root");
if (!$conexion) {
die("Fallo la conexión a la Base de Datos: " . mysql_error());
}
//Seleccionar la Base de Datos a utilizar
$seleccionar_bd = mysql_select_db("directorio", $conexion);
if (!$seleccionar_bd) {
die("Fallo la selección de la Base de Datos: " . mysql_error());
}
//Tomar los campos provenientes del Formulario
$nombre = $_POST['nombre_form'];
$edad = $_POST['edad_form'];
// Insertar campos en la Base de Datos
$insertar = mysql_query("INSERT INTO example (nombre, edad)
VALUES ('{$nombre}', '{$edad}')", $conexion);
if (!$insertar) {
die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
}
// Cerrar conexión a la Base de Datos
mysql_close($conexion);
echo "Se ha insertado el siguiente dato NOMBRE: ".$nombre." EDAD: ".$edad." años."
?>

Es similar al código visto en post anterior salvo que recogemos los valores de las variables $_POST.

Recuperando datos de una tabla

En el presente post vamos a ver como recuperar datos de una tabla de nuestra base de datos. La lógica sigue siendo la misma sólo que con algunos añadidos. Primero debemos conectarnos a MySQL, después seleccionar la base que nos interesa. Realizamos la petición con una sentencia SQL presentamos los datos por pantalla.

Ejemplo:

<?php
// Conexión a MySQL
mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("directorio") or die(mysql_error());

// Recuperando datos de la tabla example
$resultado = mysql_query("SELECT * FROM example")
or die(mysql_error()); 

//almacenamos la petición en la variable $row
$row = mysql_fetch_array( $resultado );
// Presentamos los datos

echo "Nombre: ".$row['nombre'];
echo " Edad: ".$row['edad'];

?>


Crear una tabla

Una vez que ya tenemos creada nuestra base veamos como podemos insertar una tabla con los campos correspondientes, para ello usaremos la sintáxis siguiente:
CREATE TABLE nombre_tabla
(
columna_nombre1 tipo_dato,
columna_nombre2 tipo_dato,

....
)

Ejemplo: vamos a crear una tabla a la que llamará "example" en la BD DIRECTORIO.
<?php
// Conexión a MySQL
mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("DIRECTORIO") or die(mysql_error());

// Creando una tabla en nuestra BD
mysql_query("CREATE TABLE example(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
 nombre VARCHAR(30),
 edad INT)")
 or die(mysql_error()); 

echo "Tabla creada!";

?>

Podrá comprobar que una vez efectuada la conexión, debemos seleccionar la base de datos sobre la que vamos a actuar. Una vez que le hemos selecionado mysql_select_db("DIRECTORIO") or die(mysql_error()); procedemos a crear la tabla con una petición o query en la sintáxis SQL. 
mysql_query("CREATE TABLE example( argumentos serían los campos , el campo id es de tipo integer (int) no nulo y tipo autoincremento. Además ya hemos indicado que es nuestra llave primaria. El campo nombre es de tipo varachar al que necesariamente le debemos indicar entre paréntesis su longitud. Bien en el siguiente post analizaremos como insertar datos en una tabla y como hacerlo además mediante un formulario.

Crear una nueva base de datos

Es muy importante tener los privilegios necesarios para acceder a MySQL y poder conectar,crear y modificar bases de datos. Para ello desde menú general accedemos a la petaña Privilegios:
 Posteriormente editaremos los privilegios de nuestra cuenta:


Marcaremos las opciones que nos interese y finalizaremos con Continuar.

El código asociado para crear una base de datos sería el siguiente:

<?php
$con = mysql_connect("localhost","root");
if (!$con)
  {
  die('No se pudo conenectar a la base de datos ' . mysql_error());
  }

if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Bases de datos creada";
  }
else
  {
  echo "Error creando base de datos" . mysql_error();
  }

mysql_close($con);
?>


Como podrá comprobar el código no ostenta mucha complicación, una vez conectado si no ha habido errores, creamos nuestra base de datos con la línea:

mysql_query("CREATE DATABASE my_db",$con)

El resto no  es más que un bucle que nos manda un mensaje en caso de error.

lunes, 5 de septiembre de 2011

Conexión a MySQL

Buena parte de la efectividad de MySQL tiene que ver con la seguridad que ofrece. MySQL ofrece la posibilidad de administrar permisos a usuarios individuales o a grupos. Por lo pronto no vamos a entrar en explicar este punto, sino que vamos a entrar a comprender y trabajar con la interrelación de PHP y MySQL.
Lo primero que debemos hacer a la hora de programar es establecer una CONEXION con el servidor.Para ello necesitamos enviar como parámetros la dirección de nuestro servidor, el usuario y la contraseña. Veamos:

<?
$miservidor='localhost';
$miusuario='';
$micontraseña='';
$bd="ejemplo";
//conexión al servidor
$conexion=mysql_connect($miservidor,$miusuario,$micontraseña);
//selección de mi base de datos
mysql_select_db($bd,$conexion);
//cierra la conexion
mysql_close($conexion);
?>


El código es fácil de comprender, en principio nos apoyamos en la función mysql_connect(servidor,usuario,contraseña) con esos argumentos, después hemos de indicarle al navegador la base de datos con la que vamos a trabajar. Por último con mysql_connect cerramos la conexión.

Podemos diseñar una clase reutilizable para todos nuestros proyectos en que precisemos conectarnos a nuestra BD:

<?
class sevidor_BD
{
private $servidor;
private $usuario;
private $pass;
private $BD;
private $conexion;
function_construct($servidor,$usuario,$pass,$BD)
{
    $this->sevidor=$sevidor;
    $this->usuario=$usuario;
    $this->pass=$pass;
    $this->BD=$BD;
    $this->conectar_BD();
}
private function conectar_BD();
{
    $this->conexion=mysql_connect($this->servidor,$this->usuario,$this->pass);
    mysql_select_db($this->BD,$this->conexion);}
}
}
$servidor="localhost";
$usuario="";
$pass="";
$BD="ejemplo";
$usuario=new;
$servidor_BD($servidor,$usuario,$pass,$BD);
?>