簡體   English   中英

使用db的for循環中的預選選項

[英]pre-selected option in for loop using db

我有一個select標記,其中選項的數據來自數據庫,現在我想預選用戶曾經選擇過的option字段。

$id     = $_GET['edit'];
$obj  = new employees();
$result = $obj->select_for_update($id);
    if (!empty($result)) {
        foreach ($result as $values){

  <?php 
    $result=$obj->select_country();
        foreach ($result as $values1){
            ?>
    <option value="<?php echo $values['country']; ?>" <?php if($values['country'] == $values1['country_id'] ) { echo 'selected="selected"'; } ?>>
<?php
        echo $values1['country_name'];
?>
   </option>
    <?php
        }  

?>

    </select>        

   <select id="state" name="state" >

  <?php 
    $result=$obj->select_state();
        foreach ($result as $values1){
            ?>

       <option value="<?php echo $values['state']; ?>" <?php if($values['state'] == $values1['state_id'] ) { echo 'selected="selected"'; } ?>>
<?php
        echo $values1['state_name'];
?>


       </option>
<?php
        }  

?>
</select>


<select id="city" name="city" value="<?php echo $values['city']; ?>" >

<?php 
    $result=$obj->select_city();
        foreach ($result as $values1){
            ?>

  <option value="<?php echo $values['city']; ?>" <?php if($values['city'] == $values1['city_id'] ) { echo 'selected="selected"'; } ?>>
<?php
        echo $values1['city_name'];
?>


       </option>
<?php
        }  

?>
</select>

選擇國家州城市的功能

  function select_country(){
          $sth =  $this->con->prepare("SELECT  * from country");
          $sth->execute();
          $result = $sth->fetchAll(PDO::FETCH_ASSOC);
           return $result;
      }

      function select_state(){
          $sth =  $this->con->prepare("SELECT  * from state");
          $sth->execute();
          $result = $sth->fetchAll(PDO::FETCH_ASSOC);
          return $result;
      }

      function select_city(){
          $sth =  $this->con->prepare("SELECT  * from city");
          $sth->execute();
          $result = $sth->fetchAll(PDO::FETCH_ASSOC);
          return $result;
      }

選擇功能

function select_for_update($id){
    $sth =  $this->con->prepare("SELECT * FROM employees
    LEFT JOIN country ON employees.country = country.country_id
    LEFT JOIN state ON employees.state = state.state_id
    LEFT JOIN city ON employees.city = city.city_id WHERE emp_id='$id'");
    $sth->execute();
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);

    return $result;
}

我正在從數據庫獲取數據,並希望打印選定的數據。

像我一樣,一旦用戶選擇了India並且India被存儲在數據庫中,現在用戶來編輯select標簽時,將在選項標簽中顯示預先選擇的India

腳本調用ajax

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

    <script type="text/javascript">
    $(document).ready(function(){
        $("#country").change(function(){
            var countryID = $(this).val();
            if(countryID){
                $.ajax({
                    type:'POST',
                    url:'ajaxData.php',
                    data:'country_id='+countryID,
                    success:function(html){
                        $('#state').html(html);
                        $('#city').html('<option value="">Select state first</option>'); 
                    }
                }); 
            }else{
                $('#state').html('<option value="">Select country first</option>');
                $('#city').html('<option value="">Select state first</option>'); 
            }
          });

        $('#state').on('change',function(){
            var stateID = $(this).val();
            if(stateID){
                $.ajax({
                    type:'POST',
                    url:'ajaxData.php',
                    data:'state_id='+stateID,
                    success:function(html){
                        $('#city').html(html);
                    }
                }); 
            }else{
                $('#city').html('<option value="">Select state first</option>'); 
            }
        });
    });
    </script>    

ajaxData.php

<?php
$dbHost     = 'ops';
$dbUsername = 'dhruv_thakkar';
$dbPassword = 'pass';
$dbName     = 'dhruv_thakkar';
$con= new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}


$country_id=$_POST['country_id'];
$state_id=$_POST['state_id'];

if(isset($_POST['country_id'])){
$query=mysqli_query($con,"select * from state where country_id='$country_id'");    

$rowCount = $query->num_rows;
if($rowCount > 0){
    echo '<option value="">Select state</option>';
            while($row = $query->fetch_assoc()){
                     echo '<option value="'.$row['state_id'].'">'.$row['state_name'].'</option>';
             }
}
else{
    echo '<option value="">State not available</option>';
}
}

if($_POST['state_id']){

    $query=mysqli_query($con,"select * from city where state_id='$state_id'");
    $rowCount = $query->num_rows;
    if($rowCount > 0){
        echo '<option value="">Select city</option>';
        while($row = $query->fetch_assoc()){
            echo '<option value="'.$row['city_id'].'">'.$row['city_name'].'</option>';
        }
    }else{
        echo '<option value="">City not available</option>';
    }

}
?>

在編輯時,您需要獲取saved country以便在此處進行compare

如果您要ADD/EDIT頁面相同,則需要傳遞$country_id = 0; ADD時間,因此不會得到未定義的變量錯誤

$country_id = '1';//assume this is from your DB
<select value="" id="country" name="country">
    <option>Select Country</option>
    <?php $result=$obj->select_country();
    if (!empty($result)) {
        foreach ($result as $values){ ?>
            <option value="<?php echo $values['country_id']; ?>" <?php if($values['country_id'] == $country_id) { echo 'selected="selected"'; } ?> >
            <?php echo $values['country_name'];?>
            </option>
        <?php } 
    }else{
        echo '<option value="">Country not available</option>';
    }
    ?>
</select>

在這條線上,

$country_id = "1"; // considering 1 is country_id of India
<option value="<?php echo $values['country_id']; ?>"   
<?php (!empty($country_id) && $country_id == $values['country_id'] ? 'selected' : ''; )?> >

像上面使用的三元運算符一樣檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM