ninimac Posted April 30, 2008 Share Posted April 30, 2008 Hi hope someone can help me. I'm creating a form which allows a use to update a record in an SQL database. I want to populate the form with the current data in that record. I've got it working fine for the input boxes and text areas but don't know how to do it for the drop down box (first in the form). Any help is greatly appreciated! :-\ $query1 = "SELECT * FROM articles where id=".$rowid.""; $getvals = mysql_query($query1); while($row = mysql_fetch_array($getvals, MYSQL_ASSOC)){ ?> <form method="post"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">Section:</td> <td> <select name="a_section" id="a_section"> <option value="gw">Global Warming</option> <option value="ol">Ozone Layer</option> <option value="ae">Alternative Energy</option> </select> </td> </tr> <tr> <td width="100">Title:</td> <td><input name="a_title" type="text" id="a_title" value= "<?php echo htmlentities($row['a_title']); ?>"> </td> </tr> <tr> <td width="100">Synopsis:</td> <td><TEXTAREA name="a_synopsis" type="text" id="a_synopsis" rows="6" cols="32" value=""><?php echo htmlentities($row['a_synopsis']);?></TEXTAREA></td> </tr> <tr> <td width="100">Article Text:</td> <td><TEXTAREA name="a_text" type="text" id="a_text" rows="6" cols="32" value=""><?php echo htmlentities($row['a_text']);?></TEXTAREA></td> </tr> <tr> <td width="100">Image:</td> <td><input name="a_image" type="text" id="a_image" value="<?php echo $row['a_image'];?>"></td> </tr> <tr> <td width="100">Thumbnail Image:</td> <td><input name="a_thumb_image" type="text" id="a_thumb_image" value="<?php echo $row['a_thumb_image'];?>"></td> </tr> <tr> <td width="100">Author Name:</td> <td><input name="a_author" type="text" id="a_author" value="<?php echo $row['a_author'];?>"></td> </tr> <tr> <td width="100"> </td> <td><input name="add" type="submit" id="add" value="Add Article"></td> </tr> </table> </form> <?php } Quote Link to comment https://forums.phpfreaks.com/topic/103628-populating-form-with-record-from-mysql-db/ Share on other sites More sharing options...
Fearpig Posted May 1, 2008 Share Posted May 1, 2008 Just make sure the variable can be declared where you want, you can either do this by just wrapping the variable in php tags where-ever it is in the code or don't drop out of php after the select query. I prefer staying in php and echoing all the html otherwise you might end up going in and out of php all over the page... This might not be the best method but it works for me! <?php $sql="SELECT * FROM table WHERE field = 'filter'"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} while (odbc_fetch_row($rs)) { $Field1=odbc_result($rs,"field1"); $Field2=odbc_result($rs,"field2"); $Field3=odbc_result($rs,"field3"); echo " <form action='your_target' method='POST'> <select name='select_box' id='select_box'> <option value='$Field1'>$Field1</option> <option value='ol'>Ozone Layer</option> <option value='ae'>Alternative Energy</option> </select> ...and so on with the rest of your form... </form> "; } Its not in your code but I hope that helps. Quote Link to comment https://forums.phpfreaks.com/topic/103628-populating-form-with-record-from-mysql-db/#findComment-531009 Share on other sites More sharing options...
ignace Posted May 2, 2008 Share Posted May 2, 2008 @fearpig: your code should be: <?php $sql="SELECT * FROM table WHERE field = 'filter'"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} echo "<form action='your_target' method='POST'>"; while (odbc_fetch_row($rs)) { $Field1=odbc_result($rs,"field1"); $Field2=odbc_result($rs,"field2"); $Field3=odbc_result($rs,"field3"); echo " <select name='select_box' id='select_box'> <option value='$Field1'>$Field1</option> <option value='ol'>Ozone Layer</option> <option value='ae'>Alternative Energy</option> </select> ...and so on with the rest of your form... "; } echo "</form>"; however i strongly suggest you do not mix html and php as it gets very hard to maintain over time. This is called separating bussiness- from presentation logic, and i use the MVC pattern to accomplish that. However a simple example could be: // index.php <?php // i like to use overloading it's very nice for use as a templace mechanism class Template { protected $_vars = array(); public function __set($key, $value) { $this->_vars[$key] = $value; } public function __get($key) { if ($this->__isset($key)) { return $this->_vars[$key]; } } public function __isset($key) { return (null !== $this->_vars[$key]); } public function __unset($key) { unset($this->_vars[$key]; } public function render($script) { include_once($script); } public function __call($method, $args) { // does the helper exist? } } $tpl = new Template(); while (false != ($row = mysql_fetch_array($result, MYSQL_ASSOC))) { foreach ($row as $key => $value) { $tpl->{$key} = $value; } } $tpl->render('index.tpl'); ?> // index.tpl (this is also called a view, with it you can use view helpers, like populating a combo box) <form action="" method="post" enctype="application/x-www-form-urlencoded"> <fieldset><legend>Account Details</legend> <table> <tr> <td><label for="name">Name</label>:</td> <td><?php echo $this->textField($this->name /* name refers to the table field */); ?></td> </tr> <tr> <td><label for="select">Country</label>:</td> <td><?php echo $this->comboBox($this->comboBoxDetails); ?></td> </tr> ... </table> </fieldset> </form> </form> Quote Link to comment https://forums.phpfreaks.com/topic/103628-populating-form-with-record-from-mysql-db/#findComment-531582 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.