Last active
October 6, 2022 16:06
-
-
Save JCervantesB/2502b54c4478bdb140f77756543aa311 to your computer and use it in GitHub Desktop.
Bienes Raíces Carmen Bazán
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require '../../includes/app.php'; | |
//Importamos la clase | |
use App\Propiedad; | |
//Autenticamos usuario | |
estaAutenticado(); | |
//Conectar | |
$db = conectarDB(); | |
//Consultar para obtener los vendedores | |
$consulta = "SELECT * FROM vendedores"; | |
$resultado = mysqli_query($db, $consulta); | |
//Arreglo de errores | |
$errores = []; | |
$titulo = ''; | |
$precio = ''; | |
$descripcion = ''; | |
$habitaciones = ''; | |
$wc = ''; | |
$estacionamiento =''; | |
$vendedorId= ''; | |
//Estamos diciendo que si el metodo es igual a post solo mostrara los datos cuando los introduzcamos | |
//Ejecuta el codigo despues de que usuario envia los datos | |
if($_SERVER['REQUEST_METHOD'] === 'POST'){ | |
/*echo "<pre>"; | |
var_dump($_POST); | |
echo "</pre>"; */ | |
//Creamos una nueva propiedad | |
$propiedad = new Propiedad($_POST); | |
//Esta instancia que hemos creado vamoss a llamar al metodo guardar | |
$propiedad->guardar(); | |
/* echo "<pre>"; | |
var_dump($_FILES); | |
echo "</pre>"; */ | |
//mysqli_real_escape_string esta nos ayudara a que los usuario si introducen un formato mal pueda recitificarlo | |
$titulo = mysqli_real_escape_string($db,$_POST['titulo']) ; | |
$precio = mysqli_real_escape_string($db,$_POST['precio']); | |
$descripcion = mysqli_real_escape_string($db,$_POST['descripcion']); | |
$habitaciones = mysqli_real_escape_string($db,$_POST['habitaciones']); | |
$wc = mysqli_real_escape_string($db,$_POST['wc']); | |
$estacionamiento = mysqli_real_escape_string($db,$_POST['estacionamiento']); | |
$vendedorId=mysqli_real_escape_string($db, $_POST['vendedorId']); | |
$creado = date('Y/m/d'); | |
//Asignar files hacia una variable | |
$imagen = $_FILES['imagen']; | |
//var_dump($imagen); | |
//Validamos los campos y si no tiene nada muestre el error | |
if(!$titulo){ | |
$errores[] = "Debes añadir un titulo"; | |
} | |
if(!$precio){ | |
$errores[] = "El precio es obligatorio"; | |
} | |
if(strlen ($descripcion) < 50 ){ | |
$errores[] = "La descripcion es obligatoria y debe tener al menos 50 caracteres"; | |
} | |
if(!$habitaciones){ | |
$errores[] = "El número de habitaciones es obligatorio"; | |
} | |
if(!$habitaciones){ | |
$errores[] = "El número de habitaciones es obligatorio"; | |
} | |
if(!$wc){ | |
$errores[] = "El número de baños es obligatorio"; | |
} | |
if(!$estacionamiento){ | |
$errores[] = "El número de estacionamiento es obligatorio"; | |
} | |
if(!$vendedorId){ | |
$errores[] = "Elige un vendedor"; | |
} | |
if(!$imagen['name'] || $imagen['error']) { | |
$errores[] = 'La imagen es obligatoria'; | |
} | |
//Validamos por tamaño (1 MB maximo) | |
$media = 1000 * 1000; | |
if($imagen['size'] > $media){ | |
$errores[] = 'La imagen es muy pesada'; | |
} | |
/* echo "<pre>"; | |
var_dump($errores); | |
echo "</pre>"; */ | |
//Revisar que el array de errores este vacio | |
if(empty($errores)){ | |
/*SUBIDAS DE ARCHIVOS*/ | |
//Crear una carpeta | |
$carpetaImagenes = '../../imagenes/'; | |
if(!is_dir($carpetaImagenes)){ | |
mkdir($carpetaImagenes); | |
} | |
//Generar in nombre unico | |
/*MD5 un metodo para crear nombres aleatorio pero estatico y con uniqid se crearan de forma dinamica*/ | |
$nombreImagen = md5( uniqid ( rand(), true) ) . ".jpg"; | |
//Subir la imagen | |
move_uploaded_file($imagen['tmp_name'], $carpetaImagenes . $nombreImagen); | |
//echo $query; | |
//$resultado = mysqli_query($db, $query); | |
if($resultado){ | |
//Redireccionar al usuario | |
header('Location: /bienesraicesPHP/admin/index.php?resultado=1'); | |
} | |
} | |
} | |
//Incluimos los template con funciones | |
incluirTemplate('header'); | |
?> | |
<main class="contenedor seccion"> | |
<h2>Crear</h2> | |
<?php foreach($errores as $error): ?> | |
<div class="alerta error"> | |
<?php echo $error; ?> | |
</div> | |
<?php endforeach; ?> | |
<form action="crear.php" class="formulario" method="POST" enctype="multipart/form-data"> | |
<fieldset> | |
<legend>Información General</legend> | |
<label for="titulo">Titulo:</label> | |
<input type="text" id="titulo" name="titulo" placeholder="Titulo Propiedad" value="<?php echo $titulo; ?>"> | |
<label for="precio">Precio:</label> | |
<input type="number" id="precio" name="precio" placeholder="Precio Propiedad" value="<?php echo $precio ;?>" > | |
<label for="imagen">Imagen:</label> | |
<input type="file" id="imagen" accept="image/jpeg image/png" name="imagen"> | |
<label for="descripción">Descripción:</label> | |
<textarea id="descripcion" name="descripcion" cols="30" rows="10"><?php echo $descripcion; ?></textarea> | |
</fieldset> | |
<fieldset> | |
<legend>Información Propiedad</legend> | |
<label for="habitaciones">Habitaciones:</label> | |
<input type="number" id="habitaciones" name="habitaciones"placeholder="Ej:3 " min="1" max="9" value="<?php echo $habitaciones;?>"> | |
<label for="wc">Baños:</label> | |
<input type="number" id="wc" name="wc" placeholder="Ej:3 " min="1" max="9" value="<?php echo $wc;?>"> | |
<label for="estacionamiento">Estacionamiento:</label> | |
<input type="number" id="estacionamiento" name="estacionamiento" placeholder="Ej:3 " min="1" max="9" value="<?php echo $estacionamiento;?>"> | |
</fieldset> | |
<fieldset> | |
<legend>Vendedor</legend> | |
<select name="vendedorId"> | |
<option value="">--Seleccione--</option> | |
<?php while ($vendedor = mysqli_fetch_assoc($resultado)) : ?> | |
<option <?php echo $vendedorId === $vendedor['id'] ? 'selected' : ''; ?> value="<?php echo $vendedor['id']; ?>"> <?php echo $vendedor['nombre'] . " " . $vendedor['apellido']; ?> </option> | |
<?php endwhile; ?> | |
</select> | |
</fieldset> | |
<input type="submit" value="Crear Propiedad" class="boton boton-verde"> | |
<a href="/bienesraicesPHP/admin/" class="boton boton-verde">Volver</a> | |
</form> | |
</main> | |
<?php | |
incluirTemplate('footer'); | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App; | |
class Propiedad | |
{ | |
//Base de datos | |
protected static $db; | |
/* protected static $columnasDB = [ | |
'id', 'titulo', 'precio', 'imagen', 'descripcion', 'habitaciones', 'wc', 'estacionamiento', 'creado', | |
'vendedorId' | |
]; | |
*/ | |
//Forma anterior php8 (Si usa php8 se definiria en el contructor) | |
public $id; | |
public $titulo; | |
public $precio; | |
public $imagen; | |
public $descripcion; | |
public $habitaciones; | |
public $wc; | |
public $estacionamiento; | |
public $creado; | |
public $vendedorId; | |
//Definir la conexion a la BD. self solo lo usamos cuando es una funcion en estatico | |
public static function setDB($database) | |
{ | |
self::$db = $database; | |
} | |
//Le pasamos un arrglo llamado args | |
public function __construct($args = []) | |
{ | |
//Asignamos a titulo un arreglo titulo y en caso que no este titulo va ser string vacío | |
$this->id = $args['id'] ?? null; | |
$this->titulo = $args['titulo'] ?? ''; | |
$this->precio = $args['precio'] ?? 0; | |
$this->imagen = $args['imagen'] ?? 'imagen.jpg'; | |
$this->descripcion = $args['descripcion'] ?? ''; | |
$this->habitaciones = $args['habitaciones'] ?? 0 ; | |
$this->wc = $args['wc'] ?? 0; | |
$this->estacionamiento = $args['estacionamiento'] ?? 0 ; | |
$this->creado = date('Y/m/d'); | |
$this->vendedorId = $args['vendedorId'] ?? null; | |
} | |
public function guardar() | |
{ | |
//Validar las entrada de los datos | |
//$atributos = $this->sanitizarAtributo(); | |
//debuguear($atributos); | |
//Insertamos en la base de datos | |
$query = " INSERT INTO propiedades (titulo, precio, imagen, descripcion, habitaciones, wc, estacionamiento, creado, vendedorId ) VALUES ( '$this->titulo','$this->precio','$this->imagen','$this->descripcion','$this->habitaciones','$this->wc','$this->estacionamiento','$this->creado','$this->vendedorId' ) "; | |
//mostraremos el resultado de la consulta | |
$resultado = self::$db->query($query); | |
debuguear($resultado); | |
} | |
//Se va encargar de interar sobre los atributos de la columna. Identificar y unir los atributos de la BD. | |
/* public function atributos(){ | |
//vas un objeto | |
$atributos = []; | |
foreach(self::$columnasDB as $columna){ | |
if($columna ==='id') continue; | |
$atributos[$columna] =$this->$columna; | |
} | |
return $atributos; | |
} | |
//Este se va encagar de sanitazar cada unos de los atributos | |
public function sanitizarAtributo(){ | |
$atributos = $this->atributos(); | |
$sanitizando = []; | |
foreach ($atributos as $key =>$value){ | |
$sanitizando[$key] = self::$db->escape_string($value); | |
} | |
return($sanitizando); | |
} */ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment