¿Cómo realizar un CRUD sencillo en PHP y CodeIgniter desde cero?

Primero que nada, ¿Qué significa CRUD?

CRUD es una aplicación que esta encargada de crear, leer, actualizar y eliminar registros en una base de datos, y de ahí CRUD (por sus siglas en Inglés).

Ahora supongamos que somos una empresa desarrolladora de software y un cliente necesita una pequeña aplicación para actualizar inventarios de los productos que vende, pero quiere poder hacerlo desde cualquier parte, o sea necesita una aplicación web.

Necesitamos algunas herramientas para poder desarrollar esta pequeña aplicación ¿pero qué necesitamos? simple, no lo pensé dos veces y decidí lo siguiente.

  • PHP
  • MySQL
  • CodeIgniter
  • Grocery CRUD

Como nota extra, yo en la elaboración de este tutorial utilice el editor Sublime Text, ya que me da la opción de abrir y gestionar proyectos.

Bien quiero suponer que tenemos instalado un servidor Apache y MySQL, si no pueden leer el siguiente Articulo.

Ahora necesitamos descargar la versión más actualizada de CodeIgniter (en este caso será 2.1.2)desde el siguiente enlace:

http://codeigniter.com/

Una vez descargado copiamos el archivo al directorio htdocs y después lo descomprimimos; podemos observar que se extrae CodeIgniter y crea una carpeta, renombramos esa carpeta como crud.

Ahora tenemos CodeIgniter instalado y listo para utilizarse, podemos comprobar que hasta ahorita todo funciona correctamente yendo a la siguiente dirección: http://localhost/crud/.

Si muestra una pantalla como la siguiente, podemos seguir adelante.

Ahora tenemos que crear una base de datos y una tabla donde podremos guardar la información necesaria para la administración de inventarios.

Para hacer eso necesitamos realizar los siguientes pasos:

1. Ir a la direccion http://localhost/phpmyadmin.

2. Crear una nueva base de datos llamada crud_db.

3. Ingresamos a la base creada desde el panel de la izquierda.

4. Creamos una tabla llamda productos y agreamos 7 campos.

5. Empezamos a añadir los campos necesarios, en este ejemplo crearemos una pequeña tabla con lo siguiente:

  • id tipo entero (debe ser llave primaria y autoincrementable)
  • proveedor tipo varchar con una longitud de 50 caracteres.
  • nombre tipo varchar con una longitud de 128 caracteres.
  • descripcion tipo varchar con una longitud de 250 caracteres.
  • precio_compra tipo float
  • precio venta tipo float
  • exitencia tipo int

Para hacer llave primaria y autoincrementable el campo id de la tabla es necesario seleccionar de la lista despegable la opción PRIMARY y activar el checkbox A_I.

6. Le damos clic en guardar y ya tendremos nuestra base de datos lista para comenzar a meterle información.

Bien, ya con esto podemos comenzar a configurar y preparar CodeIgniter para poder desarrollar nuestra aplicación.

Ahora abrimos nuestra carpeta crud y tendrá la siguiente estructura:

Nosotros tenemos que modificar dos archivos antes de continuar, primero abrimos el archivo  /crud/application/config/config.php.

Y complementamos la información que falta para que quede así:

De esta forma le decimos que la url base de nuestra aplicación sera http://localhost/crud/.

Una vez realizado esto, necesitamos conectar la base de datos, para ello abrimos el archivo /crud/application/config/database.php y complementamos lo siguiente.

Aquí lo que hicimos fue conectar la base de datos previamente creada a nuestra aplicación.

Ahora vamos a definir una ruta principal, para ello editamos el archivo  /crud/application/config/routes.php de tal forma que tiene que quedar así.

Teniendo todo configurado ahora estamos listos para instalar Grocery Crud, tenemos que descargar la ultima versión del siguiente enlace:

http://www.grocerycrud.com/downloads

Una vez descargada descomprimimos el archivo y quedara algo como esto.

Y después haremos lo siguiente:

  1. Copiamos la carpeta /assets a nuestra carpeta /crud/.
  2. De la carpeta de grocery ingresamos  /application/config y copiamos grocery_crud.php a la carpeta /crud/application/config/.
  3. De la carpeta /application/libraries copiamos los dos archivos a la carpeta /crud/application/libreries/.
  4. Y finalmente copiamos grocery_crud_model.php de la carpeta /application/models a la carpeta /crud/application/models/.

Ahora que hemos copiado los archivos necesarios, debemos de crear 2 archivos más para que la aplicación funcione.

  • Controlador: se encargará de cargar la librería y generar las reglas necesarias para crear el CRUD.
  • Vista: Dara el formato de salida necesario.

En la carpeta /crud/application/controllers/ necesitamos crear un archivo nuevo y llamarlo productos.php, a este le agregamos el siguiente código:

Después en la carpeta /crud/aplications/views/ creamos una carpeta llamada productos y allí creamos un archivo llamado administracion.php, la ruta final será /crud/aplications/views/productos/administracion.php y agregamos el siguiente código:

Con esto ya tendremos una pequeña aplicación para el manejo de inventarios desde una plataforma web, aunque el proyecto es muy básico ustedes pueden complementarlo con muchas cosas más.

Dejo unas capturas finales.

 

 

Descarga los archivos del tutorial aquí

Descargar

 

loading...

Escrito por pedgarc

Soy estudiante de Ciencias Computacionales de la Universidad Autónoma de Nuevo León y desarrollador de software enfocado a la web, especialmente, carritos y tiendas electrónicas.

30 Comentarios

Deja una respuesta
  1. De un error de base de datos Ocurrido

    No se puede seleccionar la base de datos especificada: crud_db

    Nombre del archivo: C: \ xampp \ htdocs \ crud \ system \ database \ DB_driver.php

    Número de línea: 140

    • kerido gustavo… eso kiere decir ke kizas no has especificado muy bien el nombre de la base de datos o el servidor localhost o la clave o contraseña… ese error me da a mi por muchas razones y kiere decir mas ke nada sobre la especificacion de la base de datos
      :3

  2. Hermanos programadores… tengo una duda sobre 2 tablas en mi pekeño sistemita! esta productos y ventas, tengo la tabla productos y la tabla ventas! lo ke kiero eske al realizar una venta X pues se reste del campo existencias en la tabla productos, y que al haber 0 existencias no se permita realizar mas ventas… como puedo hacer eso con grocery crud?… gracias de ante mano y prometo compartirles mi sistema al tenerlo terminado… se ke a mas de alguna persona le servida de mucho:::

  3. Genial el tutorial, me ha servido de gran ayuda, tengo una duda y no se si alguien podrá aclararme Si tengo una tabla de empleados ¿Cómo puedo hacer que Grocery Crud solo me liste aquellos empleados de una determinada provincia? No se como pasarle un identificador a la tabla ¿Es posible? Gracias por la ayuda

  4. Hola perdac
    He probado el ejemplo que publicas y em sale este error que me rompe la cabeza:
    Warning: Invalid argument supplied for foreach() in C:\wamp2\www\crud\application\views\productos\administracion.php on line 7

    Warning: Invalid argument supplied for foreach() in C:\wamp2\www\crud\application\views\productos\administracion.php on line 10

    Administración de Productos
    y lo demas todo blanco por fa, dame una mano

  5. Hola me sale el listado con todos los datos pero cuando voy a guardar sea por editar como por agregar me da el error “Ocurrio un error guardando” ayudaaaa pleaseee

  6. saludos, saben si funciona grocery con ms sql, he intentado y nada, con codeigniter si funciona bien puedo hacer llamadas a bases de datos ms sql pero al querer llamar a una tabla con grocery crud no funciona

  7. Hola pedgarc muy buen tutorial y de verdad me ha gustado como funciona de rapido. Quisiera que me dieras una idea. Quiero hacer que la tabla aparezca a partir de los resultados de un buscador y no que vacie la tabla completa no se si me explico.

  8. hola saludes desde colombia… mil gracias por compartir tu conocimiento…
    podrias colaborarme con un problema me sale este error al ejecutar el wampserver
    A Database Error Occurred

    Unable to select the specified database: crud_db

    Filename: C:\wamp\www\crud\system\database\DB_driver.php

    Line Number: 140

  9. Hola, antes que nada felicidades por tu dedicación y tu tiempo, muchas gracias por tu ayuda, tengo un problema espero puedas ayudarme por favor, he creado un Crud en el cual en un campo hay ocasiones en el cual se plasman muchos caracteres , en la vista no se muestran todos solo unos cuantos seguidos de puntos suspensivos, ejemplo (ejemplo….), ¿como podria hacerle para que en esa columna me muestre todo el texto?

    De antemano muchas gracias

  10. disculpa pedgarc ya agregue mas campos pero quisiera que cuando yo quiero insertar no me aparecen los demás campos que agregue

  11. HOla! excelente tutorial!! solo que me sale error 404 no se encontró la página. alguien me puede ayudar??? por que saldrá este error??

  12. Excelente tutorial pedgarc, muy pocos recursos se explican de modo tan claro (y en español). He estado intentando usar dropdown’s “dependientes” pero no he logrado hacerlo.

    Me podrias ayudar con eso?
    Grx.

  13. Buenas, quisiera saber como puedo hacer para que las selecciones sean con combos dinamicos y que no tengan que teclear el valor que quieran introducir ahi.

  14. Buenos dias, increible su funcionalidad, perdon la pregunta
    Tengo el crud como subformulario dentro de un frame
    se pueden ver desde el comienzosin tener que realizar el filtro; solo los registros que yo le indique por medio de un parametro por ejemplo: de la tabla productos solo quiero ver los registros del proveedor XYZ

  15. Muy buen tutorial excelente!!! lo hice paso a paso, tal como lo explicas y me aparece este error:

    An Error Was Encountered

    Unable to load the requested class: grocery_crud

    pero yo hice todo tal cual lo explicas, no encuentro el error!!!

  16. Hola que tal!
    Tengo una duda. ¿Cómo puedo hacer para comparar datos de un formulario? Me explico, en una tabla, tengo 3 campos numéricos que son: precio, abono y saldo. Necesito ingresar el precio de un pedido, con un abono realizado por un cliente y con esos 2 datos calcular el saldo pendiente, obviamente validando que el abono no sea mayor al precio, y la diferencia del precio, guardarla en el saldo.
    Eso, intente de muchas maneras, pero no logro dar con ello.
    Espero me puedan ayudar.
    Saludos!

  17. Hola amigo, gracias por el ejemplo me ahorraste mucho tiempo, solo alguna duda ¿Como agregar el motor de búsqueda?

  18. hola realice el ejemplo conectando la base de datos a mysql y me funciona muy bien, el problema es cuando lo conecto a una base de datos postgres, me sale este error:
    rror Number:

    ERROR: error de sintaxis en o cerca de «.» LINE 1: SELECT productos.* ^

    SELECT productos.* FROM “productos” LIMIT 10

    Filename: C:\xampp\htdocs\contratacion\system\database\DB_driver.php

    Line Number: 331

    agradeciria que me ayudaras gracias espero pronto tu respuesta.

  19. hola, para invocarlo desde otro archivo php
    use include y me bota el error:
    “Your system folder path does not appear to be set correctly. Please open the following file and correct this: index.php”
    alguna ayuda. gracias

  20. hola veo que a varios les salio el error 404 despues de seguir los pasos, ya le busque por todo lado y nada, sigo en el mismo error, alguien pudo solucionarlo???

  21. Buenas noches! Una consulta, soy muy nueva en todo eso, por eso la consulta!
    No necesitamos crear ningún modelo de la tabla de la base de datos? o eso seria necesario de crar todo en forma manual si usar grocery crud
    Desde ya muchas gracias

  22. Excelente tutorial , funciona perfecto , gracias amigo , tengo una serie de preguntas espero que me puedas responder lo más pronto posible.
    1. Las cabeceras de las tablas tienen el nombre del campo de la base de datos , cómo puedo personalizarlo, es decir ponerle un nombre diferente en lo que me muestra en pantalla y que se quede como yo deseo en mi base de datos , esto para que el usuario final pueda entender el nombre de campo que se muestra en la aplicación final.
    ¿Qué archivo tengo que editar?
    2. ¿En qué parte edito el nombre de los botones?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *