Моя база данных MySQL группирует имена пассажиров в транспортных средствах, участвующих в "событии".До 46 пар «имя / фамилия» могут быть распределены среди 5 автомобилей в одном событии (сгруппированы как максимум 2 в автомобиле 1, 2 в автомобиле 2, 4 в автомобиле 3, 8 в автомобиле 4 и 30 в автомобиле 5),Я могу выполнить поиск по всем 46 именам и вернуть идентификатор строки для каждого успешного поиска.Затем я хочу отобразить список гиперссылок этих успешных поисков, чтобы пользователь мог щелкнуть и просмотреть всю запись;однако для того, чтобы они выбрали интересующую строку, мне нужно показать пару имен, из-за которой их поиск соответствовал.Прямо сейчас, поскольку существует 46 столбцов для фамилий и 46 столбцов для имен, в этом списке содержится только первая ненулевая пара имя / фамилия в записи.Таким образом, в нем перечислены пассажиры 1 в транспортном средстве 1 (независимо от того, совпадали они или нет), а не пассажиры 4 и 8 из транспортных средств 2 и 3 (которые соответствовали поиску и были в одной записи).Все они в одной записи, потому что у них есть общее повествование о событии, в котором они все участвовали.
Мне удалось создать нумерованный список всех записей, которые найдет поиск, и создал гиперссылку длядата события.Затем я попытался отобразить дополнительные столбцы после этой гиперссылки, чтобы идентифицировать соответствующие имена, чтобы пользователь знал, какая ссылка наиболее вероятна.Как я уже упоминал, он возвращает только пару имен в этой записи, а не пару имен, найденную при поиске.Конечно, если вы нажмете на гиперссылку, вы получите все в этой записи, но это на страницу позже, чем там, где моя проблема.Я признаю, что цикл проходит каждую запись только один раз, чтобы создать идентификатор строки, но я не знаю, как еще сделать эту часть, если это то, где она должна быть отредактирована.Или в запросе, который состоит из нескольких итераций этого:
WHERE ((firstname1_1 IS NOT NULL and firstname1_1 LIKE '%$firstname%') AND (lastname1_1 IS NOT NULL and lastname1_1 LIKE '%$lastname%'))
OR ((firstname2_1 IS NOT NULL and firstname2_1 LIKE '%$firstname%') AND (lastname2_1 IS NOT NULL and lastname2_1 LIKE '%$lastname%'))
Вот несколько строк кода.В разделе «Ссылка на список» должно быть 46 пар имен, сгруппированных в 5 транспортных средств, но я сократил их здесь.
// Loop the recordset $result
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
// Lists results with the date being a hyperlink
$strName = $row['day_value'] . " " . $row['month_value'] . " " . $row['year_value'];
// Create a link to loss.php with the id-value in the URL
$strLink = "<a href = 'loss.php?id=" . $row['id'] . "'>" . $strName . "</a>";
// List link; this outputs the first lastname of a record in the results
// array, rather than the lastname that was searched for, so that's the
// problem.
print "<ol style='text-align: left;'>";
if(!empty('lastname1_1'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title1_1']}" . " ". "{$row['firstname1_1']}" . " " . "{$row['lastname1_1']}," . " " . "{$row['injury1_1']}" . " " . "{$row['vehicle1']}" . "</li>";
elseif(!empty('lastname2_1'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title2_1']}" . " ". "{$row['firstname2_1']}" . " " . "{$row['lastname2_1']}," . " " . "{$row['injury2_1']}" . " " . "{$row['vehicle1']}" . "</li>";
elseif(!empty('lastname1_2'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title1_2']}" . " ". "{$row['firstname1_2']}" . " " . "{$row['lastname1_2']}," . " " . "{$row['injury1_2']}" . " " . "{$row['vehicle2']}" . "</li>";
elseif(!empty('lastname2_2'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title2_2']}" . " ". "{$row['firstname2_2']}" . " " . "{$row['lastname2_2']}," . " " . "{$row['injury2_2']}" . " " . "{$row['vehicle2']}" . "</li>";
elseif(!empty('lastname1_3'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title1_3']}" . " ". "{$row['firstname1_3']}" . " " . "{$row['lastname1_3']}," . " " . "{$row['injury1_3']}" . " " . "{$row['vehicle3']}" . "</li>";
elseif(!empty('lastname2_3'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title2_3']}" . " ". "{$row['firstname2_3']}" . " " . "{$row['lastname2_3']}," . " " . "{$row['injury2_3']}" . " " . "{$row['vehicle3']}" . "</li>";
elseif(!empty('lastname3_3'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title3_3']}" . " ". "{$row['firstname3_3']}" . " " . "{$row['lastname3_3']}," . " " . "{$row['injury3_3']}" . " " . "{$row['vehicle3']}" . "</li>";
elseif(!empty('lastname4_3'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title4_3']}" . " ". "{$row['firstname4_3']}" . " " . "{$row['lastname4_3']}," . " " . "{$row['injury4_3']}" . " " . "{$row['vehicle3']}" . "</li>";
elseif(!empty('lastname1_4'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title1_4']}" . " ". "{$row['firstname1_4']}" . " " . "{$row['lastname1_4']}," . " " . "{$row['injury1_4']}" . " " . "{$row['vehicle4']}" . "</li>";
elseif(!empty('lastname2_4'))
echo "<li style='font-weight:bold;font-size:14; width: 50%; margin-left: auto; margin-right: auto;'>" . $strLink . ": " . "{$row['title2_4']}" . " ". "{$row['firstname2_4']}" . " " . "{$row['lastname2_4']}," . " " . "{$row['injury2_4']}" . " " . "{$row['vehicle4']}" . "</li>";
print "</ol";
}
}
// Close the database connection
mysqli_close($connect);
}
Я прошел несколько десятков итераций, пытаясь найти способ сделатьэто работает.
Я думаю, в идеале, если бы MySQL "LIKE", сравнимый с PHP, я мог бы использовать это в списке;однако, если существует более одного имени, которое соответствует поиску в одной записи, это все еще может быть проблемой, поскольку я хотел бы перечислить все эти имена.
Любая помощь будет принята с благодарностью.