Выпадающий список состояний выдает первое значение даже после выбора любого значения из списка при отправке формы

#php

#php

Вопрос:

Ниже приведен мой полный код для заполнения списка состояний на основе выбранной страны. Когда я выбираю любую страну из выпадающего списка country, он возвращает правильный список состояний в раскрывающемся списке states. Эта часть работает нормально.

Когда я выбираю страну США, выпадающий список штатов заполняется штатами США, а по умолчанию выбрано выбранное состояние Alska . Теперь, если я изменю значение состояния с Alaska на «Техас» и отправлю форму, он просто отправит значение 0 на страницу отправки.

Я думаю, что это значение 0 поступает из <option value="0">-- Select State --</option> in id=before_get_state . Итак, как я могу решить эту проблему? Пожалуйста, помогите.

Выпадающий список стран

GetRecordSet используется для извлечения записей из базы данных MySQL

CheckSelected используется для отображения определенного значения в качестве выбранного значения по умолчанию в выпадающем списке

 <form name="frm_shipping_address" id="frm_shipping_address" novalidate>
<div class="control-group form-group">
    <div class="controls">
        <label>Select Country</label><span class="text-help-form"> * </span>
            <?php 
            $str_query_select="";
            $str_query_select="SELECT * FROM " .$STR_DB_TABLE_NAME_COUNTRY. " WHERE visible='YES' ORDER BY title ASC";
            $rs_list_country=GetRecordSet($str_query_select);
            ?>
            <select name="cbo_country" id="cbo_country" class="form-control" onChange="get_state(this.value);" required="" data-validation-required-message="Select Country" >
            <option value="0">-- Select Country --</option>
            <?php
            while(!$rs_list_country->EOF()==true) { ?>
                <option value="<?php print($rs_list_country->fields("pkid"))?>" <?php print(CheckSelected($rs_list_country->fields("pkid"),$int_user_countrypkid)); ?>><?php print($rs_list_country->fields("title")); ?></option>
            <?php $rs_list_country->MoveNext(); } ?>
            </select>
    </div>
</div>
<button id="btn_continue" class="btn btn-primary btn-lg btn-block"><b>SUBMITamp;nbsp;</b></button>
</form>
  

Выпадающий список состояний

 <div class="control-group form-group">
    <div class="controls">
        <label>Select State</label><span class="text-help-form"> * </span>
        <div id="before_get_state">
            <select name="cbo_state" id="cbo_state" class="form-control">
                <option value="0">-- Select State --</option>
            </select>
        </div>
        <div id="after_get_state"></div>    
    </div>
</div>                 
  

jQuery / AJAX

jquery.min.js jqBootstrapValidation.js файлы включены в страницу

 <script>
function get_state(countrypkid) {
    var int_countrypkid = countrypkid;
    var dataString = "countrypkid=" int_countrypkid;
    $.ajax({
        type: "POST",
        url: "./product_address_get_state_p.php",
        data: dataString,
        success: function(html)
        {
            $("#before_get_state").hide();
            $("#after_get_state").html(html);
        }
    });
}
</script>
  

product_address_get_state_p.php Код страницы

 $int_statepkid = 0;
if(isset($_SESSION['userpkid']) amp;amp; $_SESSION['userpkid'] != "")
{
    $str_query_select = "SELECT statepkid FROM t_user WHERE pkid=".$_SESSION['userpkid'];
    $rs_list_user = GetRecordSet($str_query_select);
    $int_statepkid = $rs_list_user->fields("statepkid");
}

$int_countrypkid = 0;
if(isset($_POST["countrypkid"]))
{
    $int_countrypkid = trim($_POST["countrypkid"]);
}

$str_query_select = "SELECT * FROM " .$STR_DB_TABLE_NAME_STATE. " WHERE masterpkid=".$int_countrypkid." AND visible='YES' ORDER BY title ASC";
$rs_list_state = GetRecordSet($str_query_select);

echo "<select class='form-control' name='cbo_state' id='cbo_state'>";
while(!$rs_list_state->EOF()==true)
{ 
    echo "<option value='" .$rs_list_state->fields('pkid'). "' ".CheckSelected($rs_list_state->fields('pkid'),$int_statepkid).">".$rs_list_state->fields('title')."</option>";
    $rs_list_state->MoveNext();
} 
echo "</select>";
  

Комментарии:

1. Я бы просто сделал $("#before_get_state").html(html); и удалил $("#after_get_state").html(html); and <div id="after_get_state"></div> . Затем проверьте элемент select после того, как вы задали страну, и посмотрите, каковы значения состояний.

2. Я также должен отметить, что вы не должны помещать значения, представленные пользователем, прямо в sql-запрос. Вы открыты для SQL-инъекций. Посмотрите на параметры / значения привязки.