Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka nie działa
kmpl
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


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>";
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Trudno zeby numer pomieszczenia oraz opis jednoczesnie spelnialo to samo kryterium wyszukiwania...... Naprawde nie widzisz roznicy miedzy "I" a "LUB" ?
Go to the top of the page
+Quote Post
kmpl
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Zmieniłem na OR, ale dalej jest tylko komunikat " Brak danych spełniających podane kryterium"...
Go to the top of the page
+Quote Post
RiE
post
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 45
Dołączył: 5.05.2010

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


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.
Go to the top of the page
+Quote Post
kmpl
post
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


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;


Go to the top of the page
+Quote Post
marcin15
post
Post #6





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 18.11.2013
Skąd: Białystok

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


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ć(IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 06:08