如何将值存储在下拉列表中的第二个变量中 [英] how to store value in second variable inside dropdown list
问题描述
我有一个用 PHP 和 MYSQL 和 ajax 编写的网站,其中包括 3 个依赖的下拉列表,其中第一个下拉列表包含其他 2 个下拉列表所需的几个值.
i have a website that is written in PHP and MYSQL with ajax that includes 3 dependent drodpdown list where the first dropdown conatins several values that are necessary for the 2 other dorpdown list.
我需要的是还能够将这些值之一存储在第二个变量中,以便在其他查询中单独使用它.
what i need is to also be able to store one of these values in a second variable in order to use it alone in other query.
<?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 查询之前修剪或提取第三个值.*/
/* the above lines are added
the var_dump display 3 values inside $site_name variable is there a way to trim or extract the third value before the SQL query down.
*/
$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();
?>
推荐答案
这个怎么样:
在您的PHP 脚本中,您可以分解
siteName 到array
.PHPexplode() 文档
In your PHP script, you can explode
the siteName into an array
. PHP 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=""; }
正如我之前所说:
在 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");
使用此代码,您将不需要我在编辑前提供的代码,您需要
Using this code, you wont need the code that i provided before the edit, you'll need to
改变这个:
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=""; }
这篇关于如何将值存储在下拉列表中的第二个变量中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!