---
# System prepended metadata

title: 'Día 2: Proyecto Bienes Raíces'
tags: [php]

---

# 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. 



