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
RiE
post
Post #2





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

Posty w temacie


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: 17.10.2025 - 22:14