Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

CodeIgniter CRUD Operations con MySQL

Las operaciones CRUD (Crear, Leer, Actualizar y Eliminar) se utilizan comúnmente para manipular los datos en la base de datos. Casi, todas las aplicaciones web utilizan las funciones de Agregar, Editar, Actualizar y Eliminar para administrar datos. En este tutorial, crearemos una aplicación CRUD simple en CodeIgniter con MySQL para realizar operaciones de creación (inserción), lectura (selección), actualización y eliminación.
CodeIgniter es uno de los framework PHP más populares y CRUD es la funcionalidad más requerida para cada aplicación CodeIgniter. En nuestro tutorial anterior de CodeIgniter , hemos aprendido la instalación, configuración, creación de bases de datos, listado de datos y funcionalidad básica del marco de trabajo de CodeIgniter. Ahora integraremos algunas funciones avanzadas en CodeIgniter 3 mediante la creación de una aplicación de publicación de blog simple.
Si es nuevo en CodeIgniter, antes de comenzar con este tutorial de CodeIgniter CRUD , consulte el Tutorial de CodeIgniter para principiantes . Este tutorial le mostrará cómo implementar las operaciones de agregar, editar y eliminar en la aplicación CodeIgniter.
Las siguientes funcionalidades se integrarán en la aplicación CRUD CodeIgniter.
  • Recupere las publicaciones de la base de datos MySQL y las liste en formato tabular.
  • Ver detalles de la publicación.
  • Añadir datos de la publicación a la base de datos MySQL.
  • Editar y actualizar los datos del post.
  • Eliminar datos de la publicación de la base de datos MySQL.

Crear tabla de base de datos

Para almacenar la información de la publicación, es necesario crear una tabla en la base de datos MySQL. El siguiente SQL crea una poststabla con algunas columnas básicas en la base de datos MySQL.
CREATE  TABLE ` mensajes ` (
  `id`  int ( 11 ) NOT NULL AUTO_INCREMENT,
  ` title`  varchar ( 255 ) compilar utf8_unicode_ci NOT NULL ,
  `contenido en materia  texto INTERCALAR utf8_unicode_ci NOT NULL ,
  PRIMARY KEY ( ` id` )
) MOTOR = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

AUTO-CARGADOR

Siempre es una buena idea cargar automáticamente las bibliotecas y los ayudantes que se utilizan comúnmente en la aplicación. Abra el config/autoload.phparchivo, especifique la biblioteca y los archivos auxiliares para cargar automáticamente.
$ autoload [ ' library ' ] = array ( 'database' 'session' ); 
$ autoload [ 'helper' ] = array ( 'url' );

Crear modelo

Abra el application/models/directorio y cree un nuevo archivo llamado Post.phpPost model. La clase de modelo de publicación tiene los siguientes métodos para manejar las operaciones relacionadas con la base de datos (extracción, inserción, actualización y eliminación).
  • getRows () : recupera todos los datos de las publicaciones de la base de datos. Si se proporciona la ID, solo se devuelven los datos de la publicación.
  • Insertar () : Insertar datos de publicación en la base de datos.
  • update () : actualiza los datos de la publicación en la base de datos.
  • delete () : Eliminar datos de la publicación de la base de datos.
<? php  if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 
clase de  mensaje  se extiende  CI_Model { 
    / * 
     * Obtener mensajes 
     * / 
    función  GetRows ( $ id  "" ) { 
        if (empty (! $ id )) { 
            $ consulta  $ this -> db -> get_where ( 'mensajes' gama, ( 'id'  =>  $ id )); 
            devolver  $ consulta -> fila_array(); 
        } else { 
            $ query  $ this -> db -> get ( 'posts' ); 
            devuelve  $ consulta -> result_array (); 
        } 
    } 
    
    / * 
     * Insertar publicación 
     * / 
    public function  insert ( $ data  = array ()) { 
        $ insert  $ this -> db -> insert ( 'posts' $ data ); 
        if ( $ insert ) { 
            return  $ this ->db -> insert_id (); 
        } else { 
            devolver  falso ; 
        } 
    } 
    
    / * 
     * Actualización de la publicación 
     * / 
    actualización de la función pública  ( $ datos $ id ) {         si (! (Vacío ( $ datos ) &&! Vacío ( $ id )) { $ actualización  $ esto -> db -> actualizar ( ' posts ' $ data , array ( ' id ' => $ id ));             volver  $ actualizar ? cierto

            
: False ; 
        } else { 
            devolver  falso ; 
        } 
    } 
    
    / * 
     * Eliminar publicación 
     * / 
    public function  delete ( $ id ) { 
        $ delete  $ this -> db -> delete ( 'posts' , array ( 'id' => $ id )); 
        devuelve  $ borrar ? verdadero : falso ; 
    } 
}

Crear controlador

Abra el application/controllers/directorio y cree un nuevo archivo Posts.phppara el controlador de Posts. La clase de controlador de publicaciones tiene los siguientes métodos para realizar operaciones CRUD (ver, agregar, editar y eliminar).
  • __construir () : carga la biblioteca, el asistente y el modelo necesarios.
  • índice () :
    • Recibe mensajes de estado de la sesión.
    • Recupere datos de publicaciones de la base de datos utilizando el método getRows () del modelo de publicación.
    • Carga la vista de la lista de publicaciones.
  • ver () :
    • Recupere los datos de publicación basados ​​en la ID utilizando el método getRows () del modelo de publicación.
    • Carga la vista de detalles del post.
  • añadir () :
    • Si la publicación se envió, los datos de la publicación pasan al método insert () para la inserción.
    • Cargar mensaje de crear crear vista.
  • editar () :
    • Si la publicación se envió, los datos de la publicación pasan al método update () para actualización.
    • Cargar la vista de edición de formulario de edición.
  • delete () : elimine los datos de la publicación utilizando el método delete () del modelo de publicación.
La biblioteca form_validation de CodeIgniter se utiliza para validar los datos enviados en la solicitud de adición y edición.
<? php  if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

los mensajes de la  clase  extienden el  controlador_CIN  { 
    
    función  __construct () { 
        parent :: __construct (); 
        $ this -> load -> helper ( 'form' ); 
        $ this -> load -> library ( 'form_validation' ); 
        $ this -> load -> model ( 'post' ); 
    }
    
índice de     función pública  () { 
        $ data  = array (); 
        
        // obtener mensajes de la sesión 
        si ( $ this -> session -> userdata ( 'success_msg' )) { 
            $ data [ 'success_msg' ] =  $ this -> session -> userdata ( 'success_msg' ); 
            $ this -> session -> unset_userdata ( 'success_msg' ); 
        } 
        if ( $ this -> session -> userdata ( ')) { 
            $ data [ 'error_msg' ] =  $ this -> session -> userdata ( 'error_msg' ); 
            $ this -> session -> unset_userdata ( 'error_msg' ); 
        } 

        $ data [ 'posts' ] =  $ this -> post -> getRows (); 
        $ data [ 'title' ] =  'Post Archive' ; 
        
        // cargar la lista de la vista de página 
        $ esto -> cargar -> ver ( '$ datos ); 
        $ this -> load -> view ( 'posts / index' $ data ); 
        $ this -> load -> view ( 'templates / footer' ); 
    } 
    
    / * 
     * Detalles de publicación 
     * / 
    vista de función pública  ( $ id ) { $ data  = array (); // comprueba si la ID de la publicación no está vacía si (! empty ( $ id )) { $ data [ 'post' ] =  $ this -> post -> getRows (
        
        
        
        
            $ id ); 
            $ data [ 'title' ] =  $ data [ 'post' ] [ 'title' ]; 
            
            // cargar la página de detalles ver 
            $ esto -> cargar -> ver ( 'templates / header' $ data ); 
            $ this -> load -> view ( 'posts / view' $ data ); 
            $ this -> load -> view ( 'templates / footer' ); 
        } else { 
            redirect ( '/ posts' );

    } 
    
    / * 
     * Agregar contenido de publicación 
     * / 
    public function  add () { 
        $ data  = array (); 
        $ postData  = array (); 
        
        // si se envía la solicitud de adición 
        if ( $ this -> input -> post ( 'postSubmit' )) { 
            // reglas de validación del campo de formulario 
            $ this -> form_validation -> set_rules ( 'title' 'post title' 'required ' ); 
            $ this -> form_validation -> set_rules ( 'content' 'publicar contenido' 'requerido' ); 
            
            // preparar datos post 
            $ postData  = array ( 
                'title'  =>  $ this -> input -> post ( 'title' ), 
                'content'  =>  $ this -> input -> post ( 'content' ) 
            ); 
            
            // validar los datos del formulario enviado 
            si ( $ this -> form_validation -> run () ==  true ) { 
                // insertar post data 
                $ insert  $ this ->insertar ( $ postData ); 

                if ( $ insert ) { 
                    $ this -> session -> set_userdata ( 'success_msg' 'La publicación se ha agregado correctamente.' ); 
                    redirigir ( '/ posts' ); 
                } else { 
                    $ data [ 'error_msg' ] =  'Ocurrieron algunos problemas, inténtalo de nuevo.' ; 
                } 
            } 
        } 
        
        $ data [ 'post' ] =  $ postData ; 
        $ datos [ 'título' ] = 'Crear publicación' ; 
        $ data [ 'action' ] =  'Add' ; 
        
        // cargar la vista de agregar página 
        $ esto -> cargar -> ver ( 'templates / header' $ data ); 
        $ this -> load -> view ( 'posts / add-edit' $ data ); 
        $ this -> load -> view ( 'templates / footer' );

    
    


    
        $ data  = array (); 
        
        // obtener datos 
        de publicación $ postData  $ this -> post -> getRows ( $ id ); 
        
        // si se envía una solicitud de actualización 
        si ( $ this -> input -> post ( 'postSubmit' )) { 
            // reglas de validación del campo de formulario 
            $ this -> form_validation -> set_rules ( 'title' 'post title' 'required ' ); 
            $ this -> form_validation -> set_rules ( 'content' 'publicar contenido' 'requerido' ); 
            
            // preparar datos de la página cms 
            $ postData  = array ( 
                'title'  =>  $ this -> input -> post ( 'title' ), 
                'content'  =>  $ this -> input -> post ( 'content' ) 
            ); 
            
            // validar los datos del formulario enviado 
            si ( $ this -> form_validation -> run () ==  true ) { 
                // actualizar post data 
                $ update  $ this ->-> actualizar ( $ postData $ id ); 

                if ( $ update ) { 
                    $ this -> session -> set_userdata ( 'success_msg' 'La publicación se ha actualizado con éxito.' ); 
                    redirigir ( '/ posts' ); 
                } else { 
                    $ data [ 'error_msg' ] =  'Ocurrieron algunos problemas, inténtalo de nuevo.' ; 
                } 
            } 
        } 

        
        $ data [ 'post' ] =  $ postData ;
        'título' ] =  'Actualizar publicación' ; 
        $ data [ 'action' ] =  'Edit' ; 
        
        // carga la vista de la página de edición 
        $ this -> load -> view ( 'templates / header' $ data ); 
        $ this -> load -> view ( 'posts / add-edit' $ data ); 
        $ this -> load -> view ( 'templates / footer' );

    
    


    $ id ) { 
        // compruebe si la identificación de la publicación no está vacía 
        si ( $ id ) { 
            // elimina la publicación 
            $ delete  $ this -> post -> delete ( $ id ); 
            
            if ( $ delete ) { 
                $ this -> session -> set_userdata ( 'success_msg' 'La publicación se ha eliminado con éxito.' ); 
            } else { 
                $ this -> session -> set_userdata ( 'error_msg' 'Ocurrieron algunos problemas, inténtalo de nuevo' );
            } 
        } 

        redirigir ( '/ posts' ); 
    } 
}

Crear vistas

Abra el application/views/directorio y cree las siguientes vistas.
templates/header.php
Esta vista contiene la sección del encabezado de la página web. La biblioteca Bootstrap se usa para proporcionar una mejor interfaz de usuario, por lo tanto, inclúyala en la sección del encabezado. Si no desea utilizar Bootstrap para diseñar la tabla y el formulario HTML, puede omitir que se incluya.
<! DOCTYPE html>
< html  lang = "en-US" >
< cabeza >
    < meta  charset = "utf-8" >
    < title > <? php  echo  $ title ?> </ title >
    < link  rel = "hoja de estilo"  href = "http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
</ cabeza >
< cuerpo >
templates/footer.php
Esta vista contiene la sección de pie de página de la página web.
</ cuerpo >
</ html >
posts/index.php
En esta vista, las publicaciones se enumeran en un formato tabular con la vista, edición y eliminación de enlaces. Además, se proporciona un enlace para agregar una nueva publicación.
< div  class = "container" >
     <? php  if (! empty ( $ success_msg )) {  ?> 
    < div  class = "col-xs-12" >
        < div  class = "alert alert-success" > <? php  echo  $ success_msg ?> </ div >
    </ div >
     <? php  } elseif (! empty ( $ error_msg )) {  ?> 
    < div  class = "col-xs-12" >
        < div  class = "alert alert-danger" > <? php  echo  $ error_msg ?> </ div >
    </ div >
     <? php  ?> 
    < div  class = "row" >
        < div  class = "col-xs-12" >
            < div  class = "panel panel-default" >
                < Div  clase = "Panel-encabezamiento" > Mensajes < un  href = " <? Php?  Eco  site_url ( 'Mensajes / añadir /' );  ?> "  Clase = "glyphicon glyphicon-plus pull-derecha" > </ a > < / div >
                < table  class = "table table-striped" >
                    < thead >
                        < tr >
                            < th  width = "5%" > ID </ th >
                            < th  width = "30%" > Título </ th >
                            < th  width = "50%" > Contenido </ th >
                            < th  width = "15%" > Acción </ th >
                        </ tr >
                    </ thead >
                    < tbody  id = "userData" >
                         <? php  if (! empty ( $ posts )): foreach ( $ posts  as  $ post ):  ?> 
                        < tr >
                            < td > <? php  echo  '#' . $ post [ 'id' ]; ?> </ td >
                            < td > <? php  echo  $ post [ 'title' ]; ?> </ td >
                            < td > <? php  echo ( strlen ( $ post [ 'content' ])> 150 )? substr ( $ post [ 'contenido' ], 0 , 150 ). '...' : $ post [ 'contenido' ]; ?> </ td >
                            < td >
                                < Un  href = " <php?  Eco  site_url ( 'mensajes / view /' . $ Post [ 'id' ]);  ?> "  Clase = "glyphicon glyphicon-ojo-abierto" > </ una >
                                < Un  href = " <? Php?  Eco  site_url ( '/ editar / mensajes' . $ Post [ 'id' ]);  ?> "  Clase = "glyphicon glyphicon-editar" > </ a >
                                < Un  href = " <? Php?  Eco  site_url ( 'Mensajes / borrar /' . $ Post [ 'id' ]);  ?> "  Clase = "glyphicon glyphicon-basura"  onclick = "confirmar retorno ( '¿Está seguro que desea borrar ? ') " > </ a >
                            </ td >
                        </ tr >
                         <? php  endforeach; else:  ?> 
                        < tr > < td  colspan = "4" > Publicaciones no encontradas ...... </ td > </ tr >
                         <? php  endif; ?> 
                    </ tbody >
                </ table >
            </ div >
        </ div >
    </ div >
</ div >
posts/view.php
En esta vista, se muestran los detalles de la publicación.
< div  class = "container" >
    < div  class = "row" >
        < div  class = "panel panel-default" >
            < Div  clase = "Panel-encabezamiento" > Post detalles < un  href = " <? Php?  Eco  site_url ( 'puestos /' );  ?> "  Clase = "glyphicon glyphicon-flecha-izquierda pull-derecha" > </ a > </ div >
            < div  class = "panel-body" >
                < div  class = "form-group" >
                    < etiqueta > Título: </ etiqueta >
                    < p > <? php  echo! empty ( $ post [ 'title' ])? $ post [ 'title' ]: '' ?> </ p >
                </ div >
                < div  class = "form-group" >
                    < etiqueta > Contenido: </ etiqueta >
                    < p > <? php  echo! empty ( $ post [ 'content' ])? $ post [ 'contenido' ]: '' ?> </ p >
                </ div >
            </ div >
        </ div >
    </ div >
</ div >
posts/add-edit.php
Esta vista contiene un formulario HTML para enviar la información de la publicación.
< div  class = "container" >
    < div  class = "col-xs-12" >
     <? php  
        if (! empty ( $ success_msg )) { 
            echo  '<div class = "alert alert-success">' . $ success_msg . '</div>' ; 
        } elseif (! empty ( $ error_msg )) { 
            echo  '<div class = "alert alert-danger">' . $ error_msg . '</div>' ; 
        } 
    ?> 
    </ div >
    < div  class = "row" >
        < div  class = "col-xs-12" >
            < div  class = "panel panel-default" >
                < div  class = "panel-header" > <? php  echo  $ action ?> Mensaje < un  href = " <? Php  echo  site_url ( '/' mensajes );  ?> "  Clase = "glyphicon glyphicon-flecha-izquierda-derecha tirón" > </ a > </ div >
                < div  class = "panel-body" >
                    < form  method = "post"  action = ""  class = "form" >
                        < div  class = "form-group" >
                            < label  for = "title" > Título </ label >
                            < input  type = "text"  class = "form-control"  name = "title"  placeholder = "Enter title"  value = " <? php  echo! empty ( $ post [ 'title' ])? $ post [ 'title' ]: '' ?> " >
                             <? php  echo  form_error ( 'title' ,'</p>' ); ?>
                        </ div >
                        < div  class = "form-group" >
                            < etiqueta  para = "content" > Content </ label >
                            < textarea  name = "content"  class = "form-control"  placeholder = "Enter post content" > <? php  echo! empty ( $ post [ 'content' ])? $ post [ 'contenido' ]: '' ?> </ textarea >
                             <? php  echo  form_error ( 'content' , '<p class = "text-danger">' , '</p>' ); ?>
                        < input  type = "submit"  name = "postSubmit"  class = "btn btn-primary"  value = "Submit" />
                    </ form >
                </ div >
            </div >
        </ div >
    </div >
</div >

Enrutamiento

Para acceder a los métodos del controlador de publicaciones en el navegador, debe agregar algunas reglas en config/routes.phparchivo.
$ route [ 'posts / view / (: num)' ] =  'posts / view / $ 1' ; $ route [ 'posts / add' ] =  'posts / add' ; $ route [ 'posts / edit / (: num)' ] =  'posts / edit / $ 1' ; $ route [ 'posts / delete / (: num)' ] =  'posts / delete / $ 1' ; $ route [ 'posts' ] =  'posts' ;

Eliminar el index.php de la URL

De manera predeterminada, el index.phparchivo se incluirá en sus URL, siga los pasos a continuación para eliminar index.phpde las URL.
1. Abra el config/config.phparchivo y hagaindex_page blanco el uso de mod_rewrite para eliminar index.php de la URL.
$ config [ 'index_page' ] =  '' ;
2. Cree un archivo .htaccess en el directorio raíz de CodeIgniter y escriba las siguientes reglas.
RewriteEngine en
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule ^ (. *) $ /Codeigniter/index.php/$1 [L]
Tenga en cuenta que: El mod_rewritedebe estar habilitado en su servidor Apache para volver a escribir la URL usando un .htaccessarchivo.

Ejemplo de aplicación de CRUD CodeIgniter

Ahora apunte su navegador para publicar la URL del controlador (http: // localhost / codeigniter / posts /), las listas de publicaciones aparecerán en la pantalla. Además, podrá realizar las operaciones de visualización, adición, edición y eliminación en CodeIgniter .
codeigniter-crud-bootstrap-view-add-edit-delete-operations-codexworld
Puede descargar el proyecto de ejemplo CodeIgniter CRUD que se ha creado siguiendo este tutorial. Solo se necesita una configuración mínima para configurar esta aplicación CRI CodeIgniter de demostración en su servidor.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas