[FX.php List] Conditional value lists with PHP and FileMaker
Joel Shapiro
jsfmp at earthlink.net
Wed Nov 19 14:13:24 MST 2008
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
More information about the FX.php_List
mailing list