RE: [PHP] populate form input option dropdown box from existing data
| From: | Yuri Yarlei | Date: | Wed, 17 Jun 2009 12:12:50 +0000 |
| Subject: | RE: [PHP] populate form input option dropdown box from existing data | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-294153@lists.php.net to get a copy of this message | ||
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@leedsmet.ac.uk
> To: php-general@lists.php.net
> Subject: RE: [PHP] 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@leedsmet.ac.uk
> Tel: +44 113 812 4730
>
>
> To view the terms under which this email is distributed, please go to Pˆ¡áPD0rj¨
> whttp://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