[英]How can I create a PHP Advanced Search using a simple HTML form with PHP and MySQL?
我希望我的用戶能夠從搜索表單中搜索多個條件。
這是HTML:
<form id="form_search" action="search.php" method="post">
<input class="search" type="text" name="search" placeholder="Search for a property for sell or rent" autocomplete="off">
<select name="min_val" class="control_option option_select min_val">
<option selected>Property Type</option>
<option>Homes for Sale</option>
<option>Homes to Let</option>
<option>Student Accomodation</option>
<option>Commercial</option>
<option>Land and Sites</option>
<option>Auctions</option>
<option>Agricultural</option>
</select>
<select name="max_val" class="control_option option_select max_val">
<option selected>Max Price</option>
<option>£25,000</option>
<option>£50,000</option>
<option>£100,000</option>
<option>£150,000</option>
<option>£200,000</option>
<option>£250,000</option>
<option>£300,000</option>
<option>£350,000</option>
<option>£400,000</option>
<option>£450,000</option>
<option>£500,000</option>
<option>£600,000+</option>
</select>
<select name="beds" class="control_option no_bed">
<option selected>Bedrooms</option>
<option>1 Bedroom</option>
<option>2 Bedrooms</option>
<option>3 Bedrooms</option>
<option>4 Bedrooms</option>
<option>4+ Bedrooms</option>
</select>
<input class="search_btn" name="search_button" type="submit" value="Search" />
</form>
我可以通過它搜索我的數據庫,但是讓我無法一次搜索多個對象而感到困惑。
這是PHP:
<?php
$search = $_GET['search'];
$terms = explode(" ", $search);
$query = "SELECT * FROM test WHERE";
foreach ($terms as $each) {
$i++;
if ($i == 1)
$query .= " keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}
if ($i == 1)
$query .= " price BETWEEN 0 AND '%$each%'";
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0) {
while ($row = mysql_fetch_array($query)) {
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$price = $row['price'];
$link = $row['link'];
echo "<h1>$title</h1><br />
$description<br />$price<hr />";
}
} else {
echo "<b>Sorry we found no properties matching '$search', please try another term.</b>";
}
mysql_close();
?>
這是關於如何進行的粗略想法。 有更好的方法來編寫此函數。
<?php
$search = $_GET['search'];
$min_val = $_GET['min_val'];
$max_val = $_GET['max_val'];
//$terms = explode(" ", $search);
$query = "SELECT * FROM test WHERE";
$init=1;
if (isset($search) ){
$query .= (($init==1)?'':' OR ')." keywords LIKE '%$each%' ";
$init=($init==1)?0:$init;
}
if (isset($min_val) ){
$query .= (($init==1)?'':' OR ')." price BETWEEN $min_val AND '$max_val' ";
$init=($init==1)?0:$init;
}
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0 ) {
while ($row = mysql_fetch_array($query)) {
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$price = $row['price'];
$link = $row['link'];
echo "<h1>$title</h1><br />
$description<br />$price<hr />";
}
} else {
echo "<b>Sorry we found no properties matching '$search', please try another term.</b>";
}
mysql_close();
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.