Bienvenidos sean a este post, en el dia de hoy nos centraremos en crear una base y una tabla en mysql y una pagina en PHP para subir y recuperar informacion desde la tabla, todo esto nos servira para poder aplicar este tipo de almacenamiento en alguna de nuestras apps creadas anteriormente pero para ello deberan haber hecho todo lo descripto en el post anterior, sobre como instalar LAMP (Linux, Apache, MySQL y PHP) y nos centraremos en como crear nuestra base, tablas y paginas necesarias, comencemos.

Anuncios

Comencemos con la creacion de nuestra base y tabla, primero ingresaremos a nuestro programa para trabajar con mysql, para ello debes ingresar a nuestro equipo configurado y ejecutar el siguiente comando:

tinchicus@dbn001dsk:~$ sudo mysql -u root -p

Cuando presionen Enter les pedira la contraseña del usuario, si fue ingresada correctamente nos aparecera el siguiente interprete:

tinchicus@dbn001dsk:~$ sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

En este interprete ejecutaremos el siguiente comando:

MariaDB [(none)]> grant all on *.* to 'tinchicus'@'localhost' identified by 'laclave' with grant option;

Este comando nos servira para crear un nuevo usuario y concederle acceso a todas las bases y tablas con todos los permisos, en este caso crea un usuario con las siguientes caracteristicas:

Anuncios
  • usuario: tinchicus
  • contraseña: laclave

Para este caso localhost corresponde al equipo desde donde el usuario podra conectarse, en caso de necesitar conectarse remotamente deberan especificar la IP del equipo desde donde se conectara en lugar de localhost, si nos devuelve la siguiente respuesta quiere decir que funciono Ok:

Query OK, 0 rows affected (0.11 sec)

Si obtuvieron esta respuesta pueden escribir logout o presionar Ctrl+D para salir del programa y volveremos a ingresar con el usuario que creamos:

tinchicus@dbn001dsk:~$ mysql -u tinchicus -p

Nota: Recuerden que pueden setear otro nombre de usuario y clave pero deben recordarlas mas adelante.

Cuando ingresen con su nuevo usuario procederemos a crear una nueva base de datos llamada puntuaciones con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS puntuaciones;
Query OK, 1 row affected (0.00 sec)

Si salio bien debera darles la respuesta como ven arriba, nuestro siguiente paso sera asignar la base para usarla mediante el siguiente comando:

MariaDB [(none)]> use puntuaciones;
Database changed
MariaDB [puntuaciones]>

Observen como cambio la identificacion y nos muestra la base que quedo asignado, nuestro siguiente paso sera crear la tabla con el siguiente bloque:

CREATE TABLE puntuaciones (
    _id INTEGER PRIMARY KEY AUTO_INCREMENT,
    puntos INTEGER, nombre TEXT, fecha LONG);

Este bloque se encargara de crear una tabla llamada puntuaciones, el primer campo se llamara _id sera de tipo INTEGER, esta sera la identificadora de la linea y se auto incrementara, nuestro siguiente campo se llamara puntos y de tipo INTEGER, despues tendremos un campo llamado nombre de tipo TEXT y por ultimo el campo llamado fecha de tipo LONG, si lo ejecutan y nos devuelve el resultado Query Ok querra decir que se creo la tabla correctamente, nuestro siguiente paso sera agregar un dato para lo cual usaremos el siguiente comando:

INSERT INTO puntuaciones (_id,puntos,nombre,fecha) values 
    (NULL,10000,'tinchicus',0),
    (NULL,9000,'el Gary',0),
    (NULL,8000,'el Poli',0);

Con esto agregaremos tres valores a nuestra tabla, para chequear si funciono correctamente ejecutemos el siguiente comando con su respectiva salida:

MariaDB [puntuaciones]> select * from puntuaciones;
+-----+--------+-----------+-------+
| _id | puntos | nombre    | fecha |
+-----+--------+-----------+-------+
|   1 |  10000 | tinchicus | 0     |
|   2 |   9000 | el Gary   | 0     |
|   3 |   8000 | el Poli   | 0     |
+-----+--------+-----------+-------+
3 rows in set (0.00 sec)
MariaDB [puntuaciones]>
Anuncios

Con esto podemos decir que tenemos una base, una tabla y pudimos cargar informacion correctamente, nuestro siguiente paso sera crear una pagina en PHP para recuperar esa informacion, para eso crearemos la siguiente pagina dentro del directorio por defecto del servidor apache:

tinchicus@dbn001dsk:~$ sudo nano /var/www/html/lista.php

Recuerden que el unico que tiene permisos en ese directorio es root por lo tanto, usan sudo o se convierten en root para poder crearlo, en cualquiera de los dos casos agreguen el siguiente codigo al archivo:

<?php
if (isset($_REQUEST["max"])) { $max=$_REQUEST["max"]; } else { $max=""; }

$con = new mysqli("localhost","tinchicus","laclave","puntuaciones");


if($con->connect_error)
{
        echo "Error al conectar al servidor: ", $con->connect_error;
        exit();
}


$lista="select puntos, nombre from puntuaciones order by puntos desc";
if ($max)
{
        $lista .= " limit " . $max;
}

$cursor = $con->stmt_init();
if ($cursor->prepare($lista))
{
        $cursor->execute();
        $cursor->bind_result($puntos, $nombre);
        while($cursor->fetch())
        {
                echo $puntos . " - " . $nombre . "\n";
        }
        $cursor->close();
}

$con->close();
?>
Nota: Recuerden modificar en la linea de $con al usuario y clave que hayan creado para conectarse al servidor.

En la primera linea chequearemos si recibimos un dato llamado max, en caso contrario lo dejara en blanco, la siguiente linea sera la encargada de crear la conexion y la guardara en una variable llamada $con, luego por medio de un condicional chequearemos si ocurrio algun error en caso de ser verdadero mostrara un mensaje y saldra del programa, nuestra siguiente linea es la encargada de almacenar el query que usaremos para buscar en la base, este query solamente nos traera los datos de los puntos y nombre de la tabla puntuaciones y lo ordenara por puntos de forma descendente, despues chequeara si $max tiene un valor y en caso de ser verdadero a la variable anterior, $lista, le agregara la sentencia para limitar la consulta, les recomiendo este post donde hablo sobre SELECT en mysql.

La siguiente linea se encarga de crear un cursor e iniciar la conexion, despues tendremos un condicional donde chequeara si se puede preparar el query, en caso de ser verdadero lo ejecuta, por medio de bind_result asignara dos variables para almacenar los resultados, luego por medio de un while mostraremos los datos obtenidos en pantalla, una vez terminado el ciclo cerraremos el cursor y luego por ultimo cerraremos la conexion, si lo probamos veremos un resultado similar a este

Anuncios

Con esto tenemos generado nuestra pagina para consultar los valores de puntuacion almacenados en el servidor, nuestra siguiente pagina sera para agregar nuevos valores en el mismo, para ello deberemos crear en el mismo lugar un nuevo archivo llamado nuevo.php:

 tinchicus@dbn001dsk:~$ sudo nano /var/www/html/nuevo.php 

Una vez dentro del editor le agregaremos el siguiente codigo:

<?php
$con = new mysqli("localhost","tinchicus","laclave","puntuaciones");

if ($con->connect_errno)
{
        echo "Error al conectar a la base: ", $con->connect_error;
        exit();
}

$puntos = $_GET['puntos'];
$nombre = htmlspecialchars($_GET['nombre']);
$fecha = $GET['fecha'];

$sql = "INSERT INTO puntuaciones values (NULL,'$puntos',"
                                . "'$nombre','$fecha')";

$con->query($sql);
echo "Ok.\n";
$con->close();
?>

La primer linea se encarga de conectarnos a la base de datos, el condicional se encarga de mostrar un mensaje en caso de error, luego asignaremos a una variable llamada $puntos un valor informado por medio de $_GET, la siguiente variable sera llamada $nombre donde por medio $_GET obtendremos el valor a asignar pero usaremos a htmlspecialchars() para eliminar todos los caracteres especiales por ultimo crearemos una variable llamada $fecha y asignarle el valor por medio de $_GET, la siguiente variable se llamara $sql y almacenara nuestra secuencia para ingresar valores, observen que primero indicamos la tabla, luego enviaremos el valor NULL para _id, luego usaremos a $puntos para el campo puntos, $nombre para el campo nombre y $fecha para el campo fecha.

Nuestra siguiente linea se encargara de ejecutar el query, luego mostraremos un mensaje en pantalla y por ultimo cerraremos la conexion. Con todo esto realizado para probarlo deberemos usar nuestra pagina de la siguiente forma:

 http://172.128.10.9/nuevo.php?nombre=la Marta&puntos=9999&fecha=0 

Como pueden ver ingresamos tres datos, uno llamado nombre, otro puntos y el ultimo llamado fecha, yo pase estos datos como ejemplo, cuando lo ejecute deberemos obtener esta respuesta

Nota: La IP de la direccion puede variar con respectos a sus equipos.

Si volvemos a consultar con la pagina anterior deberemos ver un resultado similar a este

Como pueden ver todo esta funcionando correctamente, con esto tendremos dos paginas: uno para listar y otro para ingresar nuevos valores lo cual nos servira para nuestra proxima modificacion en Asteroides.

Anuncios

En resumen, hoy hemos visto como crear una base y una tabla en mysql, como ingresar datos, hemos visto como usar mysql con PHP, como hacer una consulta y como ingresar un nuevo dato via PHP, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00