php - PHP 中的高级搜索选项

标签 php javascript mysql html

我想在 PHP 中创建高级搜索选项。我正在检索基于下拉框和单选按钮的值。我想知道如何基于这些生成查询,例如如何首先从列表框和单选按钮获取值。第二件事是我想知道如何在查询中包含多个变量或将查询完全留空。

例如: 我应该按包含(R、Mahout、Storm、Python、Splunk)的组件类型进行过滤 组件域(电信、公用事业、零售、BFSI、旅游、医疗保健) 使用权(知识产权,无权利) 然后是杂项值,如按字母顺序排序、按版本排序等。

问题是可以从组件域和组件类型中选择多个值。或者它可以留空。我如何根据选择的内容进行搜索?如果有多个值,我该如何相应地修改我对 php 的查询?

我已经粘贴了下面的代码:你能指导我至少给我一个关于如何生成组件类型查询并为其生成多个值的示例查询吗

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("cerebra", $con);
$sql="select name from details";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
$query=mysql_query($sql,$con);
$names=array();
$index=0;
while($row=mysql_fetch_array($query)){
    $names[$index]=$row[0];
    $index++;

}

?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    var availableTags = <?php echo json_encode($names); ?>;
    $( "#search" ).autocomplete({
      source: availableTags
    });
  });
  </script>
<style type="text/css">

.basictab{
padding: 3px 0;
margin-left: 0;
font: bold 16px Sans-serif;
border-bottom: 1px solid black;
list-style-type: none;
text-align: left; /*set to left, center, or right to align the menu as desired*/
}

.basictab li{
display: inline;
margin: 0;
}
.basictab li a{
    text-decoration: none;
    padding: 3px 7px;
    margin-right: 3px;
    border: 1px solid gray;
    border-bottom: none;
    background-color: #FFFFFF;
    color: #2d2b2b;
}

.basictab li a:visited{
    color: #00F;
}

.basictab li a:hover{
color: #C60;
}

.basictab li a:active{
color: black;
}

.basictab a:selected{ /*selected tab effect*/
position: relative;
top: 1px;
padding-top: 4px;
background-color: #DBFF6C;
color: #06F;
}
fieldset{

  padding: 1em;
  font:90%/1 Verdana, Geneva, sans-serif;
  }

</style>
<script>
function view(){
    document.getElementById("view").style.display="";
}
function auth(){
    var pwd=prompt("Enter the password:","Password")
}
function hide(){
    document.getElementById("view").style.diplay="none";}
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="jquery.multiselect.css" />
<link rel="stylesheet" type="text/css" href="assets/style.css" />
<!--<link rel="stylesheet" type="text/css" href="assets/prettify.css" />-->
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<!--<script type="text/javascript" src="assets/prettify.js"></script>-->
<script type="text/javascript" src="src/jquery.multiselect.js"></script>

<script type="text/javascript">
$(function(){
    $("select").multiselect();
});
</script>
</head>

<body onload="hide(); prettyPrint();" id="test" >
<div><h1 style="font-family:Geneva, sans-serif; color:#036">Component Registry</h1></div>
<div id=tab>
<ul class="basictab">
<li><a href="search.php">SEARCH</a></li>
<li><a href="add.php">ADD</a></li>
</ul>
</div>

<div>
<form id="form1" name="form1" method="post" action="">
  <p>
    <label for="search"></label>
    <input type="text" name="search" id="search" />
    <a id=2 href="#" onclick="view()">Search</a>
  </p>
  <fieldset>
  <legend>Filter by:</legend>
  <div id=1>
  <table><tr><td><p>
    <label>Component Type:</label></td>
    <td><select title="Basic example" multiple="multiple" name="example-basic" size="5">
    <option value="option1">Sgoop</option>
    <option value="option2">Monet</option>
    <option value="option3">Hive</option>
    <option value="option4">Mahout</option>
    <option value="option5">R</option>
    <option value="option6">Storm</option>
    <option value="option7">Flume</option>
    <option value="option8">Solr</option>
    <option value="option9">Python</option>
    <option value="option10">Splunk</option>
    <option value="option11">Ruby</option>
    <option value="option12">perl</option>
    </select>
  </p></td></tr>
 <tr><td><p>
    <label>Component Domain:</label></td>

    <td><select title="Basic example" multiple="multiple" name="examplebasic2" size="5">
    <option value="Telecom">Telecom</option>
    <option value="Utility">Utility</option>
    <option value="BFSI">BFSI</option>
    <option value="Travel">Travel</option>
    <option value="Health Care">Health Care</option>
    <option value="Retail">Retail</option>
    <option value="Technology">Technology</option>
    <option value="Government">Government</option>
    <option value="Manufacturing">Manufacturing</option>
    <option value="Education">Education</option>
    </select></td></tr>
  <tr><td><p>Usage Rights:</td>
    <td><input type="radio" name="radio2" id="right" value="right" />
    <label for="right">Intellectual Property</label>
    <input type="radio" name="radio2" id="right2" value="right2" />
    <label for="right2">No rights reserved</label>
  </p></td></tr>
  <tr><td><p>Miscellaneous:</td> 
    <td><input type="radio" name="radio3" id="misc" value="misc" />
    <label for="misc">Sort Alphabetically</label>
    <input type="radio" name="radio3" id="misc2" value="misc" />
    <label for="misc2">Sort by Upload date</label>
    <input type="radio" name="radio3" id="misc3" value="misc3" />
    <label for="misc3">Sort by Versions</label>
  </p></td></tr>
  </table> </div></fieldset>
  <div id="view" style="display:none">
  <table width="457" border="1" align="center">
    <tr>
      <td width="117">Component Name</td>
      <td width="59">Type</td>
      <td width="60">Domain</td>
      <td width="56">Rights</td>
      <td width="72">Download</td>
      <td width="53">Delete</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input type="radio" name="radio" id="12" value="1"  />
      <label for="12"></label></td>
      <td><input type="radio" name="radio" id="122" value="1"  /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input type="radio" name="radio" id="2" value="2 />
      <label for="2"></label></td>
      <td><input type="radio" name="radio" id="123" value="1" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input type="submit" name="1" id="13" value="Download" /></td>
      <td><input type="submit" name="13" id="132" value="Delete" onclick="auth()" /></td>
    </tr>

  </table>
  </div>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>
</body>
</html>

最佳答案

您应该在某种查询中将它们放在一起。我不知道你在用什么,但假设它是一个简单的 MySQL 语句,我会做这样的事情

$component_domain = isset($_GET['component_domain']) ? ' AND component_domain = '.$_GET['component_domain'] : '';
$component_type = isset($_GET['component_type']) ? ' AND component_type = '.$_GET['component_type'] : '';
$sort = isset($_GET['sort']) ? ' SORT BY '.$_GET['sort'].' '.$_GET['sort_direction'] : '';
$stmt = 'SELECT * FROM table WHERE something = "somevalue"'.$component_domain.$component_type.$sort;

然后运行您的查询。不是我最好的作品,但您可以根据需要对其进行修改。

关于php - PHP 中的高级搜索选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410179/

相关文章:

php - 在 password_hash 值上使用准备好的语句有什么意义吗?

javascript - Apple.com 热门新闻头条

javascript - jqBootstrapValidation 不工作,总是返回有效值;

javascript - 如何将毫秒转换为日期和时间?

mysql - "undefined method ` 接受 ' for nil:NilClass"

php - 在php中设置新用户后无法访问我的网页

javascript - 向下滚动页面加载的最佳方式

mysql - 订单数量最多的返回客户编号

php - preg_replace 在标点符号前后添加空格

mysql 按 bigint 和主键(id)分区