# How to create a search database with three fields

**URL:** <https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100>\
**Category:** Ask the community\
**Tags:** question, code\
**Created:** [October 30, 2018, 7:43pm UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100 "2018-10-30T19:43:44Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![atelierinformatique](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@atelierinformatique](https://forum.wixstudio.com/u/atelierinformatique)\
**Post date:** [October 30, 2018, 7:43pm UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/1 "2018-10-30T19:43:44Z")

</div>

Hello,  
On a test website for the moment I have a page where a table displays the data of a little database with ten companies for example and for the dropdown by list two another “databases”, for the city and the activity…  
I was inspired by this tutorial:  
[https://www.wix.com/code/home/forum/wix-tips-and-updates/how-to-create-a-search-for-your-database](https://www.wix.com/code/home/forum/wix-tips-and-updates/how-to-create-a-search-for-your-database)  
That works well for the list.

![](https://us1.discourse-cdn.com/wix/original/3X/b/a/ba730b621b84f82ac4d3347e91df807c95600bd5.jpeg)

a search by keyword, it’s ok.

![](https://us1.discourse-cdn.com/wix/original/3X/f/1/f173f32bb8472aedcec1a2519c585a60f8d78bdb.jpeg)

I have a search field by activity, it works too.

![](https://us1.discourse-cdn.com/wix/original/3X/f/2/f2be47b019b1bb0c0789b418ceb1da08d335aa42.jpeg)

But the third field, search by city, doesn’t work :

![](https://us1.discourse-cdn.com/wix/original/3X/e/4/e4f8c4dbed9a7f59a78d50a525328d92ea2d88d2.jpeg)  
I see that the research is done by activity but I do not know why.  
I do not know how to code correctly …

* * *

1. import wixData from “wix-data”;

2. /\* - Ok - field search by keyword with timing \*/

3. export function formBusiness\_keyPress(event, $w) {

4. if (debounceTimer) {

5. 

```
clearTimeout(debounceTimer); 

```

6. 

```
debounceTimer = undefined; 

```

7. }

8. debounceTimer = setTimeout(() =\> {

9. filter($w(‘#formBusiness’).value, lastFilterCompagnyName);

10. }, 500);

11. }

12. /\* - Ok - \*/

13. $w.onReady(() =\> {

14. loadListCity();loadListActivity();

15. });

16. let lastFilterCompanyName; /\* for the search by keywords\*/

17. let lastFilterActivity; /_Activity = field in the database for all activities : ListActivity_/\*/

18. let lastFilterActivity2; /_Activity2 = field in the company database : ListCompany_/

19. let lastFilterCity; /_City = field in the database for all the city : ListCity_/

20. let lastFilterCity2; /_field in the company database_/

21. let debounceTimer;

22. /\* \*/

23. export function formActivity\_change(event, $w) {

24. filter(lastFilterActivity, $w(‘#formActivity’).value);

25. }

26. export function formCity\_change(event, $w) {

27. filter(lastFilterCity, $w(‘#formCity’).value);

28. }

29. /\* -Ok - for the dropdown list with city\*/

30. function loadListCity() {

31. wixData.query(‘ListCity’)

32. .find()

33. .then(res =\> {

34. 

```
 let options = [{"value": '', "label": 'All city'}]; 

```

35. 

```
 options.push(...res.items.map(city2 => { 

```

36. 

```
 	return {"value": city2.city, "label": city2.city}; 

```

37. 

```
 })); 

```

38. 

```
 $w('#formCity').options = options; 

```

39. });

40. }

41. /\* -Ok - for the dropdown list with Activity\*/

42. function loadListActivity() {

43. wixData.query(‘Activity’)

44. .find()

45. .then(res =\> {

46. 

```
 let options = [{"value": '', "label": 'Tous activitys'}]; 

```

47. 

```
 options.push(...res.items.map(activity2 => { 

```

48. 

```
 	return {"value": activity2.activity, "label": activity2.activity}; 

```

49. 

```
 })); 

```

50. 

```
 $w('#formActivity').options = options; 

```

51. });

52. }

53. /\* the filters… \*/

54. function filter(companyName, activity, activity2, city, city2) {

55. if (lastFilterCompagnyName !== compagnyName || lastFilterActivity !== activity || lastFilterActivity2 !== activity2 || lastFilterCity !== city || lastFilterCity2 !== city2)

56. {

57. 

```
let newFilter = wixData.filter(); 

```

58. 

```
/* - Ok - search by keyword */ 

```

59. 

```
  if (companyName) 

```

60. 

```
  newFilter = newFilter.contains('compagnyName', compagnyName) 

```

61. /\* - Ok - dropdown list search by activity \*/

62. if (activity2)

63. 

```
  newFilter = newFilter.contains('activity2', activity2); 

```

64. 

```
 /* - Not work - dropdown list search by city...*/ 

```

65. 

```
if (city2) 

```

66. 

```
  newFilter = newFilter.contains('city2', city2); 

```

67. 
68. /\* #ListCompany name of the connexion between the database and the page\*/

69. 

```
$w('#ListCompany').setFilter(newFilter);	 

```

70. 

```
lastFilterCompanyName = companyName;	 

```

71. 

```
lastFilterActivity = activity; 

```

72. 

```
lastFilterActivity2 = activity2;  

```

73. 

```
lastFilterCity = city; 

```

74. 

```
lastFilterCity2 = city2; 

```

75. 

```
 }    

```

76. }

* * *

Could you give me some hints please?  
thank you  
Have a goo day  
Florent

---

<div class="post-metadata">

**Author:** ![yisrael-wix](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/yisrael-wix/32/1107_2.png) [@yisrael-wix](https://forum.wixstudio.com/u/yisrael-wix)\
**Post date:** [October 31, 2018, 10:57am UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/2 "2018-10-31T10:57:09Z")

</div>

Please post the editor URL of your site. _Only authorized Wix personnel can get access to your site in the editor._

---

<div class="post-metadata">

**Author:** ![atelierinformatique](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@atelierinformatique](https://forum.wixstudio.com/u/atelierinformatique)\
**Post date:** [November 1, 2018, 10:04am UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/3 "2018-11-01T10:04:40Z")

</div>

Hello,

> **[Acteurs économiques CdC Coeur du Perche](https://atelierinformatiqu8.wixsite.com/website-4)**
>
> Vous trouverez ici la liste des artisans, commerçants, industries, etc, tous acteurs de notre économie.

after a few more tries, now the activity field does not work anymore and the search by keyword has problems : the list disappears…  
Thank for your help.  
Have a good day

---

<div class="post-metadata">

**Author:** ![yisrael-wix](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/yisrael-wix/32/1107_2.png) [@yisrael-wix](https://forum.wixstudio.com/u/yisrael-wix)\
**Post date:** [November 1, 2018, 10:35am UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/4 "2018-11-01T10:35:25Z")

</div>

Your **filter()** function has 5 parameters defined:

```javascript
function filter(companyName, activity, activity2, city, city2) 

```

However, you are calling filter() with only two parameters:

```javascript
filter($w('#formBusiness').value, lastFilterCompanyName);
filter(lastFilterActivity, $w('#formActivity').value);
filter(lastFilterCity, $w('#formCity').value);

```

You need to call the filter function with all 5 parameters. Otherwise, the values of the parameters are not properly defined and the filter of the collection will not work.

You should refer to the Example: Search a Database to see how to properly handle the filter parameters.

---

<div class="post-metadata">

**Author:** ![atelierinformatique](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@atelierinformatique](https://forum.wixstudio.com/u/atelierinformatique)\
**Post date:** [November 2, 2018, 11:57pm UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/5 "2018-11-02T23:57:50Z")

</div>

Hello,  
Thank for the example. Now it’s ok for the search by keywords and by activity. It’s work properly.  
But I have always a “bug” with the search by city : when I choose one of the city like “Bret” or another in the dropdown list, I see he try to find by activity as if there was only this filter…

What’s wrong with the filter ?  
Thank  
Have a good day  
[https://atelierinformatiqu8.wixsite.com/website-4](https://atelierinformatiqu8.wixsite.com/website-4)

 ![](https://us1.discourse-cdn.com/wix/original/3X/4/a/4a053de22d782fd76b1c4ca57b33889d0e94f5e5.jpeg)

---

<div class="post-metadata">

**Author:** ![yisrael-wix](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/yisrael-wix/32/1107_2.png) [@yisrael-wix](https://forum.wixstudio.com/u/yisrael-wix)\
**Post date:** [November 5, 2018, 8:50am UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/6 "2018-11-05T08:50:49Z")

</div>

You are still not using the correct parameters for the filter() function.

Please understand that if you are going to work with code, you will need to familiarize yourself with basic coding concepts to accomplish what you want. There are a wealth of Javascript coding sites which will help you learn Javascript from basic to advanced - [Javascript.info](http://javascript.info/) is a good one. You might want to refer to this [discussion on functions](https://javascript.info/function-basics) .

Good luck

---

<div class="post-metadata">

**Author:** ![atelierinformatique](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@atelierinformatique](https://forum.wixstudio.com/u/atelierinformatique)\
**Post date:** [November 7, 2018, 10:04pm UTC](https://forum.wixstudio.com/t/how-to-create-a-search-database-with-three-fields/15100/7 "2018-11-07T22:04:39Z")

</div>

Hello,  
" _You are still not using the correct parameters for the filter() function_ . "  
… I am not a developer but after multiple trials and errors I managed to add the search field by city.  
Finally…  
Thank

* * *

**import** wixData **from** “wix-data”;

$w.onReady(() =\> {  
loadListActivities(); loadListCities();  
});

/_=== Filters===_/  
**let** FilterActivities;  
**let** FilterActivity  
**let** FilterCity;  
**let** FilterCities;  
**let** debounceTimer;

/\* for search by keyword with timing \*/  
export function formBusiness\_keyPress(event, $w) {  
**if** (debounceTimer) {  
clearTimeout(debounceTimer);  
debounceTimer = undefined;  
}  
debounceTimer = setTimeout(() =\> {  
filter($w(‘#formBusiness’).value, FilterActivity);  
}, 500);  
}

/_===== export function ====_/  
export function formActivity\_change(event, $w) {  
filter(FilterActivities, $w(‘#formActivity’).value);  
}  
export function formCity\_change(event, $w) {  
filter2(FilterCities, $w(‘#formCity’).value);  
}

/_===== export function ====_/

/\* ===the filters… ===_/  
 **function** filter(activities, activity) {  
 **if** (FilterActivities !== activities || FilterActivity !== activity)  
{  
 **let** newFilter = wixData.filter();  
/_ - Ok - search by keyword _/  
 **if** (activities)  
newFilter = newFilter.contains(‘companyName’, activities);  
/_ - Ok - dropdown list search by activity \*/  
**if** (activity)  
newFilter = newFilter.contains(‘activity’, activity);

/\* #ListCompany name of the connexion between the database and the page\*/  
$w(‘#ListAllCompanies’).setFilter(newFilter);  
FilterActivity = activity;  
FilterActivities = activities;  
}  
}

**function** filter2(city, cities) {  
**if** (FilterCity !== city || FilterCities !== cities)  
{  
**let** newFilter2 = wixData.filter();  
**if** (cities)  
newFilter2 = newFilter2.contains(‘city’, cities);

/\* ===#ListCompany name of the connexion between the database and the page===\*/  
$w(‘#ListAllCompanies’).setFilter(newFilter2);  
FilterCity = city;  
FilterCities = cities;

```
}    

```

}

//=====fonction list ====//

/\* -Ok - for the dropdown list with Activity\*/  
**function** loadListActivities() {  
wixData.query(‘ListActivities’)  
.find()  
.then(res =\> {  
**let** options = [{“value”: ‘’, “label”: ‘All activities’}];  
options.push(…res.items.map(activity =\> {  
**return** {“value”: activity.activities, “label”: activity.activities};  
}));  
$w(‘#formActivity’).options = options;  
});  
}

/\* -Ok - for the dropdown list with city\*/  
**function** loadListCities() {  
wixData.query(‘ListCities’)  
.find()  
.then(res =\> {  
**let** options = [{“value”: ‘’, “label”: ‘All cities’}];  
options.push(…res.items.map(city =\> {  
**return** {“value”: city.cities, “label”: city.cities};  
}));  
$w(‘#formCity’).options = options;  
});  
}  
//=====fonction list ====//
