Videotutorial: Creación y validación de formularios con Codeigniter

codeigniter_screencast_formEn este video tutorial voy a enseñaros cómo crear formularios en CodeIgniter con ayuda del helper form y validarlos de manera sencilla mediante la librería form_validation.

Este es el segundo videotutorial de la serie CodeIgnitor, podéis encontrarlos todos en la página de screencasts, o suscribiros al podcast de iTunes.

Descargar ficheros con el código del ejemplo.

Ver screencast (duración: 20:51)

Enlaces

82 comentarios para “Videotutorial: Creación y validación de formularios con Codeigniter”

  1. Cesar Nuñez dice:

    Nuevamente con agrado nos sorprendes con un excelente screencast, ojala y puedas hacer uno similar donde demuestres como usar «Simplelogin 0.1» para desarrollar con CodeIgniter un sistema de control de acceso. Nuevamente mis felicitaciones.

  2. David Rojas dice:

    @Cesar Simplelogin me parece una librería demasiado básica, apenas son cuatro métodos con unas pocas líneas de código. No sé si para un sistema de control de acceso merece la pena usar una librería más completa, o bien hacerte una propia desde cero (quizá imitando la idea de simplelogin pero añadiendo roles, etc.).
    De todas formas, ahora ando bastante liado y tardaré más en sacar el siguiente screencast, pero cuando tenga un hueco me pondré con ello 🙂

  3. Cesar Nuñez dice:

    Evidentemente simplelogin es como su nombre lo dice SIMPLE, pero es un buen ejemplo de como crear nuestras propias librerias en codeigniter, por otro lado una libreria q maneje acceso por niveles solo requiere que se maneje dos variables en session USER_NAME (nombre de usuario), USER_GROUP (Nivel del usuario 1,2,3…). Ojala y te des tiempo, igual sigo investigando y tus tutoriales me han sido gran utilidad para reforzar el manual q esta en la red. Gracias

  4. David Rojas dice:

    @Cesar Una lista de control de acceso puede no ser tan sencilla, por ejemplo en la aplicación que trabajo cada usuario puede tener más de un rol y la gestión de permisos se vuelve más complicada. De todas formas a ver si para dentro de un par de semanas o el mes siguiente, cuando vaya más descargado de trabajo puedo preparar el siguiente tutorial.

  5. allende dice:

    Apenas pude «chutarmelo» (verlo) completo. Excelente y gracias por compartirlo en le foro, esperamos mas aportaciones de este estilo ya que son muy pocas, un saludo.

  6. Miguel QUiroz dice:

    Alguien sabe como cerrar las conexiones en la Base de datos utilizando el codeigniter, Ejmplo $this->database->close() o algo parecido, es urgente al parecer codeigniter me deja abiertas las conexiones

  7. David Rojas dice:

    @Miguel No debería, se supone que PHP cierra las conexiones al finalizar la ejecución del script. De todas formas, si tienes un query tal que $query = $this->db->query(‘SELECT …’), haciendo $query->free_result(); se elimina el recurso y la memoria utilizada, por lo tanto te cerrará la conexión con la base de datos.

  8. Miguel QUiroz dice:

    Gracias david tienes razon en foro de aliviana me dieron varias respuestas que funcionaron, una de ellas es la que me indicas, y la otra es quitando lo de conexiones persistentes en el archivo de configuracion BD
    salduos

  9. MrSoriano dice:

    Gran tutorial. Me ha sido de muchísima ayuda!!

    Gracias!

  10. felipe dice:

    Que tal david, gracias por los videos, me han servido mucho para la pagina q estoy desarrollando. Por cierto, he leido en el libro de Professional Codeigniter, que no es recomendable manejar las sesiones de codeigniter para reconocimiento de usuarios, por la poca seguridad que manejan, me gustaria saber tu opinion. Saludos

  11. David Rojas dice:

    @felipe Bueno, hay mucha polémica sobre esto, pero yo creo que es bastante seguro para la mayoría de los casos. Puedes configurarlo para que guarde las cookies de sesión encriptadas, poniendo la variable sess_encrypt_cookie a true en el config.php. Lo que no suele gustar es que no use las sesiones nativas de php, pero se puede instalar la librería Native session, que permite usar la misma clase de sesiones pero internamente usa las sesiones de php.

  12. Saludos! estoy iniciandome en CodeIgniter y me gustaría que facilitaras algunos tips y librerias que me ayuden a desarrollar más rapido, me podrías dar tu opinión acerca de backendpro, pra ver si me conviene utilizarlo en mis desarrollos, de antemano muchas gracias!

  13. David Rojas dice:

    @José No he usado backendpro, pero tiene buena pinta. Todo depende de lo que vayas a hacer. Si es una aplicación grande por ejemplo es conveniente usar la extensión modular HMVC para poder separar tu aplicación en módulos. Yo suelo empezar las cosas simples y despues ir añadiendo funcionalidad, en vez de tomar un módulo que me lo haga todo. Como he dicho, depende de lo que vayas a hacer, si realmente requieres gran parte de lo que te proporciona backendpro, adelante. Sobre otras librerías, simplemente busca lo que vayas necesitando, hay librerías y plugins para casi todo en el wiki oficial.

  14. joner dice:

    hola k tal recien me estoy iniciando en esto y esta muy interesante el videotutorial haber si publicas mas videos para aprender y algunos manuales por ahi se agradece 😀

  15. Perfectamente explicado, despacito y con buena letra.
    Enhorabuena.

  16. Gracias davis, Sigue con el buen trabajo!

  17. Jose Luis dice:

    Hola david,en este screencasts has introducido código css dentro de la misma vista,¿hay algún directorio dentro de Codeigniter donde deba ir los ficheros css externos para despues hacer los link en las vistas que deseemos?Me sería de mucha ayuda saberlo.

    Estupendo trabajo,enhorabuena!! un saludo!

  18. David Rojas dice:

    @Jose Luis , no hay ningún directorio en particular, esto lo puedes hacer a tu gusto. Yo personalmente creo un directorio css y otro js fuera de la carpeta ‘application’. Después utilizo la función base_url() para generar el link, por ejemplo para el css principal, en mi vista de cabecera hago esto:
    <link rel="stylesheet" href="<?php echo base_url(); ?>css/style.css" type="text/css" />
    Esta es la manera más sencilla de trabajar. Si necesitas una estructura más compleja puedes echar mano de librerías para manejar assets como esta: http://codeigniter.com/wiki/Asset_Helper/

  19. Jose Luis dice:

    Perfecto,muchisimas gracias por la informacion.
    Saludos!

  20. GIAN dice:

    como validar los campos de una lista en un formulario en codeigniter en el controlador

  21. David Rojas dice:

    @GIAN No entiendo tu pregunta. Si te refieres a cómo validar un select dropdown, échale un vistazo a esto: http://stackoverflow.com/questions/2442255/validating-form-dropdown-in-codeigniter

  22. […] This post was mentioned on Twitter by Juan Perez Prado, Misael Abad Flores. Misael Abad Flores said: Videotutorial: Creación y validación de formularios con Codeigniter – http://bit.ly/aLWIi4 […]

  23. gustavo dice:

    Tengo dos radio buttons, para seleccionar el sexo de la persona, y quiero que al validar, en caso de error, me mantenga la selección del usuario. una ayudita?

    Muchas gracias, muy bueno lo tuyo.

  24. gustavo dice:

    Típico que luego de preguntar encuentro la respuesta jaja:

    <input type="radio" name="myradio" value="1" />
    <input type="radio" name="myradio" value="2" />

    Gracias igual
    Saludos

  25. gustavo dice:

    perdon por los mensajes anteriores… queri mostrar como era pero veo que elimina los php tags.

    Tengo una duda, o varias:
    1. que diferencia hay entre las librerias validation y form_validation ?

    2. si uso la lib validation, en la vista usando set_radio me mantiene la opcion seleccionada, pero las reglas de validacion no me andan 🙁 y si uso form_validation, todo bien con las reglas, pero el set_radio no funciona, incluso no me selecciona ninguno como default 🙁 🙁

  26. David Rojas dice:

    @gustavo Validation está ‘deprecated’, no la uses, es la versión anterior que se eliminará en futuras versiones de CI, utiliza form_validation en su lugar tal como dice la documentación. Respecto a la otra duda, parece ser que hay un bug con set_radio y set_checkbox que todavía no han corregido, como puedes ver en este hilo del foro oficial: http://codeigniter.com/forums/viewthread/99760/

  27. gustavo dice:

    Muchas gracias David, muy útil tu ayuda. Con respecto a mi problema, parece que hasta que arreglen el bug, alcanza con aplicarle al radio|checkbox una regla de «validacion» como «trim» por ejemplo, y con eso mantiene el valor seleccionado. 🙂

    Saludos

  28. JaimeM2 dice:

    Gran descubrimiento tu blog.

    ¡Gracias!

  29. manuel dice:

    Excelente el tutorial sobre formularios, me ayudo mucho.

    Gracias por el aporte y por compartir el conocimiento con la comunidad.

    Saludos

  30. Edwin dice:

    hola david excelente trabajo el que desarrollas, me han sido de gran utilidad.
    soy muy novato en codeigniter y haciendo ese tutorial paso a paso me tope con un error el cual no he sido capaz de salir de el, me carga normal el formulario pero al momento de enviarlos me dice que no se puede cargar el archivo exito_view.php no sabia porq asi que opte por descargar tu codigo y utilizarlo y me pasa exactamente lo mismo
    gracias por la ayuda

  31. David Rojas dice:

    @Edwin No sé cual será el problema, el código funciona bien, sólo se me ocurre que quizá no has configurado bien el base_url de CI.

  32. M4RK3S dice:

    David una duda. Cómo has hecho para que los caracteres especiales (tildes, ñ, etc…) de tus mensajes de error en las validaciones se muestren correctamente?

    Tengo utf8 tanto en la página de la vista como en el config, pero no se muestran.

    Gracias por adelantado y un saludo.

  33. David Rojas dice:

    @M4RK3S Comprueba que el editor que usas está guardando en utf8, suele ser un problema común si usas windows.

  34. M4RK3S dice:

    Si, lo he cambiado pero sigue igual. He cerrado y vuelto a abrir el editor (por cierto, cuál me recomiendas para CodeIgniter? estoy con CodeLobster) y no cambia nada.

    Los textos que escribo en los input muestran todos los caracteres bien he incluso se insertan bien en la base de datos.

    No se si se te ocurre algo más, a mi no…

    Gracias.

  35. David Rojas dice:

    @M4RK3S Aunque no uso windows, tienes e-text editor que es un clon del textmate de mac. Sobre las tildes, si has bajado el pack de lenguaje en español para codeigniter, ábrelo y echale un vistazo porque puede ser que no estén guardados en utf8, abre los archivos y conviértelos.

  36. M4RK3S dice:

    Ahí me has descolocado… No me he bajado nada sobre idiomas, debería? Tengo como idioma el inglés en el config, pero como vi que en tus ejemplos lo tenías igual no lo cambié. No tengo ningún paquete de idioma más ni se si debería, ni de donde se descarga. Esto de ser novato… Ya no sé qué más probar…

    Gracias de antemano… :-]

  37. M4RK3S dice:

    He avanzado algo. Ya tengo el paquete de idioma español y las tildes y eñes de sus archivos se muestran perfectas. Pero no ocurre lo mismo con los nombres de los campos. Por ejemplo, en esta regla de validación el nombre del campo Año se muestra mal.

    $this->form_validation->set_rules(‘fecha_anio’, ‘Año’, ‘required’);

    Alguna idea…?

    Gracias y perdona por la insistencia :-]

  38. David Rojas dice:

    @M4RK3S Me temo que ya no se me ocurre qué puede ser. Si lo averiguas no dudes en ponerlo aquí, por si alguien se encuentra con el mismo problema.

  39. oduber dice:

    hola a todos, cuando lleve ese ejemplo de forma local utilizando CodeIgniter. el primer formulario me lo muestra donde puedo ingresar los datos, pero al presionar el boton enviar, me sele este error: Not Found

    The requested URL /CodeIgniter/formulariophp was not found on this server.

    Apache/2.2.4 (Win32) PHP/5.2.3 Server at localhost Port 80.

    por favor le agradezco que me ayude con este error. muchas gracias

  40. David Rojas dice:

    @oduber Mira a ver si tienes el .htaccess configurado correctamente, el $base_url y demás, de acuerdo a tu instalación local.

  41. M4RK3S dice:

    David y demás compañeros interesados. Dicen que cuando algo no te sale y se atasca es mejor desconectar. Pues bien, eso hice y al volver sobre mi problema con los caracteres especiales he encontrado una solución. Era tan sencillo como utilizar la función htmlentities de PHP.

    $this->form_validation->set_rules(‘fecha_anio’, htmlentities(‘Año’), ‘required’);

    Espero que nos sirva a todos de ayuda y si encontrais alguna forma de que no haga falta utilizar esto hacédnoslo saber.

    Gracias y un saludo. Sigo enredando :-]

  42. M4RK3S dice:

    Como no me convencía el desenlace he seguido probando y he llegado a la conclusión de que el fallo estaba en la codificación del IDE y que cambiándola y creando un fichero nuevo que sustituya al que da problemas arregla el error

  43. Antonio dice:

    Antes que nada darte la enhorabuena por la calidad de tus tutoriales. Me parecen más que buenos.

    Por otro lado he tenido algunos problemas probando lo que explicas en el tuto.
    Primero, no me funciona min_lenght. No importa cuantos caracteres ponga, siempre me dice que no se cumple la regla.
    Y en la traducción de los mensajes, tanto en matches como en minlenght no realiza la traducción.
    Te pongo el codigo mio por si ves algún error.
    //configurar los mensajes de errores
    $this->form_validation->set_message(‘required’, ‘Debe rellenar el campo %s’);
    $this->form_validation->set_message(‘min_lenght’, ‘El campo %s debe tener al menos %s caracteres’);
    $this->form_validation->set_message(‘matches’, ‘Los campos %s y %s no coinciden’);
    $this->form_validation->set_message(‘valid_email’, ‘El campo %s debe ser una dirección de E-mail Correcta’);

    //reglas de validación del formulario de alta nueva
    $this->form_validation->set_rules (‘nombre_usuario’, ‘Nombre de Usuario’, ‘required’);
    $this->form_validation->set_rules (‘clave’, ‘Contraseña’, ‘required|min_length[6 ]’);
    $this->form_validation->set_rules (‘clave2’, ‘Confirmar contraseña’, ‘required|min_lenght[6]|matches [clave]’);
    $this->form_validation->set_rules (‘email_personal’, ‘E-mail personal’, ‘required|valid_email’);
    $this->form_validation->set_rules (‘email_personal2’, ‘Confirmar E-mail personal’, ‘required|valid_email’);

  44. David Rojas dice:

    @Antonio Es min_length, no min_lenght

  45. Dionicio dice:

    Hola David, quiero hacerte una consulta y ojalá me puedas orientar.
    Mi problema es con los formularios, no tanto en en la validación, sino en evitar que se reenvíe. Esto lo he podido hacer en php con las cookies, pero aquí en codeignite no encuentro como hacerlo. Si tienes alguna solución a este te pido me ayudes con ello, gracias de antemano.

  46. Alfredo dice:

    Muy bueno, lo único que le falto a mi parecer es la insercion de ese formulario en alguna tabla y comprobar que se hay insertado, o bien o tambien el envio del mismo como «mail».

    Saludos!

  47. Karina dice:

    Hola David, de verdad muy bueno tu aporte aunque recien stoy en esto disculpa la simplicidad de la pregunta
    que ide estas usando en este screencast?

    gracias de antemano.

  48. David Rojas dice:

    @Karina Textmate, para mac. Hay un clon para windows, e-texteditor.

  49. Fran dice:

    Buenas David, funciona bien el textmate, en dreamweaver las propiedades de css se autorellenan etc. y es algo mas facil, pero bueno.
    Mi pregunta es sobre otro tema. ¿Hay que incluir todo el prototipo de HTML en todas las vistas?. Si no lo incluyes no tienes ni <!DOCTYPE, <head, <body… pero si lo pones en todas y cargas 3 vistas desde un controller, al ver el codigo, lo tienes duplicado, triplicado, etc.
    No se que es lo mejor, o mas correcto. Gracias

  50. David Rojas dice:

    @Fran Lo suyo es incluir vistas dentro de vistas, entonces se carga automáticamente un header y un footer siempre. Creo que en alguno de los vídeos muestro un ejemplo de esto, no recuerdo en cuál.

Deja un comentario

Time limit is exhausted. Please reload the CAPTCHA.

RSS iTunes podcast Twitter

Categorías

Enlaces

Archivos