Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka - validate() current() next()
Forum PHP.pl > Forum > PHP
pr0woKator
Witam,

Nie mogę poradzić sobie potdczas tworzenia wyszukiwarki dla mojego serwisu - ma to być dynamicznie wyszukiwana treść po nazwie -

Używam takiego kodu

  1.  
  2.  
  3. $result = $db->query("SELECT * FROM suple WHERE nazwa LIKE '%$q%';");
  4. while ($result->valid()) {
  5. $row = $result->current();
  6. echo $row['nazwa']."\n";
  7. $result->next();
  8. }


Zwraca mi to taki błąd:

Fatal error: Call to undefined method mysqli_result::valid() in C:\xampp\htdocs\xampp\s\search.php on line 10

Kopletnie nie wime jak sobie z tym poradzić - tym bardziej, że demo osoby która opisała tutka działa.

Tutaj cały artykuł z którego brałem rozwiązanie:

http://dev.baczyk.net/2009/12/24/jquery-au...ne-podpowiedzi/
jaslanin
bo autor skryptu nie używa bazy danych mySQL tylko SQLite

musisz przerobić kod tak by był zgodny z klasą dostępową do bazy danych
pr0woKator
hmm... jakieś propozycje? Próbowałem na różne spodoby i nic nie daje porządanego efektu :/
no_face
Jezeli uzywasz MySQLi to mozesz posluzyc sie takim rozwiazaniem:

  1. $db = new mysqli('host', 'user', 'pass', 'baza', 'ew. port');
  2. $result = $db->query("SELECT * FROM `suple` WHERE `nazwa` LIKE '%" . $q . "%';");
  3. if ($result->num_rows > 0)
  4. {
  5. while ($row = $result->fetch_object())
  6. {
  7. echo $row->nazwa . "\r\n";
  8. }
  9. }
  10. else
  11. {
  12. echo 'brak wynikow';
  13. }
pr0woKator
Wszystko fajnie działa, tylko teraz jest problem, bo skrypt nie kasuje tych wyników które kompletnie nie pasują do wyszukiwanych(po wpisaniu kolejnych literek).

Jednak wszystko ładznie działa.
no_face
To juz nie problem zapytania, pokaz wiecej kodu.
pr0woKator
Wyświela się to wszytko ładnie pięknie, problem jest taki że chcę zorobić te podpowiedzi jako bezpośredni link do danego produktu,

W mojej pętli dodałem link: ale zamist przekierowywać na niego, całość dodaje się do imputa w którym wpisuję szukaną frazę..

  1. while ($row = $result->fetch_object())
  2. {
  3. echo "<a href='jakis-link.html'>". $row->nazwa . "</a>\r\n";
  4. }


Próbuję odnaleźć się w tym js, ale to jest dla mnie czarna magia...

I ew. można przekazać link jako $row[1], i z poziomu js go wyświetlić, ale też nie bardzo wiem jak to zrobić.
no_face
Dzieje sie tak z pewnoscia z uwagi na to, ze kazdy element podpowiadany ma zdarzenie onclick, ktore wywoluje przepisanie wartosci do inputa. Mozesz przy tym pogrzebac lub zastosowac zasade, ze wlasnie calosc zostaje umieszczona w inpucie po czym jeszcze doprogramujesz submita i od razu po kliknieciu zostanie wyszukany produkt. Jezeli bedzie on posiadal oryginalna nazwe i bedzie jedyny taki w bazie wyswietlisz od razu strone produktu, jezeli jednak bedzie pasowac wiecej, to wyswietli sie lista.

Jak mamy cos dalej dzialac powiedz z czego korzystasz, badz pokaz js.
pr0woKator
Demo online znajdziesz tutaj:

http://supleso.pl/szukajka.php

w źródle będziesz miał jquery.autocomplet.js

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.