Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP,MySQL]Wyszukiwarka wielowątkowa., pewien problem
Greg0
post
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Witam tworzę wyszukiwarkę na stronę, która sprawdza zawartość w dwóch tabelach i podaje wyniki w dwóch pętlach jedną odpowiedzialną za jedną baze i w drugiej za drugą bazę. W internecie znalazłem sposób na stronicowanie wyników ale nie potrafię ich zastosować w tym skrypcie. Zlicza ona całość wyników i dzieli je na strony w określonej ilości. Problemu nie ma gdy szukana fraza znajduje się w jednej tabeli bo ładnie wtedy stronicuje. Pojawia się gdy fraza znajdzie się w dwóch tabelach wtedy rekordy wyświetla mi po np. 5 z jednej tabeli i po 5 z drugiej tabeli. Myślałem, że możnaby było zrobić jakąś  funkcję obliczeniową która zwracała by mi limit dla każdego zapytania tak aby wyświetlić w sumie 5 rekordów z obydwu tabel na stronę.

zamieszczam kod

  1.  
  2.  
  3. //polaczenie i zdefiniowanie PREFIX oraz zdefiniowanie funkcji porcjowanie
  4.  
  5. $porcjowanie=porcjowanie($aktualnie, $licz[0], $na_stronie, "?site=search&search=$_SESSION[search]&", "");
  6. echo "<div id=porcjowanie>$porcjowanie</div>";
  7.  
  8. $t_search = $_GET['search'];
  9. $results = Array();
  10. $tables=array('films', 'serials');
  11. foreach($tables as $table) {
  12. if($table=="films"){
  13. $ergebnis=mysql_query("SELECT * FROM ".PREFIX."films WHERE ( `film_tytul` LIKE '%$t_search%' OR film_tags LIKE '%$t_search%' ) ORDER BY film_id LIMIT $aktualnie, $na_stronie");
  14. }
  15. elseif($table=="serials") {
  16. $ergebnis= mysql_query("SELECT * FROM ".PREFIX."serials, ".PREFIX."serials_cat WHERE ( s_tytul LIKE '%$t_search%' OR s_tags LIKE '%$t_search%') AND s_scid=scat_id ORDER BY s_id LIMIT $aktualnie, $na_stronie");
  17. }
  18. while($ds=mysql_fetch_array($ergebnis)) {
  19. if($table=="films") {
  20.   echo $ds[film_tytul];
  21. }
  22. if($table=="serials") {
  23.   echo $ds[s_tytul];
  24. }
  25.  
  26. }
  27. }



Małe objaśnienie 

$licz[0] - zawiera ilość rekordów w sumie z obydwu tabel

$na_stronie - ilość rekordów wyśw. na stronie

Przykład działania w obecnej chwili:

wyszukuję frazę "miecz"

1. gdy fraza zostanie znaleziona tylko w tabeli films znajdzie np. 7 filmów "ogniem i mieczem" i wyświetli 5 na pierwszej stronie i 2 na drugiej

2. Gdy fraza zostanie znaleziona w obu tabelach znajdzie 7 filmów "ogniem i mieczem" i 6 seriali "wiedźmin", zatem wyświetli  5 "ogni" i 5 "wiedźminów" na pierwszej oraz 2 "ognie" i 1 "wiedźmin" na 2 stronie.




A w drugim przypadku chciałbym aby wyświetlało 5 ogni na pierwszej 2 ognie na drugiej i 3 wiedźminy na drugiej oraz 2 wiedźminy na trzeciej. Może być też w innej kombinacji ale mam nadzieję że opisałem zrozumiale zasadę działania.

Ten post edytował Greg0 25.09.2009, 18:13:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:10