Hola,
He creado una petición de ajax para introducir el código postal y que se despliegue la ciudad, estado, municipio y colonia. Funciona muy bien cuando se trata de una sola petición, pero en mi caso tengo que uno solo de mis registros cuenta con dos o tres domicilios, resolví la parte de php con un arreglo de un foreach y aunque sé que la lógica puede ser la misma; no tengo muchos conocimientos de ajax, entonces cuando se crean los campos de más de un domicilio mi petición solo funciona con el primer domicilio y el resto simplemente no los detecta.
Este es mi código php ligado al ajax:
Código PHP:
<?php
include('conexion.php');
$dato = $_POST['dato'];
//EJECUTAMOS LA CONSULTA DE BUSQUEDA
$registro = mysqli_query($con, "SELECT codigo_postal, estado, municipio, ciudad, area_metropolitana, brick_atv, brick_ims, zona_postal FROM sepomex WHERE codigo_postal = '$dato' LIMIT 1");
//CREAMOS NUESTRA VISTA Y LA DEVOLVEMOS AL AJAX
$i = 1;
foreach ($registro as $registro2) {
echo"código postal<input type='text' name='codigo_postal[$i]' id='codigo_postal' minlength='5' maxlength='5' onkeypress='return justNumbers(event)' readonly='readonly' style='width:50px;' value='".$registro2['codigo_postal']."'</input>";
echo"estado<input type='text' name='estado[$i]' id='estado' readonly='readonly' value='".$registro2['estado']."'</input>
municipio<input type='text' name='municipio[$i]' id='municipio' readonly='readonly' value='".$registro2['municipio']."'</input>
ciudad<input type='text' name='ciudad[$i]' id='ciudad' readonly='readonly' value='".$registro2['ciudad']."'</input></br></br>
área metropolitana<input type='text' name='area_metropolitana[$i]' id='area_metropolitana' readonly='readonly' style='width:30px; margin-left:50px;' value='".$registro2['area_metropolitana']."'</input>
brick atv<input type='text' name='brick_atv[$i]' id='brick_atv' readonly='readonly' value='".$registro2['brick_atv']."'</input>
brick ims<input type='text' name='brick_ims[$i]' id='brick_ims' readonly='readonly' value='".$registro2['brick_ims']."'</input>
zona postal<input type='text' name='zona_postal[$i]' id='zona_postal' readonly='readonly' style='width:30px;' value='".$registro2['zona_postal']."'</input>";
echo"colonia<select name='colonia[$i]' id='colonia'>";
$reg = mysqli_query($con, "SELECT colonia FROM sepomex WHERE codigo_postal='$dato'");
while ($registro2=mysqli_fetch_array($reg)) {
echo"<option value='".$registro2['colonia']."'>".$registro2['colonia']."</option>";
}
echo"</select>";
$i++;
}
?>
Este es mi código de ajax:
Código PHP:
$(function() {
$('#bs-prod').on('keyup', function() {
var dato = $('#bs-prod').serialize();
var url = '../php/busca_registro.php';
$.ajax({
dataType: 'json',
type: 'POST',
url: url,
data: 'dato=' + dato,
success: function(datos) {
$('#agrega-registros').html(datos);
}
});
return false;
});
});
Este es el código del index:
Código PHP:
echo"<input type='text' placeholder='Buscar Código Postal' id='bs-prod' name='bs-prod[$i]'/>";
echo"<div class='registros-uno' id='agrega-registros' name='agrega-registros[$i]'>código postal<input type='text' name='codigo_postal[$i]' id='codigo_postal' minlength='5' maxlength='5' onkeypress='return justNumbers(event)' readonly='readonly' style='width:50px;' value='".$fila['codigo_postal']."'</input>
estado<input type='text' name='estado[$i]' id='estado' readonly='readonly' value='".$fila['estado']."'</input>
municipio<input type='text' name='municipio[$i]' id='municipio' readonly='readonly' value='".$fila['municipio']."'</input>
ciudad<input type='text' name='ciudad[$i]' id='ciudad' readonly='readonly' value='".$fila['ciudad']."'</input></br></br>
área metropolitana<input type='text' name='area_metropolitana[$i]' id='area_metropolitana' readonly='readonly' style='width:30px; margin-left:50px;' value='".$fila['area_metropolitana']."'</input>
brick atv<input type='text' name='brick_atv[$i]' id='brick_atv' readonly='readonly' value='".$fila['brick_atv']."'</input>
brick ims<input type='text' name='brick_ims[$i]' id='brick_ims' readonly='readonly' value='".$fila['brick_ims']."'</input>
zona postal<input type='text' name='zona_postal[$i]' id='zona_postal' readonly='readonly' style='width:30px;' value='".$fila['zona_postal']."'</input>
colonia<select name='colonia[$i]' id='colonia'>
<option value='".$fila['colonia']."'>".$fila['colonia']."</option>
</select>
</div>
Esto lo tengo como arreglo y funciona muy bien en el php, pero al tratar de introducir un código postal en el input que desencadena el evento pues ... solo lo hace en el domicilio 1 y el resto los ignora.
Si alguien me puede ayudar porque se casi nada de ajax y no puedo solucionarlo.
Gracias por su ayuda.