Skip to content

Instantly share code, notes, and snippets.

@JCervantesB
Created February 3, 2026 17:24
Show Gist options
  • Select an option

  • Save JCervantesB/be4b030d9fc9e3e4b7b34279fde05c4a to your computer and use it in GitHub Desktop.

Select an option

Save JCervantesB/be4b030d9fc9e3e4b7b34279fde05c4a to your computer and use it in GitHub Desktop.
Archivo crear.php Graciela.
<?php
require '../../includes/app.php';
use App\Propiedad;
$auth = estaAutenticado();
if (!$auth) {
header('Location: /');
}
//base de datos
$db = conectarDB();
//consultar la bd para obtener los vendedores:
$consulta = "SELECT * FROM vendedores";
$resultado = mysqli_query($db, $consulta); //responde la bd
//arreglo con mensajes de errores:
$errores = [];
//a estas variables las iniciamos como un string vacío:
//para que cuando se ejecute el request se envíen los
//valores que estan en el post
$titulo = '';
$precio = '';
$descripcion = '';
$habitaciones = '';
$wc = '';
$estacionamiento = '';
$vendedorId = '';
//para hacer todo eso en solo 1 y se accede a los valores:
//ejecuta el codigo despues de que el usu envia el form
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$propiedad = new Propiedad($_POST);
//debuguear($propiedad);
debuguear($_FILES);
//para no hacer todo lo anterior aplicamos mysqli al post
//a estas variables le asignamos el contenido del post del form:
$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'];
if (!$titulo) { //si el titulo no está completado en el form
$errores[] = "Debes añadir un titulo";
}
//esto hay que hacerlo para todos los campos:
if (!$precio) { //si el titulo no está completado en el form
$errores[] = "El precio es obligatorio";
}
if (strlen($descripcion) < 50) { //si el titulo no está completado en el form
$errores[] = "La descripción es obligatoria y debe contener al menos 50 caracteres";
}
if (!$habitaciones) { //si el titulo no está completado en el form
$errores[] = "El número de habitaciones es obligatorio";
}
if (!$wc) { //si el titulo no está completado en el form
$errores[] = "El número de baños es obligatorio";
}
if (!$estacionamiento) { //si el titulo no está completado en el form
$errores[] = "El número de lugares para estacionar es obligatorio";
}
if (!$vendedorId) { //si el titulo no está completado en el form
$errores[] = "Elige un vendedor";
}
if (!$imagen['name'] || $imagen['error']) {
$errores[] = 'La imagen es obligatoria';
}
//validar por tamaño para que el usu no suba i muy grandes:
//(1mb máximo)
$medida = 1000 * 1000; //convierte de byte a bites
if ($imagen['size'] > $medida) {
$errores[] = 'La imagen es muy pesada';
}
if (empty($errores)) {
//subida de archivos:
//crear una carpeta desde php:
//hay que crearla en la raiz, hay que salir de prop y de adm
$carpetaImagenes = '../../imagenes/';
if (!is_dir($carpetaImagenes)) {
mkdir($carpetaImagenes); //cuando no haya errores y
//no esté esa carpeta ya creada la crea a esa carpeta
}
//generar un nombre único para la i
$nombreImagen = md5(uniqid(rand(), true)) . ".jpg";
//var_dump($nombreImagen);
//subir la i
move_uploaded_file($imagen['tmp_name'], $carpetaImagenes . $nombreImagen);
//esto almacena una i temporalmente, según la que el usu cargue en
//el formulario- aparece el A a la izq con la extensión jpg
$propiedad->guardar();
exit;
//insetar en la bd
$query = " INSERT INTO propiedades (titulo, precio, imagen, descripcion, habitaciones, wc, estacionamiento, creado, vendedor) VALUES ('$titulo', '$precio', '$nombreImagen', '$descripcion', '$habitaciones', '$wc', '$estacionamiento', '$creado', '$vendedorId') ";
//echo $query; esto es para probar si carga
//para almacenarlo en la bd:
$resultado = mysqli_query($db, $query);
if ($resultado) {
//echo "Insertado correctamente";
//en vez de imprimir hay que rediccionar al usu
//para que no estén enviando varias entradas:
header('Location: /admin?resultado=1');
//esto evita que el usu envie datos duplicados
}
}
}
//si recargamos arriba aparece toda la instancia de la conexión
//$inicio = true;
incluirTemplate('header');
?>
<main class="contenedor seccion">
<h1>Crear</h1>
<a href="/admin" class="boton boton-verde">Volver</a>
<!--para mostrar los errores:-->
<?php foreach ($errores as $error): ?>
<div class="alerta error">
<?php echo $error; ?>
</div>
<?php endforeach; ?>
<form class="formulario" method="POST" action="/admin/propiedades/crear.php" enctype="multipart/form-data">
<fieldset>
<legend>Información General</legend>
<label for="titulo">Título:</label>
<input type="text" id="titulo" name="titulo" placeholder="Título 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="descripcion">Descripción:</label>
<textarea id="descripcion" name="descripcion"><?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 ?>">
<!--podemos seleccionar una cantidad del 1 al 9-->
</fieldset>
<fieldset>
<legend>Vendedor</legend>
<select name="vendedorId">
<option value="">--Seleccione--</option>
<?php while ($row = mysqli_fetch_assoc($resultado)): ?>
<!--este while nos va dando resultados mientras estén en la bd
por éso agregamos los option-->
<option <?php echo $vendedorId == $row['id'] ? 'selected' : ''; ?> value="<?php echo $row['id']; ?>"><?php echo $row['nombre'] . ' ' . $row['apellido']; ?></option>
<?php endwhile; ?>
</select>
</fieldset>
<input type="submit" value="Crear Propiedad" class="boton boton-verde">
</form>
</main>
<?php
// include 'includes/templates/footer.php';
incluirTemplate('footer');
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment