как сделать связь между выбором пользователя из выпадающего списка и запросом выбора

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

Когда я попробовал SQL-запрос на консоли phpMyAdmin, он работал нормально. Когда я попытался в сценарии PHP, он не работал, и ничего не получается.

@ бармар

первый …..

<td><select id="site_name"  name = "site_name">

<?php
$query_site_name =$wpdb->get_results ("select DISTINCT siteNAME  from site_info");
foreach($query_site_name as $site_name)
{
$site_name = (array)$site_name;
echo "<option value = '{".$site_name ['siteNAME']."}'>".  $site_name['siteNAME']."</option>";
}
?>

второй …

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

я объявляю $ site_name как глобальную переменную

      $query_submit =$wpdb->get_results ("select site_info.siteID,site_info.siteNAME ,site_info.equipmentTYPE,site_coordinates.latitude,site_coordinates.longitude,site_coordinates.height ,owner_info.ownerNAME,owner_info.ownerCONTACT,company_info.companyNAME,subcontractor_info.subcontractorCOMPANY,subcontractor_info.subcontractorNAME,subcontractor_info.subcontractorCONTACT from `site_info`
LEFT JOIN `owner_info`
on site_info.ownerID = owner_info.ownerID
LEFT JOIN `company_info`
on site_info.companyID = company_info.companyID
LEFT JOIN `subcontractor_info`
on site_info.subcontractorID = subcontractor_info.subcontractorID
LEFT JOIN `site_coordinates`
on site_info.siteID=site_coordinates.siteID
");

foreach ($query_submit as $obj) {
echo $site_name;
echo "<table width='30%' ";
echo     "<tr>";
echo         "<td>".$obj->siteNAME."</td>";
echo         "<td>".$obj->ownerNAME."</td>";
echo         "<td>".$obj->companyNAME."</td>";
echo         "<td>".$obj->subcontractorNAME."</td>";
echo         "<td>".$obj->siteID."</td>";
echo         "<td>".$obj->equipmentTYPE."</td>";
echo         "<td>".$obj->latitude."</td>";
echo         "<td>".$obj->longitude."</td>";
echo         "<td>".$obj->height."</td>";
echo         "<td>".$obj->ownerCONTACT."</td>";
echo         "<td>".$obj->subcontractorCONTACT."</td>";
echo         "<td>".$obj->subcontractorCOMPANY."</td>";
echo     "</tr>";
echo "</table>";
}?>

новая проблема заключается в том, что когда я пытался указать выбор пользователя, запрос перестал работать.

как я добавляю эти строки:

 where
site_info.siteNAME = ".$site_name."

где $ site_name — это переменная из выпадающего списка

<form method ="post" action ="" name="submit_form">
<table width="30%">
<tr>
<td>Site Name</td>
<td>Owner Name</td>
<td>Company Name</td>
<td>Subcontractor Name</td>
</tr>
<tr>
<td><select id="site_name"  name = "site_name">

<?php
$query_site_name =$wpdb->get_results ("select DISTINCT siteNAME  from site_info");
foreach($query_site_name as $site_name)
{
$site_name = (array)$site_name;
echo "<option value = '{".$site_name ['siteNAME']."}'>".  $site_name['siteNAME']."</option>";
}
?>

<!--create  dropdown list owner names-->
</select></td>

<td><select id="owner_name"  name ="owner_name">
<?php
$query_owner_name =$wpdb->get_results ("select DISTINCT ownerNAME  from owner_info");
foreach($query_owner_name as $owner_name)
{
$owner_name = (array)$owner_name;
echo "<option value = '{".$owner_name ['ownerNAME']."}'>".  $owner_name['ownerNAME']."</option>";
}
?>
</select></td>

<!--create  dropdown list Company names-->
</select></td>

<td><select id="Company_name"  name ="Company_name">
<?php
$query_Company_name =$wpdb->get_results ("select DISTINCT companyNAME  from company_info");
foreach($query_Company_name as $Company_name)
{
$Company_name = (array)$Company_name;
echo "<option value = '{".$Company_name ['companyNAME']."}'>".  $Company_name['companyNAME']."</option>";
}
?>
</select></td>

<!--create  dropdown list Subcontractor names-->
</select></td>

<td><select id="Subcontractor_name"  name ="Subcontractor_name">
<?php
$query_Subcontractor_name =$wpdb->get_results ("select DISTINCT subcontractorNAME  from subcontractor_info");
foreach($query_Subcontractor_name as $Subcontractor_name)
{
$Subcontractor_name = (array)$Subcontractor_name;
echo "<option value = '{".$Subcontractor_name ['subcontractorNAME']."}'>".  $Subcontractor_name['subcontractorNAME']."</option>";
}
?>
</select></td>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<input type ="submit" name="query_submit" value ="Search" />

</td>
</tr>

</table>
</form>

0

Решение

Вам нужны кавычки вокруг имени сайта, так как это строка:

where
site_info.siteNAME = '".$site_name."'

Но было бы лучше, если бы вы использовали подготовленный оператор вместо замены переменной в SQL, см. wpdb :: подготовить ().

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector