2017-01-18 2 views
0

У меня есть каскадирование страны/штата/города. Данные заполняются с использованием PHP/Mysql. Данные заполняются для вариантов состояния/города, соответствующих стране. Данные также заполняются в соответствии с данными, введенными пользователем для его записи. Есть две проблемы.Заполнение Jquery Based Drop Down с использованием PHP и MySQL

  1. Данные загружаются дублируется, когда пользователь вводит данные подаются в раскрывающемся меню (например, если он вошел в США, еще один США показывает, потому что из другого запроса, чтобы заполнить значения) Здесь мы можем использовать «выбрано», но как это сделать, когда данные поступают из базы данных.

  2. Вторая проблема заключается в том, что каскад не отображает соответствующие записи - если пользователь вошел в США, тогда государства США и Сити не отображаются в каскаде, хотя независимо от введенного пользователя отображается.

Это мнение

Country: 
<select class="addpropertyinput" name="property_country" id="country" > 
     <option value="<?php echo $data['property_country']; ?>"> 
     <?php 
     $country_id = $data['property_country']; 
     $select = $con->prepare("SELECT country_name from tbl_country where country_id='$country_id'"); 
     $select->setFetchMode(PDO::FETCH_ASSOC); 
     $select->execute(); 
     $data2 = $select->fetchAll(); 
     foreach ($data2 as $row1) { 
     echo $row1['country_name']; 
     } 
     ?> 
     </option> 

     <?php foreach ($data1 as $row) { ?> 
     <option value = "<?php echo $row['country_id']?>"><?php echo $row['country_name']?></option> 
     <?php } ?> 

    </select> 

</div> 


<div> 


State: 
<select class="addpropertyinput" name="property_state" id="state" > 
     <option value="<?php echo $data['property_state']; ?>"><?php echo $data['property_state']; ?></option> 
    </select> 

</div> 



<div> 


City : 
    <select class="addpropertyinput" name="property_city" id="city"> 
     <option value=""><?php echo $data['property_city']; ?></option> 
    </select> 

</div> 

Это Jquery

// Country State City Dropdown 

    $('#country').on('change', function() { 

     var country_id = $('#country').val(); 

     if (country_id == "") 
      { 
       $('#state').html('<option value="">State</option>');  
       $("#city").html(' <option value="">City</option>'); 

      } 

     else { 

     $.ajax({ 
       type: 'POST', 
       url: '../classes/countrystatecity.php', 
       data: "country_id="+country_id, 
       success: function(msg) { 

       $("#state").html(msg); 
       $("#city").html(' <option value="">City</option>'); 

       } 
       }); 
    } 

    }); 

    $('#state').on('change', function() { 

     var state_id = $('#state').val(); 

     if (state_id == "") 
      { 
       $("#city").html(' <option value="">City</option>'); 

      } 

     else { 

    $.ajax({ 
      type: 'POST', 
      url: '../classes/countrystatecity.php', 
      data: "state_id="+state_id, 
      success: function(msg) { 

      $("#city").html(msg);    

      } 
     }); 
    } 
    }); 

Это модель:

$select = $con->prepare('SELECT country_id, country_name from tbl_country'); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$data1 = $select->fetchAll(); 

// Select State 

if (!empty($_POST['country_id'])){ 

     $country = $_POST['country_id']; 
     $select = $con->prepare("SELECT state_id, state_name from tbl_state where country_id='$country'"); 
     $select->setFetchMode(PDO::FETCH_ASSOC); 
     $select->execute(); 
     $data1 = $select->fetchAll(); 
     ?> 
     <option value="">State</option> 
     <?php 
     foreach ($data1 as $row){ ?> 
     <option value = "<?php echo $row["state_id"];?>"><?php echo $row["state_name"];?></option> 
<?php 
     } 
} 

// Select City 

if (!empty($_POST['state_id'])){ 

     $state = $_POST['state_id']; 
     $select = $con->prepare("SELECT city_id, city_name from tbl_city where state_id='$state'"); 
     $select->setFetchMode(PDO::FETCH_ASSOC); 
     $select->execute(); 
     $data1 = $select->fetchAll(); 
     ?> 
     <option value="">City</option> <?php 
     foreach ($data1 as $row){ ?> 
     <option value = "<?php echo $row["city_id"];?>"><?php echo $row["city_name"];?></option> 
<?php 
     } 
} 

ответ

1
1. Problem Solution 
Country: 
<select class="addpropertyinput" name="property_country" id="country" > 
    <?php foreach ($data1 as $row) { 
     $selected = '';  
     if($row['country_id'] == $data['property_country']){ 
      $selected = 'selected'; 
     } ?> 
     <option value = "<?php echo $row['country_id']?>" <?php echo $selected?>><?php echo $row['country_name']?></option> 
    <?php } ?> 
</select> 

2. Problem Solution 

$select = $con->prepare('SELECT country_id, country_name from tbl_country'); 
$select->setFetchMode(PDO::FETCH_ASSOC); 
$select->execute(); 
$data1 = $select->fetchAll(); 

// Select State 

if (!empty($_POST['country_id'])){ 

     $country = $_POST['country_id']; 
     $select = $con->prepare("SELECT state_id, state_name from tbl_state where country_id='$country'"); 
     $select->setFetchMode(PDO::FETCH_ASSOC); 
     $select->execute(); 
     $data1 = $select->fetchAll(); 
     $result = "<option value="">State</option>"; 
     foreach ($data1 as $row){ 
      $result .= "<option value=".$row["state_id"].">".$row["state_name"]."</option>"; 
     } 
     echo $result; 
} 

// Select City 

if (!empty($_POST['state_id'])){ 

     $state = $_POST['state_id']; 
     $select = $con->prepare("SELECT city_id, city_name from tbl_city where state_id='$state'"); 
     $select->setFetchMode(PDO::FETCH_ASSOC); 
     $select->execute(); 
     $data1 = $select->fetchAll(); 
     $result = "<option value="">City</option>"; 
     foreach ($data1 as $row){ 
      $result .= "<option value=".$row["city_id"].">".$row["city_name"]."</option>"; 
     } 
     echo $result; 
} 
+0

Задача 1 Решение работает , но решение проблемы 2 - нет. Вы видите, что данные о проблемах 2 поступают из двух мест: один из jquery (в зависимости от страны), который заполняет все состояния, и один из ajax - который заполняет сохраненные пользователем данные. После того, как пользователь заполняет данные, необходимо показать другие параметры. – DragonFire

+0

получил правильный запрос: \t $ countryid = $ data ['property_country']; \t \t \t \t $ select1 = $ con> подготовить ("SELECT state_id, state_name из tbl_state где country_id = '$ countryid;'"); \t \t \t \t $ select1-> setFetchMode (PDO :: FETCH_ASSOC); \t \t \t \t $ select1-> execute(); \t \t \t \t $ data2 = $ select1-> fetchAll(); \t \t \t \t Еогеасп ($ data2, как $ row3) { \t \t \t \t \t $ выбран = ''; \t \t \t \t \t если ($ row3 [ 'state_id'] == $ данных [ 'property_state']) { \t \t \t \t \t $ выбран = 'выбран'; \t \t \t \t \t}?> \t \t \t \t \t <параметр значение = "" > \t \t \t \t \t DragonFire