codigo postal
This commit is contained in:
parent
972f1bcd1f
commit
09e4ecd527
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__ . '/../models/Catalogos.php';
|
||||
|
||||
class CatalogosController {
|
||||
private static $catalogosModel = null;
|
||||
|
||||
public static function inicializar() {
|
||||
if (self::$catalogosModel === null) {
|
||||
self::$catalogosModel = new Catalogos();
|
||||
}
|
||||
}
|
||||
|
||||
public static function obtenerInfiCodigoPostal($codigo_postal){
|
||||
$result = self::$catalogosModel->obtenerInfiCodigoPostal($codigo_postal);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
CatalogosController::inicializar();
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['codigo_postal'])) {
|
||||
header('Content-Type: application/json');
|
||||
$codigo_postal = $_GET['codigo_postal'];
|
||||
$result = CatalogosController::obtenerInfiCodigoPostal($codigo_postal);
|
||||
|
||||
echo $result;
|
||||
}
|
||||
|
||||
?>
|
|
@ -110,9 +110,11 @@
|
|||
<div class="form-col">
|
||||
<div class="form-group">
|
||||
<label for="codigo_postal" class="required">Código Postal</label>
|
||||
<input type="number" min="0" step="1" id="codigo_postal" name="codigo_postal" maxlength="10">
|
||||
<input type="number" min="0" step="1" id="codigo_postal" name="codigo_postal" maxlength="10" required>
|
||||
<button type="button" id="buscarBtn"><span class="material-icons">search</span>Buscar</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-col">
|
||||
<div class="form-group">
|
||||
<label for="id_estado">Estado</label>
|
||||
|
@ -252,6 +254,7 @@
|
|||
|
||||
<script src="js/form.js"></script>
|
||||
<script src="js/form_datos_extendidos.js"></script>
|
||||
<script src="js/buscarCodigo.js"></script>
|
||||
<script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,76 @@
|
|||
document.addEventListener("DOMContentLoaded", function () {
|
||||
var buscarBtn = document.getElementById("buscarBtn");
|
||||
|
||||
//Añadir un evento al boton de buscar
|
||||
buscarBtn.addEventListener("click", function () {
|
||||
var codigoPostal = document.getElementById("codigo_postal").value;
|
||||
console.log(codigoPostal);
|
||||
|
||||
//verificar si el codigo postal esta vacio
|
||||
if (codigoPostal) {
|
||||
console.log("Código postal ingresado:", codigoPostal);
|
||||
//crear la url para la peticion
|
||||
const url = "./controllers/CatalogosController.php?codigo_postal=" + encodeURIComponent(codigoPostal);
|
||||
|
||||
//Realiza una solicitud HTTP GET a la URL especificada
|
||||
fetch(url)
|
||||
.then(response => {
|
||||
//console.log("Estado de la respuesta:", response.status);
|
||||
//console.log("Contenido de la respuesta:", response.json());
|
||||
// Verifica si la respuesta del servidor es exitosa
|
||||
if (!response.ok) {
|
||||
throw new Error("Error en la respuesta del servidor");
|
||||
}
|
||||
//Convierte la respuesta que es unu array de objetos a formato JSON
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
var estadoSelect = document.getElementById("id_estado");
|
||||
var municipioSelect = document.getElementById("id_municipio");
|
||||
var coloniaSelect = document.getElementById("id_colonia");
|
||||
|
||||
// Inicializa los elementos select con una opción por defecto
|
||||
estadoSelect.innerHTML = "<option value=''>Seleccionar Estado</option>";
|
||||
municipioSelect.innerHTML = "<option value=''>Seleccionar Municipios</option>";
|
||||
coloniaSelect.innerHTML = "<option value=''>Seleccionar Colonia</option>";
|
||||
|
||||
// Verifica si se recibieron datos
|
||||
if (data.length > 0) {
|
||||
//Crea conjuntos para almacenar estados, ciudades y colonias únicos
|
||||
let estados = new Set();
|
||||
let municipios = new Set();
|
||||
let colonias = [];
|
||||
|
||||
// Itera sobre cada fila de datos recibidos
|
||||
data.forEach(row => {
|
||||
estados.add(row.estado);
|
||||
municipios.add(row.municipio);
|
||||
colonias.push(row.colonia);
|
||||
});
|
||||
|
||||
//Añade las opciones de estados al elemento select
|
||||
estados.forEach(estado => {
|
||||
estadoSelect.innerHTML += "<option value='" + estado + "'>" + estado + "</option>";
|
||||
});
|
||||
|
||||
//Añade las opciones de ciudades al elemento select
|
||||
municipios.forEach(municipio => {
|
||||
municipioSelect.innerHTML += "<option value='" + municipio + "'>" + municipio + "</option>";
|
||||
});
|
||||
|
||||
//Añade las opciones de colonias al elemento select
|
||||
colonias.forEach(colonia => {
|
||||
coloniaSelect.innerHTML += "<option value='" + colonia + "'>" + colonia + "</option>";
|
||||
});
|
||||
} else {
|
||||
alert("No se encontraron datos para el código postal ingresado.");
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error("Error en la solicitud:", error);
|
||||
});
|
||||
} else {
|
||||
alert("Por favor, ingrese un código postal.");
|
||||
}
|
||||
});
|
||||
});
|
|
@ -93,32 +93,39 @@ class Catalogos{
|
|||
return $paises;
|
||||
}
|
||||
|
||||
public function obtenerInfoCodigoPostal($codigoPostal) {
|
||||
$sql = "
|
||||
SELECT
|
||||
e.nombre AS id_estado,
|
||||
m.nombre AS id_municipio,
|
||||
c.nombre AS id_colonia
|
||||
FROM colonias c
|
||||
JOIN municipios m ON c.municipio = m.id
|
||||
JOIN estados e ON m.estado = e.id
|
||||
WHERE c.codigo_postal = ?
|
||||
";
|
||||
/**
|
||||
* Obtiene el estado, municipio y colonia en base al código postal proporcionado.
|
||||
* @param int $codigo_postal El código postal a buscar.
|
||||
*/
|
||||
public function obtenerInfiCodigoPostal($codigo_postal){
|
||||
|
||||
// Consulta SQL para obtener estado, ciudad y colonia en base al código postal
|
||||
$sql = "SELECT e.nombre AS estado, m.nombre AS municipio, c.nombre AS colonia
|
||||
FROM colonias c
|
||||
JOIN municipios m ON c.municipio = m.id
|
||||
JOIN estados e ON m.estado = e.id
|
||||
WHERE c.codigo_postal = ?";
|
||||
|
||||
// Preparar la sentencia SQL
|
||||
$stmt = $this->conn->prepare($sql);
|
||||
if ($stmt === false) {
|
||||
throw new Exception("Error en la preparación de la consulta: " . $this->conn->error);
|
||||
}
|
||||
$stmt->bind_param("i", $codigoPostal);
|
||||
if (!$stmt->execute()) {
|
||||
throw new Exception("Error al ejecutar la consulta CP: " . $stmt->error);
|
||||
}
|
||||
$stmt->bind_param("i", $codigo_postal);
|
||||
$stmt->execute();
|
||||
|
||||
// Obtener los resultados
|
||||
$result = $stmt->get_result();
|
||||
$info = [];
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$info[] = $row;
|
||||
|
||||
// Verificar si hay resultados
|
||||
if ($result->num_rows > 0) {
|
||||
$data = [];
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$data[] = $row; // Agregar cada resultado a un array
|
||||
}
|
||||
return json_encode($data); // Devolver los resultados en formato JSON
|
||||
} else {
|
||||
return json_encode([]); // Si no hay resultados, devolver un array vacío
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
return $info;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue