Поиск по нескольким столбцам, затем найденные определенные столбцы - PullRequest
0 голосов
/ 30 мая 2019

Моя база данных 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, я мог бы использовать это в списке;однако, если существует более одного имени, которое соответствует поиску в одной записи, это все еще может быть проблемой, поскольку я хотел бы перечислить все эти имена.

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...