Mentes Inquietas

  • Home
  • Posits
  • Mis Cursos
  • Podcast
  • Blog
  • Para Docentes
  • Contactar
  • Entrar

4 mayo, 2020 Por ciberkaos 875 Comments

CRUD con MySQLi en PHP – 4 Ejercicio Propuesto 1

En las lecciones anteriores hemos podido realizar la inserción e impresión de los resultados en una base de datos.  Para asimilar estos conocimientos debes practicar. Es por ello que se te propone la realización de esta tarea.

 

 

Realizar una aplicación para gestionar una colección de algún objeto que tengamos por casa. Puede ser cualquier cosa, figuras, sellos, cochecitos, libros, películas, dedales ……

Para almacenar el objeto en la clase y en la base de datos debe tener al menos 8 atributos, entre los cuales uno debe ser una fotografía y otro una categoría a la que pertenece.

La categoría debe ser otro objeto relacionado con nuestro elemento principal y debe tener un nombre, icono representativo y descripción.

El programa debe ser capaz de gestionar los elementos guardados en la base de datos con las siguientes funcionabilidades.

  1. Insertar elementos mediante un formulario html bien maquetado.
  2. Listar los elementos en html con una tabla o cajas div bien maquetado.
  3.  Buscar un elemento por su nombre y listado de los resultados, para esto puede usar la misma lista que usas para listar todos los elementos, pero condicionando la sentencia que envias a la BD.

 

En ejercicios posteriores realizaremos el proceso de actualización, borrado y login.

 

 

Filed Under: CRUD con MySQLi en PHP

3 mayo, 2020 Por ciberkaos 765 Comments

CRUD con MySQLi en PHP – 3 Obtención de datos

Ahora que ya tenemos una aplicación capaz de insertar datos en la BD, debemos poder mostrarlos en una pagina para que el usuario realice las operaciones de consulta o modificación de los mismos.

Estamos entrando en la R del CRUD, que es la lectura de los datos, esta es una de las mas amplias de las operaciones que podemos realizar en la manipulación de datos, pues tenemos que ver como ver todos los elementos, como filtrarlos mediante un buscador o ver la información de uno solo.

Vamos a empezar por obtener todos los elementos contenidos en nuestra base de datos para luego mostrarlos en una pagina web.

 

Video 1 de la lección – Obtención de datos de la BD

 

En el video podemos ver como lo que hemos creado es un método obneter, para capturar todas las filas con los datos de las figuras. Mediante un bucle while recorremos las filas, mientras con la función list asignamos por orden cada atributo para asignárselo a una variable que luego metenemos en la contrucción de un objeto de tipo figura que añadimos uno a uno al array de la clase ListaFiguras.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   public function obtenerElementos(){
 
        $sql = "SELECT * FROM ".$this->tabla." ;";
 
        $conexion = new Bd();
        $res = $conexion->consulta($sql);
 
        while( list($id, $unidades, $nombre, $pintada, $foto, $descripcion, $precio, $coleccion) = mysqli_fetch_array($res) ){
 
            $fila = new Figura($id, $unidades, $nombre, $pintada, $foto, $descripcion, $precio, $coleccion);
            array_push($this->lista,$fila);
            //$this->lista[] = $fila;
 
        }
 
    }

El siguiente paso es imprimir los datos, dado que tenemos ya almacenados todos los registros en objetos solo tenemos que construir el código html para realizar la impresión en la página.

 

Video 2 de la lección – Impresión de datos

 

 

Código de ejemplo de la lección

Filed Under: CRUD con MySQLi en PHP

3 mayo, 2020 Por ciberkaos 946 Comments

CRUD con MySQLi en PHP – 2 Conexión a la BD e Insertar

Una vez tenemos la estructura de nuestra página con el formulario, el paso siguiente sera crear la tabla en la base de datos donde insertaremos nuestros primeros datos.

 

Una vez tenemos la base de datos con la tabla «figura» y en nuestra aplicación la clase Figura con los atributos, tendremos que preparar la lógica de nuestra aplicación.

Aunque podriamos ir creando metodos dentro de la propia clase Figura para conectarse a la BD, y el resto de métodos del CRUD. Vamos a crear una clase intermedia «Generica» que nos servirá para realizar todos las operaciones con la BD con las distintas clases que generemos. Esto facilitara enormemente nuestro trabajo, pues solo sera realizar el envio de los datos para que esta nueva clase lo gestione independientemente de los objetos con los que estemos tratando.

Video de la lección

 

La Clase BD

La clase BD, es una clase que creamos en la aplicación donde al instanciarse en un objeto, realiza automáticamente la conexión para luego realizar la operación que deseemos, en este primer caso el proceso de inserción.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Bd{
 
    private $server = "localhost";
    private $usuario = "root";
    private $pass = "root";
    private $basedatos = "crudbasico";
 
    private $conexion;
    private $resultado;
 
    public function __construct(){
 
        $this->conexion = new mysqli($this->server, $this->usuario, $this->pass , $this->basedatos);
        $this->conexion->select_db($this->basedatos);
        $this->conexion->query("SET NAMES 'utf8'");
 
 
    }

Podemos ver como configuramos los parametros de nuestra BD y utilizando el constructor de la clase guardamos en un atributo llamado «conexion» el objeto mysqli de PHP para a partir de aquí realizar todas la operaciones con la BD.

Ya hemos visto en otros cursos (Ver curso envio de datos con PHP), como recepcionar los datos de un formulario y procesarlos en PHP. En esta ocasión no es diferente, solo que una vez tengamos los datos llamaremos a un método para proceder a su inserción en la base de datos.

Veamos el proceso que vamos a realizar gráficamente.

 

Se puede observar como lo que hacemos es enviar los datos a la clase BD y ejecutar el método para la inserción del objeto. Es importante darse cuenta, de que podríamos obviar el paso por la clase Figura al realizar la inserción, pero es necesario hacerlo para mantener los patrones de diseño de la aplicación.

 

 

Código de ejemplo de la lección

Filed Under: CRUD con MySQLi en PHP

3 mayo, 2020 Por ciberkaos 823 Comments

CRUD con MySQLi en PHP – 0. Introducción

Una de las principales funcionabilidades que debemos dar a nuestras aplicaciones es la persistencia. No todos los programas son iguales pero es obvio que muchos de ellos sirven para introducir información por parte de los usuarios y luego procesarla para obtener algún resultado.

Tiendas de productos, CRM, Blogs de noticias, todos necesitan un lugar donde guardar los datos. Estos datos pueden guardarse con muchos métodos, como puede ser almacenándolos en documentos XML o JSON entre otros.

En este caso, vamos a trabajar con uno de los sistemas de persistencia más extendidos en la actualidad, aunque no el único.  Este son las Bases de Datos relacionales, concretamente vamos a utilizar el gestor de MySQL.

CRUD con MySQLi en PHP – 0. Introducción

CRUD con MySQLi en PHP – 1 El CRUD

CRUD con MySQLi en PHP – 2 Conexión a la BD e Insertar

CRUD con MySQLi en PHP – 3 Obtención de datos

CRUD con MySQLi en PHP – 4 Ejercicio Propuesto 1

CRUD con MySQLi en PHP – 5 Obtención de un elemento

CRUD con MySQLi en PHP – 6 Poniendo un buscador

CRUD con MySQLi en PHP – 7 Actualización de elementos en el CRUD

CRUD con MySQLi en PHP – 8 Borrar elementos en el CRUD

CRUD con MySQLi en PHP – 9 Sistema de Login y asignación de permisos

Filed Under: CRUD con MySQLi en PHP, Cursos, Desarrollo WEB

3 mayo, 2020 Por ciberkaos 785 Comments

CRUD con MySQLi en PHP – 1 El CRUD

Una de las principales funcionabilidades que debemos dar a nuestras aplicaciones es la persistencia. No todos los programas son iguales pero es obvio que muchos de ellos sirven para introducir información por parte de los usuarios y luego procesarla para obtener algún resultado.

Tiendas de productos, CRM, Blogs de noticias, todos necesitan un lugar donde guardar los datos. Estos datos pueden guardarse con muchos métodos, como puede ser almacenándolos en documentos XML o JSON entre otros.

En este caso, vamos a trabajar con uno de los sistemas de persistencia más extendidos en la actualidad, aunque no el único.  Este son las Bases de Datos relacionales, concretamente vamos a utilizar el gestor de MySQL.

Si estamos utilizando PHP las clases más utilizadas son PDO y MySQLi, ambas son alternativas modernas orientadas a la programación orientada a objetos. En este caso vamos a utilizar MySQLi y veremos todos los procesos necesarios para realizar un CRUD con los datos.

 

Importante: Es importante que no usemos las funciones de PHP mysql desaprobadas, como mysql_connect, si realizas consultar por internet encontraras mucha documentación con estas funciones. Debes tener cuidado y asegurarte de que no te estas documentando con funciones obsoletas.

Pero, ¿qué es el CRUD?

Cuando trabajamos con datos es necesario poder realizar determinadas operaciones como son:

  • Insertar los datos en la base de datos.
  • Leer los datos de la base de datos.
  • Actualizar los datos de la base de datos.
  • Borrar los datos de la base de datos.

O, lo que es lo mismo: CREATE, READ, UPDATE y DELETE de donde vienen las sigas CRUD.

Dado que estamos trabajando con SQL, repasemos algunas sentencias básicas de estas operaciones.

Para insertar en SQL la sintaxis seria:
INSERT INTO nombreTabla (campo1, campo2, campo3….) VALUES (dato1, dato2, dato3…)

Para recuperar información:
SELECT campos FROM tabla WHERE filtros de búsqueda

Para actualizar los datos:
UPDATE tabla SER campo=nuevoValor

Para borrar los datos:
DELETE FROM tabla WHERE condición de búsqueda.

Estas cuatro consultas son las más sencillas que podemos realizar en un gestor de bases de datos con motor SQL, pero no es necesario indicar que cuanto mas altos sean tus conocimientos de como construir una query de SQL más partido sacaras al uso de los métodos de las librerías de consulta de datos en PHP.

Modelo Vista Controlador

Otro concepto además de POO (Programación Orientada a Objetos), que debemos tener en cuenta es el patrón MVC, este patrón separa el código en diferentes partes con funciones especificas.

Las clases de los datos junto con la conexión y métodos de la base de datos irán en el modelo. Mientras los formularios de entrada y la impresión de resultados ira en la parte denominada vista. Todo ello controlado por el controlador. Estos conceptos los iremos aprendiendo poco a poco según vayamos creando el código de nuestro ejemplo.

¿Empezamos?

Para explicar todo este proceso, nada mejor que ir haciendolo  y mostrando cada paso que vamos realizando. Para no hacerlo muy complicado vamos a realizar una pequeña aplicación para gestionar una colección de figuras de alguna de nuestras aficiones.

Para ello hemos generado un pequeño diagrama de clases con los atributos que queremos que almacenar de cada una de nuestras figuras. Dado que se trata de una colección también hemos de crear una clase para listar todas las figurar y aplicar los métodos donde queramos actuar en todas ellas como métodos de impresión etc.

 

 

 

Video de la lección

La estructura

Este curso tiene como objetivo entender los métodos de comunicación con la base de datos, por lo que no me voy a parar en conceptos como el diseño de la página o la usabilidad, pero si he creado una simple estructura para tener una página principal, otra donde listar los resultados y un formulario donde introducir o editar los datos de mis figuras.

 

 

En los códigos de ejemplo veras que se trata de una estructura muy simple, en la que he utilizado bootstrap y unos pocos estilos para darle formato y separado con includes de PHP las diferentes secciones de la página como el header, nav, footer, etc.

Para empezar ademas de esta estructura lo que debemos de crear es el formulario para realizar la inserción de los datos y la clase de POO de nuestra figura.

Formulario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form name="figura" action="<?php echo $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
 
        <ul>
            <li><label>Nombre: </label><input type="text" name="nombre"> </li>
            <li><label>Unidades: </label><input type="number" name="unidades"> </li>
            <li><label>Pintada: </label><input type="checkbox" name="pintada" value="1"> </li>
            <li><label>Precio: </label><input type="text" name="precio"> </li>
            <li><label>Coleccion: </label><input type="number" name="coleccion"> </li>
            <li><label>Foto: </label><input type="file" name="foto"> </li>
            <li><label>Descripción</label><textarea name="descripcion"></textarea></li>
            <li><input type="submit" value="Guardar"></li>
        </ul>
 
    </form>

El formulario como podemos ver, esta configurado para dirigir los datos a la misma página. Recuerda que en un caso real siempre deberemos validar los datos del formulario con JS antes de enviarlo al servidor.

En este caso hemos incluido la posibilidad de subir un archivo mediante un campo file, y también hemos añadido un elemento «checkbox» que comprobaremos que tiene una peculiaridad respecto al resto de elementos y es que si no esta marcado lo que hace es no enviarse en los datos del POST, lo que si no lo tenemos en cuenta al recepcionar los datos en PHP puede darnos problemas.

En el caso de la clase POO de Figura, como ya hemos hecho en otras ocasiones pondremos los atributos, constructor y métodos.

Dado que es un elemento que almacenaremos en la BD hemos incluido un atributo «id», dado que será necesario para gestionar las tablas de entidad relación de la BD.

Como peculiaridad en este caso se ha añadido dos atributos nuevos, uno el nombre de la tabla y el nombre de la carpeta donde almacenaremos las fotos, esto no es necesario aunque sí favorecerá como veremos la reutilización del código.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
class Figura{
 
    private $id;
    private $unidades;
    private $nombre;
    private $pintada;
    private $foto;
    private $descripcion;
    private $precio;
    private $coleccion;
    private $tabla;
    private $carpetaFotos;
 
    /**
     * Figura constructor.
     * @param $id
     * @param $unidades
     * @param $nombre
     * @param $pintada
     * @param $foto
     * @param $descripcion
     * @param $precio
     * @param $coleccion
     * @param $tabla
     * @param $carpetaFotos
     */
    public function __construct($id="", $unidades="", $nombre="", $pintada="", $foto="", $descripcion="", $precio="", $coleccion="")
    {
        $this->id = $id;
        $this->unidades = $unidades;
        $this->nombre = $nombre;
        $this->pintada = $pintada;
        $this->foto = $foto;
        $this->descripcion = $descripcion;
        $this->precio = $precio;
        $this->coleccion = $coleccion;
        $this->tabla = "figura";
        $this->carpetaFotos = "fotos/";
    }
 
    /**
     * @return string
     */
    public function getId()
    {
        return $this->id;
    }
 
    /**
     * @param string $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }
 
    /**
     * @return string
     */
    public function getUnidades()
    {
        return $this->unidades;
    }
 
    /**
     * @param string $unidades
     */
    public function setUnidades($unidades)
    {
        $this->unidades = $unidades;
    }
 
    /**
     * @return string
     */
    public function getNombre()
    {
        return $this->nombre;
    }
 
    /**
     * @param string $nombre
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    }
 
    /**
     * @return string
     */
    public function getPintada()
    {
        return $this->pintada;
    }
 
    /**
     * @param string $pintada
     */
    public function setPintada($pintada)
    {
        $this->pintada = $pintada;
    }
 
    /**
     * @return string
     */
    public function getFoto()
    {
        return $this->foto;
    }
 
    /**
     * @param string $foto
     */
    public function setFoto($foto)
    {
        $this->foto = $foto;
    }
 
    /**
     * @return string
     */
    public function getDescripcion()
    {
        return $this->descripcion;
    }
 
    /**
     * @param string $descripcion
     */
    public function setDescripcion($descripcion)
    {
        $this->descripcion = $descripcion;
    }
 
    /**
     * @return string
     */
    public function getPrecio()
    {
        return $this->precio;
    }
 
    /**
     * @param string $precio
     */
    public function setPrecio($precio)
    {
        $this->precio = $precio;
    }
 
    /**
     * @return string
     */
    public function getColeccion()
    {
        return $this->coleccion;
    }
 
    /**
     * @param string $coleccion
     */
    public function setColeccion($coleccion)
    {
        $this->coleccion = $coleccion;
    }

 

Filed Under: CRUD con MySQLi en PHP Tagged With: crud, mysql, PHP

  • « Previous Page
  • 1
  • 2

© Ingenieros del Software 2020 - By AVeiga - mentesinquietas.net