1

PHP で高度な検索オプションを作成したいと思います。ドロップダウン ボックスとラジオ ボタンに基づいて値を取得しています。そもそもリストボックスやラジオボタンから値を取得する方法など、これらに基づいてクエリを生成する方法を知りたいです。2 つ目は、クエリに複数の変数を含める方法、またはクエリを完全に空白のままにする方法を知りたいということです。

例: (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>
4

1 に答える 1

0

ある種のクエリにまとめる必要があります。何を使用しているかはわかりませんが、単純な 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;

次に、クエリを実行します。私の最高の仕事ではありませんが、必要に応じて変更できます。

于 2013-03-14T14:35:42.557 に答える