Я работаю над сайтом автосалона. Этот дилерский центр использует стороннее настольное приложение для управления запасами и автомобилями, выставленными на продажу. Это стороннее приложение сохраняет данные об автомобиле в базе данных Access (.mdb). Я успешно подключаюсь к этой базе данных, а также просматриваю отдельные записи и так далее. Все отлично до этого момента.
Последняя часть головоломки — расширенные критерии поиска. Этот критерий поиска имеет шесть входных параметров; бренд, модель (входные данные бренда и модели являются текстовыми, и они также представляют собой каскадные выпадающие списки с использованием AJAX), филиал, год (текст), минимальная цена и максимальная цена (два входных значения цены имеют числовой тип данных в базе данных).
Пользователи, скорее всего, не будут использовать все доступные входные данные, потому что чаще всего это не даст им никаких результатов.
Также, если после всего этого поиск работает, и кто-то что-то ищет, но этого чего-то нет в базе данных, должно появиться сообщение, информирующее пользователя о том, что запрошенный автомобиль в данный момент недоступен. Как бы я поступил, чтобы сделать что-то подобное?
Вот мой код до сих пор.
<?php
$dbName = "F:/Domains/autodeal/autodeal.co.za/wwwroot/newsite/db/savvyautoweb.mdb";
// Throws an error if the database cannot be found
if (!file_exists($dbName)) {
die("Could not find database file.");
}
// Connects to the database
// Assumes there is no username or password
$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", '', '');
if (isset($_REQUEST['submit'])) {
$searchMake = addslashes($_POST['makeSelection']);
$searchModel = addslashes($_POST['modelSelection']);
$searchBranch = addslashes($_POST['branchSelection']);
$searchYear = addslashes($_POST['yearSelection']);
$minPrice = addslashes($_POST['minPriceSelection']);
$maxPrice = addslashes($_POST['maxPriceSelection']);
$sql = "SELECT Id, Make, Model, Year, Price, SpecialPrice, Branch, StockNO FROM Vehicle WHERE Price BETWEEN $minPrice AND $maxPrice AND Make LIKE '$searchMake' AND Model LIKE '$searchModel' AND Year LIKE '$searchYear' AND Branch LIKE '$searchBranch'";
$rs = odbc_exec($conn, $sql);
//} else {
//$sql = "SELECT Id, Make, Model, Year, Price, SpecialPrice, Branch, StockNO FROM Vehicle ORDER BY Make";
//$rs = odbc_exec($conn, $sql) or die (odbc_errormsg());
}
echo "\t" . "<tr>\n";
echo "\t" . "<th>Make</th><th>Model</th><th>Year</th><th>Price</th><th>Special Price</th><th>Location</th><th>Stock Number</th>" . "\n";
while (odbc_fetch_row($rs)) {
$id = odbc_result($rs, Id);
$make = odbc_result($rs, Make);
$model = odbc_result($rs, Model);
$year = odbc_result($rs, Year);
$price = odbc_result($rs, Price);
$specialPrice = odbc_result($rs, SpecialPrice);
$branch = odbc_result($rs, Branch);
$stockNo = odbc_result($rs, StockNO);
echo "\t" . "<tr>\n";
echo "\t\t" . "<td>" . $make . "</td><td><a href=/newsite/selected-vehicles?Id=$id>" . $model . "</a></td><td>" . $year . "</td><td>" . $price . "</td><td>" . $specialPrice . "</td><td>" . $branch . "</td><td>" . $stockNo . "</td>\n";
echo "\t" . "</tr>\n";
}
odbc_free_result($rs);
odbc_close($conn);
// This message is displayed if the query has an error in it
if (!$rs) {
exit("There is an error in the SQL!");
}
?>
Как сделать, чтобы сообщение появилось?
РЕДАКТИРОВАТЬ: теперь запрос работает и отображает полученные результаты на основе сделанных выборов, но все выборы должны быть сделаны, иначе он ничего не отображает.
Пожалуйста, имейте в виду, что марка ДОЛЖНА быть выбрана. Это не могут быть все бренды. В противном случае вы можете просто просмотреть всю таблицу.
Как я могу структурировать приведенный выше запрос, чтобы в качестве допустимых вариантов были «все модели», «любая ветвь», «любой год» и «любая цена»?
echo "\n\n$sql\n\n";
. Можете ли вы добавить это к своему вопросу? - person bobkingof12vs   schedule 04.04.2014$sql
после того, как вы создадите свой запрос. Можете ли вы опубликовать результатecho "\n\n$sql\n\n"
при запуске кода? Извините, если я не понимаю - person bobkingof12vs   schedule 04.04.2014SELECT Id, Make, Model, Year, Price, SpecialPrice, Branch, StockNO FROM Vehicle WHERE Price >= 50000 AND Price <= 900000 AND Make LIKE 'searchMake' AND Model LIKE 'searchModel' AND Branch LIKE 'EAST_RAND' AND Year LIKE '2011'
- person Deon   schedule 04.04.2014