How to match image display to dropdown lists?

I have been working with @russian-dima on a problem and he has been super helpful. Right now i have this code below for 8 dropdowns and 8 images, in a mock database. But right now it is returning unexpected results on the mock page here:

https://www.media-junkie.com/image-list

The dropdowns are returning results from the line directly above it in the database. Example:selecting “something red” in the top left dropdown actually returns the image from the line above it in the database, corresponding to “Stone gray”

import wixData from ‘wix-data’;

//////// -------------------- [ USER- INTERFACE ] ---------------------///////////
// Put in here the name of your DATA-COLLECTION (attention —> Case-Sensitive!)
var DATABASE = “Materials” //[EXAMPLE] ----> “Materials”
// Put in here all your DropDown-Names here…(if your drop-downs have other names than the default ones.)
var DD1 = “dropdown1”
var DD2 = “dropdown2”
var DD3 = “dropdown3”
var DD4 = “dropdown4”
var DD5 = “dropdown5”
var DD6 = “dropdown6”
var DD7 = “dropdown7”
var DD8 = “dropdown8”
//////// -------------------- [ USER- INTERFACE ] ---------------------///////////

var myResults

$w.onReady(function () {
wixData.query(“Materials”)
.find()
.then( (results) => {
if(results.items.length > 0) {

         myResults = results.items 

        const uniqueTitles1 = getUniqueTitles1(results.items); 
        const uniqueTitles2 = getUniqueTitles2(results.items); 
        const uniqueTitles3 = getUniqueTitles3(results.items); 
        const uniqueTitles4 = getUniqueTitles4(results.items); 
        const uniqueTitles5 = getUniqueTitles5(results.items); 
        const uniqueTitles6 = getUniqueTitles6(results.items); 
        const uniqueTitles7 = getUniqueTitles7(results.items); 
        const uniqueTitles8 = getUniqueTitles8(results.items); 
    //  const uniqueTitles9 = getUniqueTitles9(results.items); 
    //  const uniqueTitles10 = getUniqueTitles10(results.items); 
         
        $w("#"+DD1).options = buildOptions1(uniqueTitles1); 
        $w("#"+DD2).options = buildOptions2(uniqueTitles2); 
        $w("#"+DD3).options = buildOptions3(uniqueTitles3); 
        $w("#"+DD4).options = buildOptions4(uniqueTitles4); 
        $w("#"+DD5).options = buildOptions5(uniqueTitles5); 
        $w("#"+DD6).options = buildOptions6(uniqueTitles6); 
        $w("#"+DD7).options = buildOptions7(uniqueTitles7); 
        $w("#"+DD8).options = buildOptions8(uniqueTitles8); 

        function getUniqueTitles1(items) {const titlesOnly = items.map(item => item.referencefield1); return [...new Set(titlesOnly)];} 
        function buildOptions1(uniqueList1) {return uniqueList1.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles2(items) {const titlesOnly = items.map(item => item.referencefield2); return [...new Set(titlesOnly)];} 
        function buildOptions2(uniqueList2) {return uniqueList2.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles3(items) {const titlesOnly = items.map(item => item.referencefield3); return [...new Set(titlesOnly)];} 
        function buildOptions3(uniqueList3) {return uniqueList3.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles4(items) {const titlesOnly = items.map(item => item.referencefield4); return [...new Set(titlesOnly)];} 
        function buildOptions4(uniqueList4) {return uniqueList4.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles5(items) {const titlesOnly = items.map(item => item.referencefield5); return [...new Set(titlesOnly)];} 
        function buildOptions5(uniqueList5) {return uniqueList5.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles6(items) {const titlesOnly = items.map(item => item.referencefield6); return [...new Set(titlesOnly)];} 
        function buildOptions6(uniqueList6) {return uniqueList6.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles7(items) {const titlesOnly = items.map(item => item.referencefield7); return [...new Set(titlesOnly)];} 
        function buildOptions7(uniqueList7) {return uniqueList7.map(curr => {return {label:curr, value:curr};});} 

        function getUniqueTitles8(items) {const titlesOnly = items.map(item => item.referencefield8); return [...new Set(titlesOnly)];} 
        function buildOptions8(uniqueList8) {return uniqueList8.map(curr => {return {label:curr, value:curr};});} 

          

    } else { 
    // handle case where no matching items found 
    } 
} ) 
.catch( (err) => { 
    let errorMsg = err; 
} ); 

$w("#"+DD1).onChange(()=>{$w('#image1').src=myResults[$w("#"+DD1).selectedIndex].image1}) 
$w("#"+DD2).onChange(()=>{$w('#image2').src=myResults[$w("#"+DD2).selectedIndex].image2}) 
$w("#"+DD3).onChange(()=>{$w('#image3').src=myResults[$w("#"+DD3).selectedIndex].image3}) 
$w("#"+DD4).onChange(()=>{$w('#image4').src=myResults[$w("#"+DD4).selectedIndex].image4}) 
$w("#"+DD5).onChange(()=>{$w('#image5').src=myResults[$w("#"+DD5).selectedIndex].image5}) 
$w("#"+DD6).onChange(()=>{$w('#image6').src=myResults[$w("#"+DD6).selectedIndex].image6}) 
$w("#"+DD7).onChange(()=>{$w('#image7').src=myResults[$w("#"+DD7).selectedIndex].image7}) 
$w("#"+DD8).onChange(()=>{$w('#image8').src=myResults[$w("#"+DD8).selectedIndex].image8}) 

});

1 Like

Will correct it soon… to be continued… :grin:

Ok, i found the ERROR!
I just forgot to sync may SANDBOX-DATABASE with my LIVE-DATABASE.

Look here…
Live-Database (before) update…


As you can see, this was causing by the empty value[0].
I deleted the first [empty-line] in my LIVE-DATABASE, right now.

The example should now work just fine.
https://www.media-junkie.com/image-list

Oh i see!

I am sure you will be able to implement it by yourself to your site.
All you have to do is to copy & paste and generate your Database like in this example.

Good luck and happy coding :wink: (by the way, you can improve this a lot).

I am working on implementing it as we speak! I will reply with success. Many thanks my friend

You are welcome :wink:

I got everything working! SOO helpful thank you so much!