[FX.php List] Conditional value lists with PHP and FileMaker
Anders Monsen
andersm at alamark.com
Wed Nov 19 15:33:15 MST 2008
Correction. Once I amended $distName = $distData['District name'] to
$distName = $distData['District name'][0] the unique values appears as
intended by your code.
Thanks again,
Anders
On Nov 19, 2008, at 4:16 PM, Anders Monsen wrote:
> Joel,
>
> After bringing in your text I now have the dropdown appearing in the
> SESSION. I had to make two small changes to your code ( you had an
> extra semi-colon in this line: if ($distName != $distData['District
> name'];) { --- and the $distData['dist_Num'] needed to be
> $distData['dist_Num'][0] ). Otherwise this is extremely useful code.
>
> However, because the values are not unique in the table, the value
> list is showing up with multiple values for the same district. I may
> need to see if I can get the FileMaker database re-structured to
> eliminate the duplicate values in the current table. I think the
> complicated way I created the array previously filtered it for
> unique values only.
>
> Thanks,
> Anders
>
>
> On Nov 19, 2008, at 3:41 PM, Anders Monsen wrote:
>
>> Hi Joel,
>>
>> Thanks for your comments. I should have posted my dilemma before
>> spending all that time on the code...
>>
>> And, after reading through a couple of times what you wrote below,
>> I realize that I way over-complicated things. I approached it form
>> the wrong direction, thinking I needed to build the array to
>> contain the values from scratch, instead of using the
>> $distResult['data'] array that I already have. Truly a Doh! moment
>> on my part.
>>
>> I like the Ajax option, and I've created a proof of concept from
>> Jonathan Stark's article that works great. I also like the session
>> array idea that you and GGT suggest. If I can combine these pieces
>> I should end up with a more streamlined process.
>>
>> Anders
>>
>> On Nov 19, 2008, at 3:13 PM, Joel Shapiro wrote:
>>
>>> Hi Anders
>>>
>>> I might not be understanding something here, because it doesn't
>>> seem like it should be so complicated. I'm assuming that there is
>>> a one-to-one correspondence between District Name & Number. This
>>> is what I'd do:
>>>
>>> Sort the Districts by name (so that the drop-down displays in
>>> alphabetical order), then something like:
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> if ( !isset($_SESSION['distDropdown'] ) ) {
>>>
>>> // If distDropdown is not yet created, find and process the 300
>>> records
>>> // This way you only need to do this the first time the page is
>>> loaded
>>>
>>> // Perform Find Here
>>> // same query as you currently have,
>>> // but I'd sort by Dist name so dropdown is in alpha order
>>>
>>> $distName = '';
>>>
>>> $_SESSION['distDropdown'] = '<select name="dist"
>>> onchange="this.form.submit()">'. "\n";
>>>
>>> foreach ($distResult['data'] as $key => $distData) {
>>>
>>> if ($distName != $distData['District name'];) {
>>> $_SESSION['distDropdown'] .= '<option value="'.
>>> $distData['dist_Num'] .'">' . $distData['District name'] . '</
>>> option>'."\n";
>>> }
>>>
>>> $distName = $distData['District name'];
>>>
>>> }
>>>
>>> $_SESSION['distDropdown'] .= '</select>';
>>>
>>> }
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> To display the dropdown in the form, it's just a simple:
>>> echo $_SESSION['distDropdown'];
>>>
>>> Then the submission of this form (via a selection from the
>>> dropdown) would perform a new query of Campuses based on the
>>> dist_Num selected. This form submission would be great for AJAX,
>>> but a regular form submission and a full-page reload shouldn't be
>>> so bad since you don't need to find and compile the distDropdown
>>> again.
>>>
>>> etc.
>>>
>>> Or am I missing something?
>>>
>>> HTH,
>>> -Joel
>>>
>>>
>>> On Nov 19, 2008, at 8:46 AM, Anders Monsen wrote:
>>>
>>>> Has anyone on the list worked on this issue? I spent most of
>>>> yesterday putting together a process that works, but may not be
>>>> the most efficient process. I was wondering if anyone would be
>>>> open to looking at my code (the snippet is 130 lines long at
>>>> minimum, so I didn't just want to throw it out there) to see if
>>>> there are ways I can improve the process. It certainly made me
>>>> appreciate how easy FileMaker makes this process...
>>>>
>>>> (I just discovered and read Jonathan Stark's article in July
>>>> FileMakerAdvisor after writing this email. It uses Ajax, so I may
>>>> try to incorporate his techniques, although I'm using FX.php and
>>>> no existing value lists from FileMaker, just existing data.)
>>>>
>>>> Here's the scenario. I have a table with four fields: district
>>>> number, district name, campus number, and campus name. I want the
>>>> district and campus to be drop down menus, where the user sees
>>>> the name but submits the number into another FileMaker database/
>>>> table. Also, when the user selects a district, I need the value
>>>> list of campuses to correspond just to their appropriate district.
>>>>
>>>> My first issue was to find a way to create an associative array
>>>> with district numbers=>district names. Apparently I took the hard
>>>> route in dynamically building associative arrays... After several
>>>> failed attempts, I used a function that I found on php.net in the
>>>> section on "array_push" to create this array. The first problem I
>>>> ran into was that the list currently contains 270 records. For
>>>> now I had to manually change the groupsize in the query to above
>>>> 300, but I plan to first query all records to get a count, then
>>>> make this the groupsize. The reason for this is that the district
>>>> array becomes unique only after all records have been loaded into
>>>> the array, so the default groupsize of 50 has to be modified.
>>>>
>>>> Is there a way to 1) build a better array and 2) make the
>>>> district array unique in the initial query? The database is
>>>> structured as one file, with all four fields, and so the district
>>>> numbers and names are repeated. I didn't create the database, and
>>>> I can't change it.
>>>> Distnum | Distname | CampusNum | Campus Name
>>>> 10 The ISD 2 School
>>>> 10 The ISD 2.1 OtherSchool
>>>> etc.
>>>>
>>>> Additionally, after several failed attempts to get the Javascript
>>>> onchange function to work when the form changed, I resorted to
>>>> DreamWeaver's JumpMenu, which seems to work fine. Has anyone been
>>>> able to get a working onchange form and what is the correct
>>>> syntax? When the user selects a district from the dropdown, the
>>>> page reloads with the district number in the URL.
>>>>
>>>> Given all of the above, my process *does* work, and the page does
>>>> not appear to load with delays. I have not used conditional
>>>> values lists with PHP/Javascript in about three years, so I am a
>>>> little unsure of best practices.
>>>>
>>>> Thanks,
>>>> Anders
>>>> _______________________________________________
>>>> FX.php_List mailing list
>>>> FX.php_List at mail.iviking.org
>>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>
>>> _______________________________________________
>>> FX.php_List mailing list
>>> FX.php_List at mail.iviking.org
>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>
>>>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>
>>
>
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
>
>
More information about the FX.php_List
mailing list