как выбрать третий элемент в значении параметра из html выпадающего списка usng PHP

106
11

У меня есть PHP-код с запросом MYSQL, который отображает выпадающий список, где он берет свой результат из базы данных.

проблема заключается в том, что раскрывающийся список содержит несколько элементов в значениях параметров, которые необходимы для продолжения задачи.

мне нужно:

после того, как я включу три элемента в значение параметра, мне нужно выбрать только третий элемент, чтобы использовать его во втором запросе 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();

?>

enter image description here

на изображении выше мне просто нужно получить во втором MYSQL QUERY имя "burj abi haydar" из значения параметра

спросил(а) 2021-01-19T11:20:31+03:00 2 месяца, 3 недели назад
1
Решение
76

Вы должны использовать $.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();

?>

ответил(а) 2021-01-19T11:20:31+03:00 2 месяца, 3 недели назад
44

Если вы уверены, что это третий вариант, возвращаемый из вашей базы данных, вы можете просто взглянуть на ключ:

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

Чтобы быть более конкретным, замените цикл foreach на:

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>";
}
}

ответил(а) 2021-01-19T11:20:31+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема