Witam,
Mam wyszukiwarkę na stronie (no jeszcze nie mam bo nie działa tak jak chce). Przeszukuje zasoby w mojej bazie danych. No i generalnie wszystko ładnie pięknie, tylko że bardzo często zwraca zduplikowane wyniki co w cale mnie nie dziwi patrząc na kod.
Mechanika działania skryptu:
1. Jest pole imput do którego wprowadzam frazę zapytania
2. Jeżeli jest to fraza składająca się z kilku wyrazów rozbiją ją explodem
3. Następnie każde słowo przeszukiwane jest w dwóch różnych kolumnach
4. Pobieram i wyświetlam wyniki
Problem jest taki że mam dwie różne tabele w bazie i przy złożonym zapytaniu skrypt zwraca mi wielokrotnie ten sam rekord. Np. Jest kolumna1, która zawiera frazę "to jest" a w kolumna2 jest fraza "test". I jak wpiszę w wyszukiwarkę frazę "to jest test" to skrypt zwróci mi to 3 razy "to jest test", a chciałbym uzyskać tylko jeden lub wiele rekord, ale nie zduplikowanych. Poniżej kod. Mam nadzieję że wyjaśniłem problem w najbardziej zrozumiały sposób.
$search = $_POST['search'];
$search_value = explode(" ",$search);
$ile = count($search_value);
for ($i=0; $i<$ile; $i++)
{
require_once 'database.php';
$s='%'.$search_value[$i].'%';
$sql=$db->prepare('SELECT * FROM tabela1, tabela2 WHERE kolumna1 z tabeli2 LIKE :search OR kolumna2 z tabeli2 LIKE :search2 AND tabela1.id=tabela2.id');
$sql->bindValue('search', $s, PDO::PARAM_STR);
$sql->bindValue('search2', $s, PDO::PARAM_STR);
$sql->execute();
$fetch=$sql->fetchAll();
$rowcount=$sql->rowCount();
if($rowcount<1)
{
echo 'Brak wyników dla: '. $search;
}
foreach($fetch as $wiersz)
{
echo 'ID przepisu: '.$wiersz['id z tabeli1'].' '.$wiersz['wartosc kolumny1 z tabeli2'].'<br>';
}