CRUD PATRON MVC PHP CON JAVASCRIPT, SWEETALERT2 Y MYSQL

CRUD en PHP con JavaScript, SweetAlert2 y MySQL para principiantes.PATRON MVC


Hola developers, en esta sección vamos ver cómo crear un CRUD (créate,read,update y delete), para ello vamos a utilizar como lenguaje Backend PHP, lenguaje Frontend JavaScript, Gestor de base de datos MySQL. Con el objetivo de aprender como se programa y se estructura un proyecto.


 Autor: rogercode. Full stack developer


Estructura principal del proyecto PHP (MVC).

 


Base de datos: Contiene el backup de la base de datos


controlador: Contiene todas las funciones que permiten interactuar con la base de datos.


js: Contiene las funciones que permiten enviar y recibir la informacion al controlador.


modelo: Contiene las funciones que permiten comunicar el controlador con la vista.


php: Contiene la conexión a la base de datos.


index.php: Es la vista principal del proyecto.






Primer paso.


Descargar e instalar xampp


1. Una vez instalado dirígete a la siguiente ruta -> C:\xampp\htdocs


2. Dentro de la ruta crear la carpeta crud.


3. Accedemos a la carpeta crud y creamos ahí la estructura del proyecto como en la imagen anterior.




Código fuente de cada uno de los archivos utilizados para el proyecto.






1 base/base_mysql.sql


            


              


    CREATE DATABASE /*!32312 IF NOT EXISTS*/'ejemplo' /*!40100 DEFAULT CHARACTER SET latin1 */;




    USE 'ejemplo';




    /*Table structure for table 'persona' */




    DROP TABLE IF EXISTS 'persona';




    CREATE TABLE 'persona' (


    'idpersona' int(11) NOT NULL AUTO_INCREMENT,


    'nombre' varchar(200) DEFAULT NULL,


    'apellidos' varchar(200) DEFAULT NULL,


    'sexo' varchar(50) DEFAULT NULL,


    PRIMARY KEY ('idpersona')


    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;




    /*Data for the table 'persona' */




    insert  into 'persona'('idpersona','nombre','apellidos','sexo') values 


    (1,'Felicia',' Leandra','Femenino'),(2,'Gaspar','Marcelo','Masculino'),


    (3,'Victor','María','Masculino'),


    (4,'Celeste','Martín','Femenino'),


    (5,'Andrea','Martinez','Femenino'),


    (6,'Antonio','Nicolás','Masculino'),


    (7,'Paula',' Renzo','Masculino'),


    (8,'test','test','Masculino');


     


            


          


2 index.php


          


              


        <!DOCTYPE html>


        <html lang="en">


        <head>


            <meta charset="UTF-8">


            <meta name="viewport" content="width=device-width, initial-scale=1.0">


            <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">


        </head>


        <body>


            <div> class="container">


                <form> action="" id="form">


                    <div> class="row">


                        <input> type="text" name="tipo_operacion" value="guardar" hidden="true">


                        <div> class="col-md-4">


                        <input> type="text" name="nombre" id="nombre" class="form-control" placeholder="Ingresa tu nombre" autocomplete="off">


                        </div>


                        <div> class="col-md-4">


                        <input> type="text" name="apellidos" id="apellidos" class="form-control" placeholder="Ingresa tus apellidos" autocomplete="off">


                        </div>


                        <div> class="col-md-2">


                            <select> name="sexo" id="sexo" class="form-control">


                                <option> value="">Elige el sexo</option>


                                <option> value="Masculino">Masculino</option>


                                <option> value="Femenino">Femenino</option>


                            </select>


                        </div>


                        <div> class="col-md-2">


                            <button>  type="submit" class="btn btn-info btn-block">Aceptar</button>


                        </div>


                    </div>


                </form>


            </div>


            <br>


                <div> class="container" id="mensajes"></div>


            <br>


            <div> class="container">


                <table> class="table table-bordered">


                    <thead>


                        <tr>


                            <th>Id</th>


                            <th>Nombre</th>


                            <th>Apeliidos</th>


                            <th>Sexo</th>


                            <th>Acciones</th>


                        </tr>


                    </thead>


                    <tbody> id="tabla_persona">


                        <?php>


                        <require_once "php/conexion.php";


                        <require_once "controlador/ConsultasController.php";


                        <$sentencia = new consultas();


                        <$mostrardatos = $sentencia->select_persona();


                        <foreach($mostrardatos as $res)


                        {


                            $id = $res["idpersona"];


                            echo "<tr>";


                            echo "<td>".$res["idpersona"]."</td>";


                            echo "<td>".$res["nombre"]."</td>";


                            echo "<td>".$res["apellidos"]."</td>";


                            echo "<td>".$res["sexo"]."</td>";


                            echo "<td> class='text-center'>


                            <button< class='btn btn-primary btn-sm' onclick='editar($id);'>Editar</button<


                            <button< class='btn btn-danger btn-sm'onclick='eliminar($id);'>Eliminar</button<


                            </td>";


                            echo "</tr>";


                        }


                        <?>


                    </tbody>


                </table>


            </div>


            <script> src="https://cdn.jsdelivr.net/npm/sweetalert2@9"<</script>


            <script> src="js/funciones.js"<</script>                                           


        </body>


    </html>


    


            


          


3 controlador/ConsultasController.php


            


              


    <?php


    class consultas extends dbconexion{


        public function select_persona()


        {


            $sqlp = dbconexion::conexion()->prepare("SELECT * FROM persona");


            $sqlp->execute();


            return $array = $sqlp->fetchAll(PDO::FETCH_ASSOC);


        }


        public function insert_persona($nombre,$apellidos,$sexo)


        {


            $sql = dbconexion::conexion()->prepare("INSERT INTO persona(nombre,apellidos,sexo)VALUES('$nombre','$apellidos','$sexo')");


            if ($sql->execute()) {


                $resultado = self::select_persona();


                return $resultado;


            }


        }


        public function obtener_persona($id){


            $sql = dbconexion::conexion()->prepare("SELECT * FROM persona WHERE idpersona='".$id."'");


            if($sql->execute()){


                return $array = $sql->fetchAll(PDO::FETCH_ASSOC);


            }else {


                return "error";


            }


        }


        public function update_persona($id,$nombre,$apellidos,$sexo){


            $sql = dbconexion::conexion()->prepare("UPDATE persona SET nombre='".$nombre."', apellidos='".$apellidos."', sexo='".$sexo."'  WHERE idpersona='".$id."'");


            $sql->execute();


            if ($sql->rowCount() > 0) {


                $resultado = self::select_persona();


                return $resultado;


            }else{


                return "error";


        }


        }


        public function eliminar_persona($id){


            $sql=dbconexion::conexion()->prepare("DELETE FROM persona WHERE idpersona='".$id."'");


            $sql->execute();


            if ($sql->rowCount() > 0) {


                $resultado = self::select_persona();


                return $resultado;


                // return "Se elimino correctamente el registro";


            }else{


                return "Ocurrio un problema";


            }


        }


    


    }


    ?>


    


            


          


4 modelo/ejecutarconsultas.php


            


              


    <?php


        require_once "../php/conexion.php";


        require_once "../controlador/ConsultasController.php";


        $tipo_consulta = $_POST['tipo_operacion'];


        switch ($tipo_consulta) {


            case 'guardar':


                $nombre = $_POST['nombre'];


                $apellidos = $_POST['apellidos'];


                $sexo =$_POST['sexo'];


                $consultas = new consultas();


                $ejecutar = $consultas->insert_persona($nombre,$apellidos,$sexo);


                echo json_encode($ejecutar);


            break;


            case 'editar':


                $id = $_POST['id'];


                $consultas = new consultas();


                $ejecutar = $consultas->obtener_persona($id);


                echo json_encode($ejecutar);


                break;


            case 'update':


                    $id = $_POST["idu"];


                    $nombre = $_POST["nombreu"];


                    $apellidos= $_POST["apellidosu"];


                    $sexo= $_POST["sexou"];


                    $consultas = new consultas();


                    $ejecutar = $consultas->update_persona($id,$nombre,$apellidos,$sexo);


                    echo json_encode($ejecutar);


                break;    


            case 'eliminar':


                $id = $_POST['id'];


                $consultas = new consultas();


                $ejecutar = $consultas->eliminar_persona($id);


                echo json_encode($ejecutar);


                break;    


            default:


                # code...


                break;


        }




    ?>


    


            


          


5 php/conexion.php


            


              


    <?php 


        const SERVER="localhost";


        const DB="ejemplo";


        const USER="root";


        const PASS="";


        const UTF8="utf8";




        const SGBD= "mysql:host=".SERVER.";dbname=".DB.";charset=".UTF8;




        class dbconexion{


            


            protected function conexion()


            {


                $con = new PDO(SGBD,USER,PASS);


                return $con;


            }


        }


    

    ?>


    


            


 

Comentarios

Entradas populares de este blog

INSERTAR Y UPDATE FECHA CON PHP MYSQL EN FORMULARIO METODO POST CON JQUERY ETIQUETA DATE

Copia de Seguridad de Archivo MS Access (.mdb) a Pendrive con VB6

CONVERTIR IMÁGEN JPG O PNG A WEBP CON PHP DE FORMA SIMPLE