ďťż
Podstrony
|
telcocafeOtóż mam dwa zapytania:#------------ zapytanie dla tabeli artykułów ------------# $query = 'SELECT * FROM `'.prefix.'articles` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result = mysql_query($query); #------------ zapytanie dla tabeli newsów ---------------# $query_news = 'SELECT * FROM `'.prefix.'news` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result_news = mysql_query($query_news); #--------------------------------------------------------# Dla owych zapytań mam dwie pętle while. Jest to skrypt wyszukiwarki. Nie wiem tylko jak zrobić stronicowanie dla tych wyników... To co chciałbym: załóżmy, jest limit 11 wyników na stronę. Znaleziono stron 56, 32 artykułów i 24 newsów. No i najpierw są 2 strony z 11 artykułami i jedna z 10 i jednym newsem, kolejna z 11 newsami, kolejna z 11 i ostatnia z 1. To co mi wychodzi: na każdej stronie limit jest podwajany (bo dwa zapytania) czyli mam na stronie 22 wyniki, 11 artykułów i 11 newsów. Jak się skończą newsy to jest p o11 artykułów, w wyniku czego jest bałagan - wyniki nie są posortowane i ich ilość na stronie zdarza się być nierówna. Ktoś pomoże? :D połącz obie tabelki + dodaj kolumne "typ" niech przyjmuje ona warości "A" dka artykułu oraz "N" dla newsa Ale mam rozbudowany skrypt i będzie to niewygodne. Pomysł Bełdzia jest dobry ze względu na szybkość,mniejsze obciążenie itd. :) Ale IMO po co wyświetlać na jednej stronie aktualności i arty? Nie można na dwóch? Ilość nierówna . . . :) Logiczne, skoro artów jest więcej. A sortować możesz ORDER BY data dla przykładu . . . andrzeju, nie zrozumiales problemu. Dwa zapytania, dwie pętle i wychodzi sajgon. Masz stron 5 z limitem 11 i na dwóch 1 masz np. po 22 strony, pote masz np. 18 i na koniec dwie po 11. Ale IMO po co wyświetlać na jednej stronie aktualności i arty? Nie można na dwóch? np na potrzeby wyszukiwarki Ale mam rozbudowany skrypt i będzie to niewygodne. dlaczego? Ach,już rozumiem :) Policz liczbę znalezionych i dopełnij do liczby szukanych w drugiej pętli. To chyba jedyne korzystne rozwiązanie . . . pomijając pomysł Bełdzia. Bełdzio, a jak dorobię np. dział download? XD i będę chciał żeby tam szukało? To mam złączyć 3 tabelki? XD Andrzeju, jak mam to dopełnić? Co masz dokładniej na myśli? Użytkownik Isaac from Vale edytował ten post 11 sierpień 2007, 14:58 Hoho! Ja też bym miał niedługo podobny problem,ale widzę,że sam się rozwiąże :P Wracając do tematu. Pobierasz liczbę wyników pierwszej pętli i jeżeli jest mniejsza od 11 to w drugim zapytaniu zwiększasz ilość do 22 - ilość z pierwszego zapytania. Mam nadzieję,że o to chodzi oraz że uda się. Należy wziąć również pod uwagę to,że w drugim zapytaniu wyników będzie mniej niż 11. Ale na razie nie mam pomysłu,jak to rozwiązać . . . Mam pomysł na rozwiązanie ale nie wiem jak zastosować LEFT JOIN do tego zapytania: $query = 'SELECT * FROM `'.prefix.'articles` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; aby pobrało na tej zasadzie z tabel prefix.articles i prefix.news rekordy w których tytułach ALBO tekstach znajduje się wartość przypisana zmiennej $word. Bełdzio, a jak dorobię np. dział download? XD i będę chciał żeby tam szukało? To mam złączyć 3 tabelki? XD Andrzeju, jak mam to dopełnić? Co masz dokładniej na myśli? pewnie, że tak, wystarczy tylko odpowiednio zaprojektować bazę Czy da sie te zapytania: #------------ zapytanie dla tabeli artykułów ------------# $query = 'SELECT * FROM `'.prefix.'articles` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result = mysql_query($query); #------------ zapytanie dla tabeli newsów ---------------# $query_news = 'SELECT * FROM `'.prefix.'news` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result_news = mysql_query($query_news); #--------------------------------------------------------# Połączyć w jedno?? Tak,wystarczy wyciągać dane z dwóch tabel w jednym zapytaniu. To chyba podstawy relacji w bazie danych . . . Czy da sie te zapytania: #------------ zapytanie dla tabeli artykułów ------------# $query = 'SELECT * FROM `'.prefix.'articles` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result = mysql_query($query); #------------ zapytanie dla tabeli newsów ---------------# $query_news = 'SELECT * FROM `'.prefix.'news` WHERE `title` LIKE "%'.$word.'%" OR `text` LIKE "%'.$word.'%" LIMIT '.$start.', '.$limit.''; $result_news = mysql_query($query_news); #--------------------------------------------------------# Połączyć w jedno?? UNION SELECT Próbowałem, nie działa. A nie działa, bo w tabeli newsów jest 5 pól a w artykułach 6... jak usunąłem jedno pole z artykułów to zadziałało.. Użytkownik Isaac from Vale edytował ten post 11 sierpień 2007, 21:51 |
|||
Sitedesign by AltusUmbrae. |