Page 3 of 8

Re: Browse Table Filter Options

Posted: Mon May 06, 2019 9:17 pm
by Alohajoe5
Let me correct this...actually it does appear that it is updating the records based off of the "Word" dropdown, only it's not limiting the records to those=2 when "2" is selected in the dropdown. Further, when "32" is selected in the dropdown--nothing is displayed even though there are records with 32 in the Word column

Re: Browse Table Filter Options

Posted: Mon May 06, 2019 9:23 pm
by Alohajoe5
kev1n wrote:This is what it should look like:

Code: Select all

SELECT * FROM Channels

WHERE

((Word = '#nuBrowseTitle0_dropdown#' AND LOCATE('#', '#nuBrowseTitle0_dropdown#') <> 1 )
    OR '#nuBrowseTitle0_dropdown#' = '' OR LOCATE('#', '#nuBrowseTitle0_dropdown#') = 1)
AND

((Type  = '#nuBrowseTitle1_dropdown#' AND LOCATE('#', '#nuBrowseTitle1_dropdown#') <> 1 )
    OR '#nuBrowseTitle1_dropdown#' = '' OR LOCATE('#', '#nuBrowseTitle1_dropdown#') = 1)

Note that there is no final semicolon (;)

Solved it. The problem was in the references to nuBrowseTitle0 etc...They needed to reference the index of the column not the vardata0, 1, 2 etc. Thus even though Word was the first column with a dropdown, it was index 3. This solved this issue. Now onto dynamically populating the dropdowns! Thanks

Re: Browse Table Filter Options

Posted: Mon May 06, 2019 9:24 pm
by kev1n
Can you upload a picture of your table title names (of the Browse screen)?

Re: Browse Table Filter Options

Posted: Tue May 07, 2019 7:01 pm
by Alohajoe5
kev1n wrote:Can you upload a picture of your table title names (of the Browse screen)?
Unfortunately I can't do that, however I can list them (From the SQL Table):

channel_names, short_names, web_address, word, number, offset, resolution, digital, type, format, channel

The dropdowns are only on: word, number, offset & channel....
The tables have the same names displayed in nubuilder, except they are uppercase.

Thanks

Re: Browse Table Filter Options

Posted: Tue May 07, 2019 7:20 pm
by kev1n
If this is the order of your columns, then the indexes are not correct:

channel_names, short_names, web_address, word, number, offset, resolution, digital, type, format, channel

word ---> column nr. 4 = index 3
number ---> column nr. 5 = index 4

Code: Select all

 var data3 = ["", "input", "word", "image"]; // static values to be added to the dropdown    
    addBrowseTitleDropDown(3, data3);

    var data4 = ["", "text", "nuDate", "nuScroll"]; // static values to be added to the dropdown    
    addBrowseTitleDropDown(4, data4);
And also the sql must be changed:


SELECT * FROM Channels

WHERE

Code: Select all

((word = '#nuBrowseTitle3_dropdown#' AND LOCATE('#', '#nuBrowseTitle3_dropdown#') <> 1 )
    OR '#nuBrowseTitle3_dropdown#' = '' OR LOCATE('#', '#nuBrowseTitle3_dropdown#') = 1)
AND

((number  = '#nuBrowseTitle4_dropdown#' AND LOCATE('#', '#nuBrowseTitle4_dropdown#') <> 1 )
    OR '#nuBrowseTitle4_dropdown#' = '' OR LOCATE('#', '#nuBrowseTitle4_dropdown#') = 1

Re: Browse Table Filter Options

Posted: Tue May 07, 2019 7:27 pm
by Alohajoe5
Yep. It's working great with the static values! Column/indexes all written correctly. This appears to be the same JavaScript for the static values though. How would I go about dynamically populating that list with unique values from the column?

Re: Browse Table Filter Options

Posted: Tue May 07, 2019 7:43 pm
by kev1n
Alohajoe5 wrote:Yep. It's working great with the static values! Column/indexes all written correctly. This appears to be the same JavaScript for the static values though. How would I go about dynamically populating that list with unique values from the column?
Example to populate distinct values of the word column:

You need to write a PHP script that retrieves the values from the db. Add this to PHP BB (Before Browse).

Code: Select all

function sqlWords() {
    return "SELECT DISTINCT word FROM Channels";
}

function getBase64JsonDTString($sql) {
	$result = nuRunQuery($sql);
	$a = array();
	while ($row = db_fetch_row($result)) {
	  $a[] = $row;
	}
	return base64_encode(json_encode( $a ));
}

$w = getBase64JsonDTString(sqlWords());


$js = "
	function getWords() {
	   return atob('$w');
	}
";

nuAddJavascript($js);
Then in Javascript, instead of assigning a static array, you pass the getWords function:

Code: Select all

var data3 =  JSON.parse(getWords());
addBrowseTitleDropDown(3,data3);

Re: Browse Table Filter Options

Posted: Wed May 08, 2019 4:06 pm
by Alohajoe5
I'll post what my code in a little bit, but the problem I'm having right now is the code, as edited, no longer displays the drop-downs.

Re: Browse Table Filter Options

Posted: Wed May 08, 2019 8:44 pm
by Alohajoe5
Ok, I've got the PHP, Javascript, & SQL all playing nice with each other; however, I am left with two final issues:

1.) The items in the dropdown are randomly ordered (likely by first instance in the db table). I tried adding: ORDER BY ASC in the PHP under the SELECT DISTINCT word FROM Channels, but this didn't seem to work.

2.) Once a selection is made in one of the dropdown menus, there is no ability to go back to viewing all records, you can simply change to viewing another individual record. I tried adding push("") in the JavaScript and an include () in the PHP, however neither gave me a "All" option that would have cleared the selection in the dropdown.

Thanks

Re: Browse Table Filter Options

Posted: Wed May 08, 2019 10:04 pm
by Alohajoe5
I've solved these issues, I will post the code in a bit for anyone else who might be interested in this topic.