RE: populate form input option dropdown box from existing data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux