Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka nie działa
Forum PHP.pl > Forum > Przedszkole
kmpl
Witam,

Mam problem z wyszukiwarką a właściwie, że nie działa...
Joomla i własny komponent. Wyświetlam sobie tabelę z rekordami z bazy a powyżej mam wyszukiwarkę gdzie chciałbym znaleźć odpowiednie rekordy. Ma wyszukać tylko z jednej tabeli pomieszczenia: id_pomieszczenia, nr_pomieszczenia, opis. Nie działa też przycisk "czyść". Za każdym razem mam komunikat: " Brak danych spełniających podane kryterium". Podaję kod może ktoś mógłby pomóc:
  1.  
  2. echo '
  3. <table>';
  4.  
  5. echo' <h1>Wpisz szukaną frazę</h1>
  6. <form method="post" id="search" action="index.php?option=com_katalog&view=kwat_pom">
  7. <p>
  8. <input name="search_query" class="textbox" type="text" value="';
  9. echo $_POST['search_query'];
  10. echo '" />
  11. <input name="klawisz" class="searchbutton" value="Szukaj" type="submit" />
  12. <input type="reset" value="wyczyśc" name=""/>
  13.  
  14. </p>
  15. </form>';
  16. ?>
  17.  
  18. <div id="com_katalog_content">
  19. <h1 class="componentheading">Pomieszczenia</h1>
  20.  
  21. </div>
  22. <?php
  23. $db = JFactory::getDBO();
  24. if (isset($_POST['search_query'])){
  25. $warunek = "WHERE nr_pomieszczenia
  26. LIKE '%".$_POST['search_query']."%' AND opis LIKE '%".$_POST['search_query']."%' ";
  27. }
  28. $query = "SELECT *
  29. FROM #__pomieszczenia";
  30.  
  31.  
  32. // Executes the current SQL query string.
  33. $db->setQuery($query);
  34. // returns the array of database objects
  35. $list = $db->loadObjectList();
  36. // create the list of titles
  37. foreach ($list as $item) {
  38. $item_title = $item->title;
  39.  
  40.  
  41. }
  42.  
  43. $db->setQuery($query);
  44. $row = $db->loadObjectList();
  45.  
  46. $tabela = $this->get('getCategory');
  47.  
  48. if($i==0&&strstr($_POST['klawisz'],'Szukaj')!==FALSE&&strlen($warunek)>0){
  49. echo '<tr><b>Brak danych spełniających podane kryterium</b></td></tr>';
  50. }
  51.  
  52. echo "<table id=tabelka>";
  53.  
  54.  
  55. echo "<tr><th>Nr pomieszczenia</th><th>Opis</th>";
  56.  
  57. foreach ($list as $item) {
  58.  
  59. echo "<tr>";
  60.  
  61. echo "<td>";
  62.  
  63. echo JHTML::_('link', 'index.php?option=com_katalog&view=listasprzetu&id='.$item->id_pomieszczenia, $item->nr_pomieszczenia);
  64. echo "</td>";
  65.  
  66. echo "<td><left>".$item->opis."</left></td>";
  67.  
  68. echo "</tr>";
  69.  
  70. }
  71.  
  72. echo "</table>";
nospor
Trudno zeby numer pomieszczenia oraz opis jednoczesnie spelnialo to samo kryterium wyszukiwania...... Naprawde nie widzisz roznicy miedzy "I" a "LUB" ?
kmpl
Zmieniłem na OR, ale dalej jest tylko komunikat " Brak danych spełniających podane kryterium"...
RiE
1. Wypadałoby przefiltrować dane, które wprowadza użytkownik
2. Zmienna $warunek nie jest nigdzie łączona z $query, więc zawsze pobierana jest całość tabeli
3. Wykonujesz 2 razy to samo zapytanie nadpisując jedną zmienną w pętli
  1. $db->setQuery($query);
  2. // returns the array of database objects
  3. $list = $db->loadObjectList();
  4. // create the list of titles
  5. foreach ($list as $item) {
  6. $item_title = $item->title;
  7.  
  8.  
  9. }
  10. $db->setQuery($query);
  11. $row = $db->loadObjectList();

4. Ten warunek z brakiem danych to już zupełnie namieszany, skąd jest ta zmienna $i, strlen($warunek) zwróci true za każdym razem jak ktoś wypełni kryteria wyszukiwania.

Powinieneś sprawdzić czy zapytanie zwróciło jakieś rekordy, jeżeli nie zwróciło żadnych to wtedy ten komunikat.
kmpl
No właśnie, coś nieźle pomieszałem i sam już nie wiem co...

Cytat
Zmienna $warunek nie jest nigdzie łączona z $query, więc zawsze pobierana jest całość tabeli


Formularz wyszukiwarki jest na górze strony. Poniżej jest wyświetlana tabela ze wszystkimi rekordami. A, że jest ich sporo potrzebuję wyszukać, ten który potrzebuję.

Już działa.

Wystarczyło dodać $warunek do zapytania:
  1. $query = "SELECT *
  2. FROM #__pomieszczenia ".$warunek;


marcin15
Cytat(kmpl @ 18.11.2013, 16:45:40 ) *
No właśnie, coś nieźle pomieszałem i sam już nie wiem co...



Formularz wyszukiwarki jest na górze strony. Poniżej jest wyświetlana tabela ze wszystkimi rekordami. A, że jest ich sporo potrzebuję wyszukać, ten który potrzebuję.

Już działa.

Wystarczyło dodać $warunek do zapytania:
  1. $query = "SELECT *
  2. FROM #__pomieszczenia ".$warunek;



Niestety wciąż są jakieś błędy w wyszukiwarce:( Nie wiem, co z nimi robićsad.gif
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.