timmah1 Posted February 4, 2009 Share Posted February 4, 2009 In the database, the mainID is listed as so 3, 9, 2 I have a list menu, so when you edit the details of this page, I need to be able to keep the mainID fileds that are in the database to show up selected. This is how I have it <?php $query = "SELECT * FROM sublinks WHERE id = '$id'"; $portfolio = mysql_query($query); $numrows = mysql_num_rows($portfolio); while ($a = mysql_fetch_array($portfolio)) { $id1 = $a['id']; $name1 = $a['name']; $mainID = explode(', ', $a['mainID']); $q = mysql_query("SELECT * FROM links ORDER BY name ASC"); while ($b = mysql_fetch_array($q)) { $id2 = $b['id']; $name2 = $b['name']; foreach($mainID as $key){ if ($key == $id2) { echo '<option value="'.$id2.'" selected>'.$name2.'</option>'; } else { echo '<option value="'.$id2.'">'.$name2.'</option>'; } } } ?> It shows the three as selections, but it's showing each listing 3 times. How can I get this to only show once instead of 3 times? Thanks in advance Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/ Share on other sites More sharing options...
timmah1 Posted February 4, 2009 Author Share Posted February 4, 2009 I simplified the code <?php $mainID = explode(', ', $a['mainID']); foreach($mainID as $key){ $selected = ($key == $id2) ? 'selected' : ''; echo '<option value="'.$id2.'" '.$selected.'>'.$name2.'</option>'; } ?> It works fine if there is only 1 item listed for mainID, but if there is more than one, it shows the options more than once, for however many is in mainID. How can I fix this? Thanks Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754327 Share on other sites More sharing options...
timmah1 Posted February 4, 2009 Author Share Posted February 4, 2009 Can anybody help me out? Doing this only shows the last one $mainID = explode(', ', $a['mainID']); foreach($mainID as $key){ $selected = ($key == $id2) ? 'selected' : ''; } echo '<option value="'.$id2.'" '.$selected.'>'.$name2.'</option>'; but doing this $mainID = explode(', ', $a['mainID']); foreach($mainID as $key){ $selected = ($key == $id2) ? 'selected' : ''; echo '<option value="'.$id2.'" '.$selected.'>'.$name2.'</option>'; } Shows everything 3 times because there are 3 numbers in the database Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754375 Share on other sites More sharing options...
timmah1 Posted February 4, 2009 Author Share Posted February 4, 2009 Nobody knows?? Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754431 Share on other sites More sharing options...
timmah1 Posted February 4, 2009 Author Share Posted February 4, 2009 Maybe this will help. Here is the entire code. Can someone PLEASE help me out here? <?php case "links": $query = "SELECT * FROM sublinks WHERE id = '$id'"; $portfolio = mysql_query($query); $numrows = mysql_num_rows($portfolio); while ($a = mysql_fetch_array($portfolio)) { $id1 = $a['id']; $name1 = $a['name']; ?> <form action="view_sublinks.php" method="post" enctype="multipart/form-data" name="admin" id="admin"> <table width="100%" border="0" cellspacing="0" cellpadding="5" class="table_main"> <tr> <td align="left" valign="top" class="formText" colspan="2"><strong>Edit Subcategory</strong></td> </tr> <tr> <td align="left" valign="top" class="formText"><strong>Name:</strong></td> <td align="left" valign="top"><input type="text" name="name" id="text" class="text" value="<?=$name1;?>" /></td> </tr> <tr> <td align="left" valign="top" class="formText"><strong> Main Category:</strong></td> <td align="left" valign="top"> (Hold ctrl button to select more than one)<br /> <select name="mainID[]" size="10" multiple="multiple" id="mainID"> <?php $q = mysql_query("SELECT * FROM links ORDER BY name ASC"); while ($b = mysql_fetch_array($q)) { $id2 = $b['id']; $name2 = $b['name']; $mainID = explode(', ', $a['mainID']); foreach($mainID as $key){ $selected = ($key == $id2) ? 'selected' : ''; echo '<option value="'.$id2.'" '.$selected.'>'.$name2.'</option>'; } } ?> </select> </td> </tr> <tr> <td align="left" valign="top"> </td> <td align="left" valign="top"> <input type="hidden" name="id" value="<?=$id1;?>" /> <input type="submit" name="editLink" value="Edit Sub Link" id="buttons" class="buttons" /></td> </tr> </table> </form> <?php } break; ?> Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754528 Share on other sites More sharing options...
Philip Posted February 4, 2009 Share Posted February 4, 2009 I'm not really getting what you're trying to do, but I'll give it a stab: $mainID = explode(', ', $a['mainID']); // main ID from earlier // now, let's see if id2 is in the array, if so select the option, if not ignore if(in_array($id2, $mainID)) $selected = 'selected'; else $selected = ''; // show the option echo '<option value="'.$id2.'" '.$selected.'>'.$name2.'</option>'; Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754541 Share on other sites More sharing options...
timmah1 Posted February 4, 2009 Author Share Posted February 4, 2009 Exactly! Thank You So Much KingPhillip!!! Driving myself insane with this! Quote Link to comment https://forums.phpfreaks.com/topic/143768-solved-list-menu-selection/#findComment-754549 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.