因此,我正在使用我的搜索引擎腳本,它運行良好。但我想添加功能來搜索同一列中的兩個選擇。例如,我希望搜索引擎爲用戶提供在安大略省和阿爾伯塔省獲得結果的能力。我的輸入表單允許用戶在同一字段中選中兩個框,但我的腳本僅搜索所選的第二個條件。PHP搜索功能....使用來自同一變量的兩個條件
這是搜索腳本。
<?php
require_once("models/config.php");
define("NUMBER_PER_PAGE", 5);
function pagination($current_page_number, $total_records_found, $query_string = null)
{
$page = 1;
echo "Page: ";
for ($total_pages = ($total_records_found/NUMBER_PER_PAGE); $total_pages > 0; $total_pages--)
{
if ($page != $current_page_number)
echo "<a href=\"?page=$page" . (($query_string) ? "&$query_string" : "") . "\">";
echo "$page ";
if ($page != $current_page_number)
echo "</a>";
$page++;
}
}
$page = ($_GET['page']) ? $_GET['page'] : 1;
$start = ($page-1) * NUMBER_PER_PAGE;
$personid = ($_POST['personid']) ? $_POST['personid'] : $_GET['personid'];
$firstname = ($_POST['firstname']) ? $_POST['firstname'] : $_GET['firstname'];
$surname = ($_POST['surname']) ? $_POST['surname'] : $_GET['surname'];
$address = ($_POST['address']) ? $_POST['address'] : $_GET['address'];
$city = ($_POST['city']) ? $_POST['city'] : $_GET['city'];
$province =($_POST['province']) ? $_POST['province'] : $_GET['province'];
$postalcode = ($_POST['postalcode']) ? $_POST['postalcode'] : $_GET['postalcode'];
$phone = ($_POST['phone']) ? $_POST['phone'] : $_GET['phone'];
$email = ($_POST['email']) ? $_POST['email'] : $_GET['email'];
$sql = "SELECT * FROM persons WHERE 1=1";
if ($personid)
$sql .= " AND personid='" . mysqli_real_escape_string($mysqli,$personid) . "'";
if ($firstname)
$sql .= " AND firstname='" . mysqli_real_escape_string($mysqli,$firstname) . "'";
if ($surname)
$sql .= " AND surname='" . mysqli_real_escape_string($mysqli,$surname) . "'";
if ($address)
$sql .= " AND address='" . mysqli_real_escape_string($mysqli,$address) . "'";
if ($city)
$sql .= " AND city='" . mysqli_real_escape_string($mysqli,$city) . "'";
if ($province)
$sql .= " AND province='" . mysqli_real_escape_string($mysqli,$province) . "'";
if ($postalcode)
$sql .= " AND postalcode='" . mysqli_real_escape_string($mysqli,$postalcode) . "'";
if ($phone)
$sql .= " AND phone='" . mysqli_real_escape_string($mysqli,$phone) . "'";
if ($email)
$sql .= " AND email='" . mysqli_real_escape_string($mysqli,$email) . "'";
$total_records = mysqli_num_rows(mysqli_query($mysqli,$sql));
$sql .= " ORDER BY surname";
$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;
pagination($page, $total_records, "personid=$personid&firstname=$firstname&surname=$surname&address=$address&city=$city&province=$province&postalcode=$postalcode&phone=phone&email=$email");
$loop = mysqli_query($mysqli,$sql)
or die ('cannot run the query because: ' . mysqli_error($mysqli,i));
echo "<table border='1' cellpadding='10'>";
echo "<tr> <th>First Name</th> <th>Surname</th> <th>Email</th> <th></th> <th></th></tr>";
while ($record = mysqli_fetch_assoc($loop)) {
echo "<tr>";
echo '<td>' . $record['firstname'] . '</td>';
echo '<td>' . $record['surname'] . '</td>';
echo '<td>' . $record['email'] . '</td>';
echo ("<td><a href=\"records.php?$record[personid]\">Edit</a></td>");
echo '<td><a href="delete.php?id=' . $record['personid'] . '">Delete</a></td>';
echo "</tr>";
}
echo "</table>";
echo "<center>" . number_format($total_records) . " search results found</center>";
pagination($page, $total_records, "personid=$personid&firstname=$firstname&surname=$surname&address=$address&city=$city&province=$province&postalcode=$postalcode&phone=phone&email=$email");
?>
如果你需要看看吧,這裏是我的腳本的一部分呼應出省作爲一個複選框列表(當然還有很多缺失的名單,但它只是給你一個想法)
<p><b>Province:</b>
<?
while ($row = mysqli_fetch_assoc($result)) {
echo "<input type='checkbox' name='province' value=' {$row['province']} '> {$row['province']} ";
}
?> </p><br />
關於如何使這項工作的任何想法?提前致謝。
如果您使用的是MySQLi,請使用BIND VARIABLES! –
您需要一個SQL語句,它會這樣說:WHERE city = Ontario或city = Alberta。如何從多個複選框中檢索值,請閱讀此處:http://stackoverflow.com/questions/4997252/get-post-from-multiple-checkboxes –
爲您的html表單,您可以使用啓用多個選擇的選擇輸入,或者我認爲您需要爲省份的每個複選框使用不同的「名稱」,例如province_1 province_2 – dboals