【问题标题】:how to store value in second variable inside dropdown list如何将值存储在下拉列表中的第二个变量中
【发布时间】:2017-11-25 13:48:00
【问题描述】:

我有一个使用 ajax 用 PHP 和 MYSQL 编写的网站,其中包括 3 个依赖的下拉列表,其中第一个下拉列表包含几个其他下拉列表所需的值。

我还需要能够将这些值之一存储在第二个变量中,以便在其他查询中单独使用它。

take a look on the image

代码

<?php

            // code for submit button action
            global $wpdb, $site_name, $data;
        //variables that handle the retrieved data from mysql database based on the ID of the variable in HTML (select)



        if(isset($_POST['query_submit']))
        {


           if(isset($_POST['site_name'])) 
              { 
               $site_name=$_POST['site_name'];

              }
              else { $site_name=""; }
    var_dump($site_name);

/* 上面的行被添加
var_dump 在 $site_name 变量中显示 3 个值是否可以在 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);

代码

  <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)
  {   
     //$result1 = $row->ownerID;
    // $result2 = $row->companyID;  
    echo "<option value = '".$row ->ownerID.",".$row ->companyID.",".$row ->siteNAME."'>".$row->siteNAME."</option>";
   // echo "<option value = '".$row ->siteNAME."'>".$row->siteNAME."</option>";         
  } 
?>
</select></td>

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];    //0
       var companyID = arrayId[1];  //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--';
   var_dump($sql);
  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();




?>

【问题讨论】:

  • 从第一个下拉列表中选择一个选项后,您需要存储第二个信息吗?
  • @HamzaAbdaoui 我需要将 siteNAME 值存储在单独的变量中,或者将其他 2 个值存储在单独的变量中,以便能够在一秒钟内仅使用 siteNAME查询..我将编辑我的问题并添加一些代码看看
  • var arrayId = $(this).val().split(","); if(arrayId != ""){ var ownerID = arrayId[0]; //0 var companyID = arrayId[1]; //1 不是在做这项工作吗?
  • 是的,当我使用下拉列表时我会这样做......但是当我按下搜索按钮时,如您在第一个查询中看到的那样,它将选择并显示 3 个值......如果您看到图像在链接中,变量 siteNAME 处理 3 个值,我只需要第三个

标签: php mysql ajax


【解决方案1】:

这个呢:

在您的PHP 脚本中,您可以将explode 的siteName 转换为arrayPHP explode() documentation

if(isset($_POST['site_name'])) 
   { 
       $site_name=$_POST['site_name'];
       $values = explode(",", $site_name);
       $site_name = $values[0]; //Or whatever cell you want
   }
 else { $site_name=""; }

编辑:

正如我之前的 sed :

在 PHP 中,改变这个:

echo "<option value = '".$row ->ownerID.",".$row ->companyID.",".$row ->siteNAME."'>".$row->siteNAME."</option>";

致:

echo "<option id = '".$row ->ownerID."' name = '".$row ->companyID."' value = '".$row ->siteNAME."'>".$row->siteNAME."</option>";

在ajax中,改一下:

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

致:

$('#site_name').change(function(){
   var ownerID = $(this).children(":selected").attr("id");
   var companyID = $(this).children(":selected").attr("name");

使用此代码,您将不需要我在编辑之前提供的代码,您需要

改变这个:

if(isset($_POST['site_name'])) 
   { 
       $site_name=$_POST['site_name'];
       $values = explode(",", $site_name);
       $site_name = $values[0]; //Or whatever cell you want
   }
 else { $site_name=""; }

收件人:

if(isset($_POST['site_name'])) 
   { 
       $site_name=$_POST['site_name']; //It'll contain just what you want ;)
   }
 else { $site_name=""; }

【讨论】:

  • 这不会解决问题我不知道我是否没有以书面方式解释我的问题我会编辑问题看看
  • @Dany 7elo,我希望我终于明白你的需要了!
  • 看看我的问题中的链接,我会显示你的回答结果
  • 在我的回答中,我使用了一个数组 $values,这个数组将包含您拥有的 3 个值,例如 |185|3|Amioun|。所以如果你需要得到185,你就做$values[0]等等...
  • 不,我得到了我需要的值,但它与其他问题接缝,因为在调试模式下的参数字段中它仍然选择 3 个值希望您确实理解我的评论并感谢您的帮助
【解决方案2】:

$('#owner_name').html(data[0].model_no); 像这样使用 model_no 是数据库字段名使用。

【讨论】:

  • 我不明白你的回答
  • " 我在使用这个选项标签时没有得到任何值我尝试它在我的代码中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多