Есть страница где загружаются данные по полям state и state_str
Если в базе не находится для страны штат, выводится поле input,если есть select
elseif( $component == "state" || $component == "state_str" ) {
if( in_array( $d->country, country::$countries_with_parsed_states ) ) {
if( $component == "state_str" ) {
continue;
}
$state_map = country::get_region_list( $d->country, true );
echo "<tr><td>" . $field_name . "</td><td id='state'><select name='" . $component . "'>";
echo "<option value='0'>Select State</option>";
foreach( $state_map as $id_state => $label ) {
echo "<option value='" . $id_state . "' " . ( $d->$component == $id_state ? 'selected=selected' : '' );
echo ">" . $label . "</option>";
}
echo "</select></td></tr>";
}
else {
if( $component == "state" ) {
continue;
}
echo "<tr><td>" . $field_name . "</td><td id='statestr'>
<input class='form-control' type='text' name='" . $component . "' value=\"" . str_replace( '"', '"', $d->$component ) . "\" /></td></tr>";
}
Написал AJAX,чтобы при выборе страны из базы подгружались данные по штатам, если нет то ставилось поле с вводом
$("#country_code").change(function () {
var id_country=$(this).val();
$.ajax({
type: 'POST',
url: '/ajax/state_country.php',
data: 'id='+id_country,
success: function (data) {
$('#state').html(data);
$('#statestr').html(data);
}
})
});
Текст state_country.php
$term = (int)$_POST[ 'id' ];
$sql = $db->fetchAll( 'SELECT region_id, region_full_name FROM regions WHERE region_country_id = :id_country', [ 'id_country' => $term ] );
if ($sql){
echo '<select name="state">';
foreach($sql as $state) {
echo '<option value="' . $state ['region_id'] .'">' . $state ['region_full_name'] . '</option>';
}
echo '</select >';
} else {
echo '<input class="form-control" type="text" name="state_str" />';
}
Данный метод работает затирая старые данные, можно ли в текущие поля подгружать данные? И чтобы при этом названия строки тоже менялось, если выбран state = State, если statestr = State str?