SELECT COMBO DEPENDIENTES CON FETCH API JSON METODO POST PHP MYSQL
hazme ejemplo codigo de 2 select combo dependientes con fetch api json metodo post php mysql
Claro, aquí te proporciono un ejemplo de código en PHP para implementar dos select combos dependientes con Fetch API y JSON utilizando el método POST para obtener los datos de una base de datos MySQL.
Primeramente, suponiendo que tengas una tabla en tu base de datos MySQL llamada paises que contiene información de países, tales como id_pais y nombre_pais, y otra tabla llamada ciudades que contiene información de ciudades, tales como id_ciudad, nombre_ciudad, y id_pais (clave foránea para relacionar las ciudades con los países), puedes utilizar el siguiente código:
HTML:
php
Copy code
<label for="pais">País:</label>
<select id="pais" name="pais">
<option value="">Selecciona un país</option>
<?php
// Conexión a la base de datos
$conexion = new PDO("mysql:host=nombre_servidor;dbname=nombre_base_de_datos", "nombre_usuario", "contraseña_usuario");
// Consulta para obtener todos los países
$consulta_paises = $conexion->query("SELECT * FROM paises");
// Mostrar opciones del select de países
while ($fila = $consulta_paises->fetch(PDO::FETCH_ASSOC)) {
echo '<option value="' . $fila['id_pais'] . '">' . $fila['nombre_pais'] . '</option>';
}
?>
</select>
<label for="ciudad">Ciudad:</label>
<select id="ciudad" name="ciudad" disabled>
<option value="">Selecciona primero un país</option>
</select>
JS (utilizando Fetch API):
javascript
Copy code
const paisSelect = document.getElementById('pais');
const ciudadSelect = document.getElementById('ciudad');
paisSelect.addEventListener('change', () => {
// Obtener el valor del select de países
const idPais = paisSelect.value;
// Si se seleccionó un país, habilitar el select de ciudades
ciudadSelect.disabled = !idPais;
// Limpiar opciones actuales del select de ciudades
ciudadSelect.innerHTML = '<option value="">Cargando...</option>';
// Obtener las ciudades correspondientes al país seleccionado
fetch('ruta_a_tu_archivo.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id_pais: idPais
})
})
.then(response => response.json())
.then(data => {
// Mostrar las opciones en el select de ciudades
ciudadSelect.innerHTML = '<option value="">Selecciona una ciudad</option>' + data.map(ciudad => `<option value="${ciudad.id_ciudad}">${ciudad.nombre_ciudad}</option>`).join('');
})
.catch(error => {
console.error('Error:', error);
});
});
PHP:
php
Copy code
// Conexión a la base de datos
$conexion = new PDO("mysql:host=nombre_servidor;dbname=nombre_base_de_datos", "nombre_usuario", "contraseña_usuario");
// Obtener el id del país enviado por POST
$idPais = $_POST['id_pais'];
// Consulta para obtener las ciudades correspondientes al país seleccionado
$consulta_ciudades = $conexion->prepare("SELECT * FROM ciudades WHERE id_pais = ?");
$consulta_ciudades->execute([$idPais]);
$ciudades = $consulta_ciudades->fetchAll(PDO::FETCH_ASSOC);
// Devolver las ciudades como un array JSON
echo json_encode($ciudades);
jose fernandez
hazme el <select id="pais" name="pais"> que cargue con fetch
Claro, aquí te proporciono un ejemplo de cómo cargar un select con Fetch API y JSON utilizando el siguiente código JavaScript:
javascript
Copy code
const paisSelect = document.getElementById('pais');
// Obtener la lista de países mediante una petición Fetch
fetch('ruta_a_tu_archivo.php')
.then(response => response.json())
.then(data => {
// Agregar las opciones al select de países
paisSelect.innerHTML = '<option value="">Selecciona un país</option>' + data.map(pais => `<option value="${pais.id_pais}">${pais.nombre_pais}</option>`).join('');
})
.catch(error => {
console.error('Error:', error);
});
En este ejemplo, asumimos que tienes un archivo PHP que devuelve la lista de países en formato JSON. El archivo PHP podría ser algo como esto:
php
Copy code
// Conexión a la base de datos
$conexion = new PDO("mysql:host=nombre_servidor;dbname=nombre_base_de_datos", "nombre_usuario", "contraseña_usuario");
// Consulta para obtener todos los países
$consulta_paises = $conexion->query("SELECT * FROM paises");
// Obtener los resultados como un array asociativo
$paises = $consulta_paises->fetchAll(PDO::FETCH_ASSOC);
// Devolver los países como un array JSON
echo json_encode($paises);
En este caso, el archivo PHP realiza una consulta a una tabla de países en una base de datos MySQL y devuelve los resultados como un array JSON. Este archivo deberá ser adaptado a tu base de datos y tabla de países en particular.
jose fernandez
hazme el archivo .sql de este ej
Para crear las tablas necesarias para el ejemplo de dos select combos dependientes, puedes utilizar el siguiente archivo .sql:
sql
Copy code
-- Crear tabla de países
CREATE TABLE paises (
id_pais INT PRIMARY KEY,
nombre_pais VARCHAR(50)
);
-- Insertar algunos datos de ejemplo
INSERT INTO paises (id_pais, nombre_pais) VALUES
(1, 'México'),
(2, 'Estados Unidos'),
(3, 'Canadá');
-- Crear tabla de ciudades
CREATE TABLE ciudades (
id_ciudad INT PRIMARY KEY,
nombre_ciudad VARCHAR(50),
id_pais INT,
FOREIGN KEY (id_pais) REFERENCES paises(id_pais)
);
-- Insertar algunos datos de ejemplo
INSERT INTO ciudades (id_ciudad, nombre_ciudad, id_pais) VALUES
(1, 'Ciudad de México', 1),
(2, 'Guadalajara', 1),
(3, 'Monterrey', 1),
(4, 'Nueva York', 2),
(5, 'Los Ángeles', 2),
(6, 'Chicago', 2),
(7, 'Toronto', 3),
(8, 'Montreal', 3),
(9, 'Vancouver', 3);
Este archivo crea dos tablas, paises y ciudades, y las relaciona mediante una clave foránea (id_pais en la tabla ciudades hace referencia a id_pais en la tabla paises). También inserta algunos datos de ejemplo en ambas tablas.
Debes ejecutar este archivo .sql en tu servidor de base de datos MySQL para crear las tablas y los datos de ejemplo. Ten en cuenta que debes cambiar los detalles de conexión en tu archivo PHP para que coincida con tu servidor de base de datos.
Comentarios
Publicar un comentario