# Día 2: Creando un CRUD- Proyecto Bienes Raíces ## Base de datos Se ha subido a la plataforma el .sql de nuestra base de datos, instálala en tu MySql. ## Creando archivos para CRUD Vamos a ir creando la estructura para nuestro CRUD ![](https://hackmd.io/_uploads/ryGJxHMg6.png) Lo primero es crear una carpeta para nuestro admin y dentro una para guardar los scripts que tratarán con las propiedades. En todos los php del CRUD vamos a escribir nuestro código base: ``` <?php require '../../includes/funciones.php'; incluirTemplate('header'); ?> <main class="contenedor seccion"> <h1>Crear</h1> </main> <?php incluirTemplate('footer'); ?> ``` Vas a ver que si pruebas esta página los paths no están funcionando...arréglalo. Dentro de admin, en el index.php vamos a crear el menú del CRUD: ``` <?php require '../includes/funciones.php'; incluirTemplate('header'); ?> <main class="contenedor seccion"> <h1>Administrador</h1> <a href="/admin/propiedades/crear.php" class="boton boton-verde">Nueva propiedad</a> </main> <?php incluirTemplate('footer'); ?> ``` Al pulsar en nueva propiedad irá al "crear.php" donde necesitaremos un volver para ir de nuevo al administrador. Completa el menú y agrega el volver en todos los scripts del CRUD. ## Formulario para crear propiedades Sólo con fijarnos en nuestra base de datos sabremos qué datos necesitamos incluir en la creación de las propiedades. Siguiendo este modelo completa el formulario: ``` <?php require '../../includes/funciones.php'; incluirTemplate('header'); ?> <main class="contenedor seccion"> <h1>Crear</h1> <a href="/admin/" class="boton boton-verde">Volver</a> <form class="formulario" action=""> <fieldset> <legend> Información General</legend> <label for="titulo">Título: </label> <input type="text" id="titulo" placeholder="Título propiedad"> <!-- Continúa generando el formulario mirando los datos que figuran en la base de datos--> </fieldset> </form> </main> <?php incluirTemplate('footer'); ?> ``` ## Conectando a la base de datos Una vez tenemos el formulario vamos a ir a includes/config/db.php a configurar la conexión a nuestra bd. Vamos a usar msqli https://www.php.net/manual/es/book.mysqli.php Investiga en la documentación: - cuáles son las otras alternativas. - ventajas y desventajas de cada una. Una vez entendido lo anterior en includes/config/database.php escribiremos lo siguiente (con los datos específicos de tu base de datos) para hacer una prueba de conexión. ``` <?php function conectarDB(){ $db= mysqli_connect('localhost','root', '', 'bienesraices_crud'); if ($db) { echo "se conectó"; } else { echo "no se conectó"; } } ``` Prueba a incluir lo que sea necesario y la llamada a esta función en crear.php para comprobar que la conexión está funcionando. Si cambio el código de database.php por lo siguiente qué es lo que devuelve??: ``` <?php function conectarDB():mysqli{ $db= mysqli_connect('localhost','root', '', 'bienesraices_crud'); if ($db) { echo "Error: no se pudo conectar a la base de datos"; exit; } return $db; } ``` ## Superglobales $_POST y $_GET Para entender cómo se pasan parámetros de nuestro formulario a la BD (o a cualquier otra parte del sistema) vamos primero a modificar el formulario de crear.php ``` <form class="formulario" method="GET" action="/admin/propiedades/crear.php"> <fieldset> <legend> Información General</legend> <label for="titulo">Título: </label> <input type="text" id="titulo" placeholder="Título propiedad"> ``` Qué nos falta para que se pasen correctamente los parámetros? Haz pruebas de paso de parámatros con $_GET y $_POST, para qué se utiliza normalmente cada método. Investiga y prueba a mostrar ambas superglobales. Investiga sobre otras superglobales y muéstralas en pantalla probando varias opciones. ## Creando nuestra primera propiedad en la bd Esta es la estructura de crear.php para las propiedades. ``` <?php //Base de datos require '../../includes/config/database.php'; $db= conectarDB(); if ($_SERVER['REQUEST_METHOD']==='POST'){ // echo "<pre>"; // var_dump($_SERVER); // var_dump($_POST['titulo']); // echo "</pre>"; $titulo= $_POST['titulo']; $precio= $_POST['precio']; $descripcion= $_POST['descripcion']; $habitaciones= $_POST['habitaciones']; $wc= $_POST['wc']; $estacionamiento= $_POST['estacionamiento']; $vendedores_id= $_POST['vendedor']; //ahora es donde realmente insertamos los valores en la bd $query="INSERT INTO propiedades (titulo, precio, descripcion, habitaciones,wc,estacionamiento, vendedores_id) VALUES ('$titulo', '$precio', '$descripcion', '$habitaciones','$wc','$estacionamiento', '$vendedores_id')"; //echo $query; $resultado=mysqli_query($db,$query); if ($resultado) { echo "Insertado correctamente"; } } require '../../includes/funciones.php'; incluirTemplate('header'); ?> ``` Investiga y siguiendo las mismas ideas desarrolladas genera el código necesario para crear un nuevo vendedor.