![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Szukam gotowego skryptu wyszukiwarki. Mam taką tablicę:
nazwa polska||nazwa oryginalna||nazwa pliku||liczba płyt Chciałbym wyszukać tytuł filmu. Chodzi mi o 1. lub 2. kolumnę (nie obie razem). Proszę o pomoc doświadczonych programistów. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 227 Pomógł: 0 Dołączył: 13.06.2003 Skąd: rykowice Ostrzeżenie: (0%) ![]() ![]() |
to ci powinno pomoc
[php:1:8e125d1e4b]<?php $plik_tablica="engine/dane/tablica.txt"; $tablica=@file($plik_tablica); foreach ( $tablica as $k => $v ){ if (strpos($v, $szukaj) !== false){ $t = explode('|', $v); $z[] = $t[0] . " i " . $t[3] . "n"; } } echo ("Znalezione:<br />"); echo ( implode( "<br />", $z ) ); echo ( "<hr>" ); ?>[/php:1:8e125d1e4b] |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
No dobra, ale jak mam tego użyć? Chciałbym mieć wyszukiwarkę podobną do tej na napisy.biz. Tzn. chciałbym, żeby po wpisaniu jakiegoś wyrazu i wybraniu odpowiedniej kolumny (pierwsza lub druga), rozpoczęło się wyszukiwanie. Z tym, że chciałbym, aby był taki bajerek: jeżeli ktoś wpisze jakiś tekst i liczbę, liczba musi bezwzględnie znajdować się w wynikach.
Jako wynik chciałbym otrzymać tablicę podobną do źródłowej. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 227 Pomógł: 0 Dołączył: 13.06.2003 Skąd: rykowice Ostrzeżenie: (0%) ![]() ![]() |
nom to jest niewiecej taka wyszukiwarka
Małe objasnienie: $szukaj - szykany wyraz,mozesz go ukryc w urlu np. index.php?szukaj=szukany text $z[] = //tu sa generowane wyniki wyszukiwania// $t[0] to jest kolumna z ktorej ma byc wyswietlany wynik numerujesz sobie tak jak potrezbujesz np. t[1], t[7] itd. mozesz tam sobie wklepic tabele. Skrypt przeszukuje cała baze. tzn. wszystkie kolumny |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
W ostatnim poście opisałem, jak powinna wyglądać moja wyszukiwarka. Dlatego ta, którą mi opisałeś, niestety się nie nadaje.
W ostateczności może być bez tego bajeru z cyframi, ale jest niezbędne kierowanie wyszukiwania do określonej kolumny. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Heh... Czekałem na jakąś reakcję i pomoc... Ale cóż, może teraz się sprawdzicie...
Zrobiłem na początku taki skrypt: [php:1:f353466a96]<? for ($i=0; $i<sizeof($tablica); $i++) { $tym = strtolower($tablica[$i][$wg]); for ($in=0; $in<=strlen($tablica[$i][$wg]) - strlen($szuk); $in++) { if (substr($tym, $in, strlen($szuk)) == $szuk) $zn[] = $tablica[$i]; } } ?>[/php:1:f353466a96] ale uznałem, że raczej się nie nadaje. Chciałem spróbować napisać skrypt, który sprawdzałby po kolei każde wpisane słowo. [php:1:f353466a96]<? $szuk = strtolower($szuk); $trans = array('Ą' => 'ą', 'Ć' => 'ć', 'Ę' => 'ę', 'Ł' => 'ł', 'Ń' => 'ń', 'Ó' => 'ó', 'Ś' => 'ś', 'Ż' => 'ż', 'Ź' => 'ź'); $szuk = strtr($szuk, $trans); echo "$szuk <br><br>"; $szuk = explode(' ', $szuk); for($liczba_slow=1; !isset($zn); $liczba_slow++) { $jest = 0; for($i=0; $i<sizeof($tablica); $i++) { $tym = strtolower($tablica[$i][$wg]); $tym = strtr($tym, $trans); $tym = explode(' ', $tym); // Wybranie kolejnego slowa for ($ii=0; $ii<sizeof($szuk); $ii++) { // Sprawdzanie, czy aktualne slowo wystepuje w stringu for($iii=0; $iii<sizeof($tym); $iii++) { if ($szuk[$ii] == $tym[$iii]) $jest++; } } if($jest == $liczba_slow) $zn[] = $tablica[$i]; } } ?>[/php:1:f353466a96] Ale niestety coś pokręciłem... Bardzo proszę o pomoc... |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Oto kod mojego skryptu:
[php:1:8b73e66e20]<? $szuk = strtolower($szuk); $trans = array('Ą' => 'ą', 'Ć' => 'ć', 'Ę' => 'ę', 'Ł' => 'ł', 'Ń' => 'ń', 'Ó' => 'ó', 'Ś' => 'ś', 'Ż' => 'ż', 'Ź' => 'ź'); $szuk = strtr($szuk, $trans); $szuk = explode(' ', $szuk); for ($liczba_slow=sizeof($szuk); !isset($zn) && $liczba_slow>0; $liczba_slow--) { // Wybieramy nastepny wiersz for ($i=0; $i<sizeof($tablica); $i++) { $jest = 0; $tym = strtolower($tablica[$i][$wg]); // Wybieramy nastepne slowo for ($slowo=0; $slowo<sizeof($szuk); $slowo++) { // Sprawdzenie, czy slowo znajduje sie w aktualnym elemencie for ($in=0; $in<=strlen($tablica[$i][$wg]) - strlen($szuk[$slowo]); $in++) { if (substr($tym, $in, strlen($szuk[$slowo])) == $szuk[$slowo]) $jest++; } } if ($jest == $liczba_slow) $zn[] = $tablica[$i]; } } ?>[/php:1:8b73e66e20] W tej chwili działa on już bardzo dobrze. Ma w sobie jednak błąd. Mianowicie wyszukując któreś słowo ($szuk), robi to dwa razy. Niby mało ważne, ale na przykład wpisując "Człowiek ze" chcemy odnaleźć "Człowiek ze złotym pistoletem", a wyskakuje nam również "Oszukać przeznaczenie", bo ma w sobie dwa razy 'ze'. Ludzie, pomóżcie :!: |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Trudno, olaliście mnie
![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 1 Dołączył: 29.07.2003 Ostrzeżenie: (10%) ![]() ![]() |
Nagadaleś się nagadałeś i sam znalazleś rozwiązanie....
![]() -------------------- Zbiór najlepszych technologicznych artykułów (programowanie, internet, linux)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 23:46 |