alanl1 Posted May 31, 2013 Share Posted May 31, 2013 Hi Professionals. I am struggling with some code I wrote I calculate the number of column headings from a csv and produce populated dynamic dropdown boxes based on the headings and number of columns. on the other side I have dropdown box static values where underneath second dropdown changes based on the selection from the first dropdown. this works fine however only for the first two boxes EG if i have the first dropdown set to "DeviceID", "Manufacturer","Product","Version","NULL","Ignore" and i select "DeviceID" the second dropdown changes to "Manufacturer","Product","Version","NULL","Ignore" so "DeviceID" is no longer available for selection but in the third box or forth and so on "DeviceID" comes back which I do not want this available for selection as it has already been selected in the first box hope you understand what i mean Please find my code below <head><script type="text/javascript"> var categories = []; categories["startList"] = ["DeviceID","Manufacturer","Product","Version","NULL","Ignore"] categories["Manufacturer"] = ["DeviceID","Product","Version","NULL","Ignore"]; categories["DeviceID"] = ["Manufacturer","Product","Version","NULL","Ignore"]; categories["Product"] = ["DeviceID","Manufacturer","Version","NULL","Ignore"]; categories["Version"] = ["DeviceID","Manufacturer","Product","NULL","Ignore"]; categories["NULL"] = ["DeviceID","Manufacturer","Product","Version","NULL","Ignore"]; categories["Ignore"] = ["DeviceID","Manufacturer","Product","Version","NULL","Ignore"]; function fillSelect(sel,ary,nxt){ if (ary&&sel.form){ var frm=sel.form,nme=sel.name.replace(/\d/g,""),i=Number(sel.name.replace(/\D/g,""))+1,nxt=frm[nxt],z0=0; while (frm[nme+i]){ frm[nme+i].length = 1; frm[nme+i].selectedIndex=0; i++; } for (;z0<ary.length;z0++){ nxt.options[z0+1]=new Option(ary[z0],ary[z0]); } nxt.selectedIndex=0; }} function getValue(isValue) { alert(isValue);} function init() { fillSelect(document.forms[0]['dropdown0'],categories['startList'],'dropdown0')} navigator.appName == "Microsoft Internet Explorer" ? attachEvent('onload', init, false) : addEventListener('load', init, false); function myfunction(){alert("Please ensure the file is in csv format");} </script></head> <form action=""><?php $newname = $_GET['newname']; //The file that has been moved into the Uploads/ folder will need to be stripped here to retreive just the filename...$filename = basename($newname,"/"); //basename function strips off filename based on first forward slash "/"$counter = 1;function ext($file) { return substr(strrchr($file,'.'),1);}if (isset($filename)) {$cfile = $filename;$cfile = ext($cfile);if ($cfile == 'csv'){//do nothing its all good..}else { ?><script type="text/javascript"> myfunction();</script><?phpheader("refresh:1; url=preupload.php");}} if (($handle = fopen($filename, "r")) !== FALSE) { $length = 1000; $delimiter = ","; ?> <?php $rows = 0; // ADDED while ( ( $data = fgetcsv( $handle, $length, $delimiter ) ) !== FALSE ) { if( $rows == 0 )// or i = 3 using pipe command|| $i == 3 ) // ADDED { $num = count($data); for ($c=0; $c < $num; $c++) { echo "<table width=100% border=0>"; echo "<tr width=33% align=right><td>"; ?><select name="<?php echo $data[$c]?>"><?php //Second array element populates the dropdown and calculates the number of columns from spreadsheet for ($d=0; $d < $num; $d++) { echo "<option value='" .$data[$d]."'>" .$data[$d]."</option>"; } ?></select><br /><?php echo "</td>"; echo "<td width=33% align=left>"; ?> <---- Matches to -----> <select name="<?php echo "dropdown" .$c?>" onchange="fillSelect(this,categories[this.value],'<?php echo "dropdown" .$counter++ ?>')"><?php echo "<option selected>Please Choose</option>"; echo "<option value='DeviceID'>DeviceID</option>"; echo "<option value='Product'>Product</option>"; echo "<option value='Manufacturer'>Manufacturer</option>"; echo "<option value='Version'>Version</option>"; echo "<option value='NULL'>NULL</option>"; echo "<option value='Ignore'>Ignore</option>"; //echo "<option value='" .$data[$e]."'>" .$data[$e]."</option>"; ?></select><?php echo "</td>"; echo "<td width=33%> </td>"; echo "</tr>"; echo "</table>"; } } $rows++; // ADDED } fclose($handle); }?></form> Quote Link to comment https://forums.phpfreaks.com/topic/278623-dynamic-dropdown-boxes/ Share on other sites More sharing options...
Solution alanl1 Posted June 10, 2013 Author Solution Share Posted June 10, 2013 t Quote Link to comment https://forums.phpfreaks.com/topic/278623-dynamic-dropdown-boxes/#findComment-1435231 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.