У меня проблемы с составлением сценария, который перечисляет различную информацию о деловых контактах.
Как правило, пользователь может либо ввести название компании, либо выбрать из набора или категорий, а затем нажать кнопку отправки, после чего начинается поиск результатов, хранящихся в базе данных mysql. Эта часть работает нормально, так как пользователь может ввести имя или выбрать категорию, а затем нажать кнопку, чтобы просмотреть таблицу с результатами поиска. Эти результаты разбиты на наборы по 6.
Вот код для разметки формы:
$pageContent = '
<div class="content">
<h1>Browse Listings</h1>
<div class="searchBox">
<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="search">
Enter a Business Name: <input name="bizName" type="text" size="25" placeholder="Search..." />
or Select a Category: <select name="bizCategory">
<option>Choose</option>
<option>Accomodation</option>
<option>Retail</option>
</select>
<button type="submit" name="searching" class="search" value="Search">Search</button>
<!-- end .searchBox --></div>
<br />
';
Вот код, который касается случая, когда пользователь нажимает на Search
, когда он вводит имя:
if ((isset($_POST['searching']) && $_POST['searching'] == "Search") || isset($_SESSION['bizFind']))
{
if ((isset($_POST['bizName']) && $_POST['bizName'] == "") && $_POST['bizCategory'] == "Choose")
{
$pageContent .= '
<p>You forgot to enter a business name, or select a search category.</p>
';
} else {
...
if (((isset($_POST['bizName']) && $_POST['bizName'] !== "") && $_POST['bizCategory'] == "Choose") || (isset($_SESSION['bizFind']) && !in_array($_SESSION['bizFind'], array("", "Accomodation", "Retail"))))
{
if ((isset($_SESSION['bizFind']) && !in_array($_SESSION['bizFind'], array("", "Accomodation", "Retail"))) && !isset($bizFind))
{
$bizFind = $_SESSION['bizFind'];
}
else
{
$bizFind = $_POST['bizName'];
}
С акцентом на этой строке, являющейся фактическим экземпляром:
if (((isset($_POST['bizName']) && $_POST['bizName'] !== "") && $_POST['bizCategory'] == "Choose") || (isset($_SESSION['bizFind']) && !in_array($_SESSION['bizFind'], array("", "Accomodation", "Retail"))))
Теперь, когда пользователь уходит со страницы и возвращается назад, значение поиска сохраняется и отображаются результаты.
Но по какой-то причине я не могу понять заявление пользователя, нажимающего Search
после выбора категории.
Я пробовал это:
if ((isset($_POST['bizCategory']) && $_POST['bizCategory'] !== "Choose") || (isset($_SESSION['bizFind']) && ($_SESSION['bizFind'] == "Accomodation" || $_SESSION['bizFind'] == "Retail"))
{
if ((isset($_SESSION['bizFind']) && ($_SESSION['bizFind'] == "Accomodation" || $_SESSION['bizFind'] == "Retail")) && !isset($bizFind))
{
$bizFind = $_SESSION['bizFind'];
}
else
{
$bizFind = $_POST['bizCategory'];
}
Это сработает, если выбрана категория, и пользователь нажмет Search
, но не сработает, если была установлена переменная сеанса, и пользователь вернулся обратно в область списка.
Это также приводит к проблеме с подкачкой, когда выбрана категория поиска.
Если используется название компании, подкачка работает нормально, но когда выбрана категория и пользователь пытается перейти к следующей странице результатов, данные не возвращаются, так как переменная $bizFind
(строка поиска) имеет не был установлен или не имеет значения.
Если у кого-то есть какие-либо предложения или предложения для меня, это ... было бы очень признательно.
Но вопрос в том, что я делаю не так со вторым экземпляром, что сценарий не запускается только наличием переменной сеанса (строки поиска).
Спасибо !!