【问题标题】:how to select third element in option value from html dropdown list usng PHP如何使用 PHP 从 html 下拉列表中选择选项值中的第三个元素
【发布时间】:2017-11-11 04:30:42
【问题描述】:

我有一个带有 MYSQL 查询的 PHP 代码,它显示一个下拉列表,它从数据库中获取结果。

问题在于下拉列表在选项值中包含几个元素,这些元素是继续任务所必需的。

我需要的是:

在选项值中包含三个元素后,我只需要选择第三个元素,以便在第二个 MYSQL 查询中使用它。

sql查询

<td><select id="site_name"  name = "site_name">
                      <option value="">Select Site</option>
                 <?php


                     $query_site_name =$wpdb->get_results("select DISTINCT 
                        i.siteNAME, 
                        i.ownerID, 
                        i.companyID,
                        o.ownerNAME,
                        x.companyNAME
                       from site_info i
                       LEFT  
                       JOIN owner_info o
                       on i.ownerID = o.ownerID
                       LEFT  
                       JOIN company_info x
                       on i.companyID = x.companyID
                       ");
                      foreach($query_site_name as $row)
                      {
                        echo "<option value = '".$row ->ownerID.", ".$row ->companyID.",".$row ->siteNAME."'>".$row->siteNAME."</option>";

                      } 


                 ?>

                </select></td> 

第二个 SQL 查询

$sql = $wpdb->prepare("select i.siteID
     , i.siteNAME
     , i.equipmentTYPE
     , c.latitude
     , c.longitude
     , c.height 
     , o.ownerNAME
     , o.ownerCONTACT
     , x.companyNAME
     , y.subcontractorCOMPANY
     , y.subcontractorNAME
     , y.subcontractorCONTACT
  from site_info i
  LEFT  
  JOIN owner_info o
    on i.ownerID = o.ownerID
  LEFT  
  JOIN company_info x
    on i.companyID = x.companyID
  LEFT 
  JOIN subcontractor_info y
    on i.subcontractorID = y.subcontractorID
    LEFT JOIN site_coordinates2 c
    on i.siteID=c.siteID 
    where 
    i.siteNAME = %s
    AND 
    o.ownerNAME = %s
    AND 
    x.companyNAME = %s
   ",$site_name,$owner_name,$company_name);

 $query_submit =$wpdb->get_results($sql, OBJECT);

ajax 代码

 <script type="text/javascript">

// make Dropdownlist depend on each other
$(document).ready(function(){


 // depend owner name on site name  
   $('#site_name').change(function(){
     var arrayId = $(this).val().split(",");
     if(arrayId != ""){
       var ownerID = arrayId[0];
       var companyID = arrayId[1];

     $.ajax({
      url:"<?php echo get_stylesheet_directory_uri(); ?>/dropdown_fetch_owner.php",
       method:"POST",
       data:{ownerID:ownerID,companyID:companyID},
       datatype:"text",
       success:function(data){
                 var Response = data.split("--");
                 $('#owner_name').html(Response[2]);
                 $('#Company_name').html(Response[4]);
        }
     });


   }


  });

});

</script>

dropdown_fetch_owner.php

<?php
 include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-load.php');
 global $wpdb,$owner_name,$company_name;

   $sql =$wpdb->get_results("select ownerID, ownerNAME from owner_info where ownerID = '".$_POST['ownerID']."' ORDER BY ownerNAME");
   $owner_name = '--Owner--';

  foreach($sql as $row){


      $owner_name.= "<option value ='".$row ->ownerID."'>".$row->ownerNAME."</option>";
  }
  echo $owner_name;


   $sql =$wpdb->get_results("select companyID, companyNAME from company_info where companyID = '".$_POST['companyID']."' ORDER BY companyNAME");
   $company_name = '--Company--';
   var_dump($sql);


   foreach($sql as $row){

     $company_name.= "<option value ='".$row ->companyID."'>".$row->companyNAME."</option>";
   }
   echo $company_name;
   exit();

?>

在上图中,我只需要在第二个 MYSQL QUERY 中从 选项值

中获取名称“burj abi haydar”

【问题讨论】:

  • 请搜索级联下拉php ajax
  • @mplungjan 我正在使用级联下拉菜单,但我需要将第三个元素从第一个 sql 查询转移到第二个
  • 使用javascript从选项值发送需要的项目

标签: javascript php html mysql wordpress


【解决方案1】:

如果您确定它始终是从数据库返回的第三个选项,您可以简单地查看键:

foreach ($options as $k => $option) {
    if ($k == 2) {
        echo '<option value="'.$option.'" selected="selected">'.$option.'</option>';
    } else {
        echo '<option value="'.$option.'">'.$option.'</option>';
    }
}

更具体地说,将您的 foreachloop 替换为:

foreach($query_site_name as $k => $row) {
    if ($k == 2) {
        echo "<option value = '".$row ->ownerID.", ".$row ->companyID.",".$row ->siteNAME."' selected='selected'>".$row->siteNAME."</option>";
    } else {
        echo "<option value = '".$row ->ownerID.", ".$row ->companyID.",".$row ->siteNAME."'>".$row->siteNAME."</option>";
    }
}

【讨论】:

  • 我已经有了这个循环 foreach($query_site_name as $row) { echo ""; } 把你的答案放在哪里?
  • 我试过你的答案,但它不起作用,因为我希望它只是在我选择之前显示名称而不选择第三个元素
【解决方案2】:

您必须使用$.ajax() 并通过, 拆分值并将其传递给您的ajax 数据,还必须使用dataType:'json' 来更新多个元素,例如,

$(function(){
    $('#site_name').on('change',function(){
        if(this.value){
            var vals = this.value.split(',');
            $.ajax({
               url:'YOUR-URL',
               type:'post',// you can use "get" here,
               dataType:'json',
               data:{ownerID:vals[0],companyID:vals[1],siteNAME:vals[2]},
               success:function(data){
                   // get the json object and show it by keys, owner and company name
                   $('#owner_name').html(data.owner_name);
                   $('#Company_name').html(data.company_name);
               }
            });
        }
    });    
});

并且您想从 dropdown_fetch_owner.php 传递多个数据,因此请使用 json_encode() 之类的,

<?php
 include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-load.php');
 global $wpdb,$owner_name,$company_name;

   $sql =$wpdb->get_results("select ownerID, ownerNAME from owner_info where ownerID = '".$_POST['ownerID']."' ORDER BY ownerNAME");
   $owner_name = '<option value="">--Owner--</option>';

   foreach($sql as $row){
      $owner_name.= "<option value ='".$row ->ownerID."'>".$row->ownerNAME."</option>";
   }
  //echo $owner_name; // comment this line


   $sql =$wpdb->get_results("select companyID, companyNAME from company_info where companyID = '".$_POST['companyID']."' ORDER BY companyNAME");
   $company_name = '<option value="">--Company--</option>';
   //var_dump($sql);


   foreach($sql as $row){
      $company_name.= "<option value ='".$row ->companyID."'>".$row->companyNAME."</option>";
   }
   // don't echo anything other than the below json object,
   // otherwise it will give your error in AJAX Call
   echo json_encode(array('owner_name'=>$owner_name,'company_name'=>$company_name));
   exit();

?>

【讨论】:

  • 您的datatype option 拼写错误,使用dataType 注意T 是大写的。
  • 我修复了数据类型,但没有任何改变
  • 您是如何获取dropdown_fetch_owner.php 上的数据的?
  • 使用 POST 方法我将代码添加到问题中
  • 当您从 PHP 传递多个数据时,请使用 json_encode 并在 $.ajax() 中使用 dataType:'json'。请参阅我的更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2017-12-16
  • 1970-01-01
相关资源
最近更新 更多