<?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?>
<?php
	// (C) Copyright 2001
	// Murray Jensen <Murray.Jensen@cmst.csiro.au>
	// CSIRO Manufacturing Science and Technology, Preston Lab

	// edit page (hymod_bddb / boards)

	require("defs.php");

	pg_head("$bddb_label - Edit Board Log Entry");

	if ($serno == 0)
		die("serial number not specified!");

	if (!isset($logno) || $logno == 0)
		die("log number not specified!");

	$pserno = sprintf("%010d", $serno);
	$plogno = sprintf("%010d", $logno);

	echo "<center><b><font size=+2>";
	echo "Board Serial Number: $pserno, Log Number: $plogno";
	echo "</font></b></center>\n";

?>
<p>
<form action=doedlog.php method=POST>
<?php
	echo "<input type=hidden name=serno value=$serno>\n";
	echo "<input type=hidden name=logno value=$logno>\n";

	$r=mysql_query("select * from log where serno=$serno and logno=$logno");
	$row=mysql_fetch_array($r);
	if(!$row)
		die("no record of log entry with serial number '$serno' " .
			"and log number '$logno' in database");

	begin_table(3);

	// date date
	print_field("date", $row);

	// who char(20)
	print_field("who", $row);

	// details text
	print_field_multiline("details", $row, 60, 10, 'text_filter');

	end_table();

	echo "<p>\n";
	echo "<center><b>";
	echo "<font color=#ff0000>WARNING: NO UNDO ON DELETE!</font>";
	echo "<br></br>\n";
	echo "<tt>[ <a href=\"dodellog.php?serno=$serno&logno=$logno\">delete</a> ]</tt>";
	echo "</b></center>\n";
	echo "</p>\n";
?>
<p>
<table align=center width="100%">
<tr>
  <td align=center>
    <input type=submit value=Edit>
  </td>
  <td>
    &nbsp;
  </td>
  <td align=center>
    <input type=reset value=Reset>
  </td>
  <td>
    &nbsp;
  </td>
  <td align=center>
    <a href="index.php">Back to Start</a>
  </td>
</tr>
</table>
</p>
</form>
<?php
	pg_foot();
?>
