I have a small form for updating existing records.
I'm loading the Service IDs to the dropdown box using PHP. And when the user clicks the Load button, it is supposed to display the other details related to that ID in the textboxes below. Here is the code I have so far.
<html>
<head>
</head>
<body>
<?php
//Database initialization
require_once("db_handler.php");
$conn = iniCon();
$db = selectDB($conn);
$query = "SELECT * FROM taxi_services ORDER BY SID";
$result2 = mysql_query($query, $conn);
?>
<div id="upserv">
<b id="caption2">Update location</b>
<br/><br/>
<form name="upServForm" action="<?php echo $PHP_SELF; ?>" method="post" >
<?php
$dropdown = "<select name='codes'>";
while($row = mysql_fetch_assoc($result2))
{
$dropdown .= "\r\n<option value='{$row['SID']}'>{$row['SID']}</option>";
}
$dropdown .= "\r\n</select>";
?>
Service ID <?php echo $dropdown; ?> <input type="submit" value="Load" name="loadbtn">
<table width="300" border="0">
<tr>
<td>Name</td>
<td><input type="text" name="upName" style="text-align:right" value="<? echo $savedName; ?>" /></td>
</tr>
<tr>
<td>Cost</td>
<td><input type="text" name="upCost" style="text-align:right" value="<? echo $savedCost; ?>" /></td>
</tr>
<tr>
<td>Active</td>
<td><input type="checkbox" name="upActive" value="<? echo $savedActive; ?>" /></td>
</tr>
</table>
</div>
<br/>
<div id="buttons">
<input type="reset" value="Clear" /> <input type="submit" value="Save" name="updatebtn" />
</div>
</form>
<?php
if(isset($_POST["loadbtn"]))
{
$id = $_POST["codes"];
$query = "SELECT Name, Cost, Active FROM taxi_services WHERE SID = '$id' ";
$result = mysql_query($query, $conn);
$details = mysql_fetch_array($result);
$savedName = $details["Name"];
$savedCost = $details["Cost"];
$savedActive = $details["Active"];
}
?>
</body>
</html>
The query gets executed just fine but the data doesn't get displayed in the textboxes. Can anyone please tell me what I am missing here?
Thank you.
Your query has to be before the output:
Also note the typecast
(integer)
of the id to secure against sql injections.Also note the security issues with
$PHP_SELF
http://php.about.com/od/learnphp/qt/_SERVER_PHP.htm I changed the code to$_SERVER['SCRIPT_NAME']
ALso note to not use
register_globals
and disable it in the configuration if you can (use$_SERVER['SCRIPT_NAME'] instead of
$SCRIPT_NAME`) : http://www.php.net/manual/en/security.globals.phpIf you learn php from a book and this is based on sourcecode out of this book you should throw it away immediately.