sorry, maybe I have been lazy in that comment, I admit, whem wrote that solution I was in a such hurry and without time. I dont really read what I wrote, but now I think this solution is good. <select name="categories" multiple style='width:120px;height:150px'> <? $sql = "SELECT id,name FROM categories"; if ( ( $results = mysql_query($sql, $conn) ) !== false ) { while ( $row = mysql_fetch_assoc($results) ) { $selected = ($id == $row['id'] ? 'selected="selected"' : ''); echo "<option value=".$row['id']." ".$selected.">".$row['name']."</option>"; } } ?> </select> > Date: Wed, 17 Jun 2009 10:16:15 +0100 > From: M.Ford@xxxxxxxxxxxxxx > To: php-general@xxxxxxxxxxxxx > Subject: RE: populate form input option dropdown box from existing data > > On 16 June 2009 20:48, PJ advised: > > > Now, I was happy to learn that it is simpler to populate the > > insert new > > books page dynamically from the db. Much shorter & neater. > > It looks to me like the best solution for the edit page is > > close to what > > Yuri suggests. > > Since the edit page is very similar to the insert new books page, I > > merely need to populate the Select options box slightly differently. > > This is the code to populate the insert page: > > <select name="categoriesIN[]" multiple size="8"> > > <?php > > $sql = "SELECT * FROM categories"; > > if ( ( $results = mysql_query($sql, $db) ) !== false ) { > > while ( $row = mysql_fetch_assoc($results) ) { > > echo "<option value=", $row['id'], ">", $row['category'], > > "</option><br />"; } > > } > >> > > </select> > > > > The problem nowis to find a way to add a conditional clause above that > > will insert the option="selected" in the output. > > The input for this comes from: > > // do categories > > $sql = "SELECT id, category FROM categories, book_categories > > WHERE book_categories.bookID = $idIN && > > book_categories.categories_id = categories.id";; > > if ( ( $results = mysql_query($sql, $db) ) !== false ) { > > while ( $row = mysql_fetch_assoc($results) ) { > > echo$row['id'], "<br />"; > > } > > } > > > > This may return any number of category ids so the problem is to figure > > out a way to pass the ids from the above code to the right ids in the > > first code above. How & what do I search to match the two ids? > > Well, if I'm understanding your queries correctly, you need to compare > the two sets of $row['id'] from the two queries above -- so your first > query should be the second one above ("SELECT id, category FROM ..."), > and you need to save the ids it returns for use in the loop which emits > the <select>s. This can be done by replacing the "echo $row['id']" with > "$selected_ids[] = $row['id']". Now you have an array of the selected > ids which you can use in your in_array(). So your finished code is going > to look something like this: > > <select name="categoriesIN[]" multiple size="8"> > <?php > // do categories > $selected_ids = array(); > $sql = "SELECT id, category FROM categories, book_categories > WHERE book_categories.bookID = $idIN && > book_categories.categories_id = categories.id"; > if ( ( $results = mysql_query($sql, $db) ) !== false ) { > while ( $row = mysql_fetch_assoc($results) ) { > $selected_ids[] = $row['id']; > } > } > $sql = "SELECT * FROM categories"; > if ( ( $results = mysql_query($sql, $db) ) !== false ) { > while ( $row = mysql_fetch_assoc($results) ) { > echo "<option value=", $row['id'], > (in_array($row['id'], $selected_ids)?" selected":""), > ">", $row['category'], > "</option>\n"; > } > } > ?> > </select> > > Hope this helps. > > Cheers! > > Mike > > -- > Mike Ford, Electronic Information Developer, > C507, Leeds Metropolitan University, Civic Quarter Campus, > Woodhouse Lane, LEEDS, LS1 3HE, United Kingdom > Email: m.ford@xxxxxxxxxxxxxx > Tel: +44 113 812 4730 > > > To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > _________________________________________________________________ Emoticons e Winks super diferentes para o Messenger. Baixe agora, é grátis! http://specials.br.msn.com/ilovemessenger/pacotes.aspx