<% '============================================================================= ' FILE: editprinter.asp ' PURPOSE: Edit printer information with nested entity creation ' SECURITY: Parameterized queries, HTML encoding, input validation ' UPDATED: 2025-11-10 - Modernized with Bootstrap theme '============================================================================= %> <% theme = Request.Cookies("theme") IF theme = "" THEN theme="bg-theme1" END IF ' Get and validate all inputs Dim printerid, modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, maptop, mapleft printerid = Trim(Request.Querystring("printerid")) modelid = Trim(Request.Form("modelid")) serialnumber = Trim(Request.Form("serialnumber")) ipaddress = Trim(Request.Form("ipaddress")) fqdn = Trim(Request.Form("fqdn")) printercsfname = Trim(Request.Form("printercsfname")) printerwindowsname = Trim(Request.Form("printerwindowsname")) machineid = Trim(Request.Form("machineid")) maptop = Trim(Request.Form("maptop")) mapleft = Trim(Request.Form("mapleft")) ' Get form inputs for new model Dim newmodelnumber, newvendorid, newmodelnotes, newmodeldocpath newmodelnumber = Trim(Request.Form("newmodelnumber")) newvendorid = Trim(Request.Form("newvendorid")) newmodelnotes = Trim(Request.Form("newmodelnotes")) newmodeldocpath = Trim(Request.Form("newmodeldocpath")) ' Get form inputs for new vendor Dim newvendorname newvendorname = Trim(Request.Form("newvendorname")) ' Validate required fields If Not IsNumeric(printerid) Or CLng(printerid) < 1 Then objConn.Close Response.Redirect("displayprinters.asp?error=INVALID_PRINTER_ID") Response.End End If If modelid <> "new" And (Not IsNumeric(modelid)) Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=INVALID_MODEL_ID") Response.End End If If Not IsNumeric(machineid) Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=INVALID_MACHINE_ID") Response.End End If ' Validate field lengths If Len(serialnumber) > 100 Or Len(fqdn) > 255 Or Len(printercsfname) > 50 Or Len(printerwindowsname) > 255 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=FIELD_LENGTH_EXCEEDED") Response.End End If ' Handle new model creation If modelid = "new" Then If Len(newmodelnumber) = 0 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=MODEL_REQUIRED") Response.End End If If Len(newvendorid) = 0 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=VENDOR_REQUIRED") Response.End End If If Len(newmodelnumber) > 255 Or Len(newmodelnotes) > 255 Or Len(newmodeldocpath) > 255 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=MODEL_FIELD_LENGTH_EXCEEDED") Response.End End If ' Handle new vendor creation (nested) If newvendorid = "new" Then If Len(newvendorname) = 0 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=VENDOR_NAME_REQUIRED") Response.End End If If Len(newvendorname) > 50 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=VENDOR_NAME_TOO_LONG") Response.End End If ' Insert new vendor using parameterized query Dim sqlNewVendor sqlNewVendor = "INSERT INTO vendors (vendor, isactive, isprinter, ispc, ismachine) VALUES (?, 1, 1, 0, 0)" On Error Resume Next Dim cmdNewVendor Set cmdNewVendor = Server.CreateObject("ADODB.Command") cmdNewVendor.ActiveConnection = objConn cmdNewVendor.CommandText = sqlNewVendor cmdNewVendor.CommandType = 1 cmdNewVendor.Parameters.Append cmdNewVendor.CreateParameter("@vendor", 200, 1, 50, newvendorname) cmdNewVendor.Execute If Err.Number <> 0 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=VENDOR_CREATE_FAILED&msg=" & Server.URLEncode(Err.Description)) Response.End End If ' Get the newly created vendor ID Dim rsNewVendor Set rsNewVendor = objConn.Execute("SELECT LAST_INSERT_ID() AS newid") newvendorid = 0 If Not rsNewVendor.EOF Then If Not IsNull(rsNewVendor("newid")) Then newvendorid = CLng(rsNewVendor("newid")) End If End If rsNewVendor.Close Set rsNewVendor = Nothing Set cmdNewVendor = Nothing On Error Goto 0 End If ' Insert new model using parameterized query Dim sqlNewModel sqlNewModel = "INSERT INTO models (modelnumber, vendorid, notes, documentationpath, isactive) VALUES (?, ?, ?, ?, 1)" On Error Resume Next Dim cmdNewModel Set cmdNewModel = Server.CreateObject("ADODB.Command") cmdNewModel.ActiveConnection = objConn cmdNewModel.CommandText = sqlNewModel cmdNewModel.CommandType = 1 cmdNewModel.Parameters.Append cmdNewModel.CreateParameter("@modelnumber", 200, 1, 255, newmodelnumber) cmdNewModel.Parameters.Append cmdNewModel.CreateParameter("@vendorid", 3, 1, , CLng(newvendorid)) cmdNewModel.Parameters.Append cmdNewModel.CreateParameter("@notes", 200, 1, 255, newmodelnotes) cmdNewModel.Parameters.Append cmdNewModel.CreateParameter("@documentationpath", 200, 1, 255, newmodeldocpath) cmdNewModel.Execute If Err.Number <> 0 Then objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=MODEL_CREATE_FAILED&msg=" & Server.URLEncode(Err.Description)) Response.End End If ' Get the newly created model ID Dim rsNewModel Set rsNewModel = objConn.Execute("SELECT LAST_INSERT_ID() AS newid") modelid = 0 If Not rsNewModel.EOF Then If Not IsNull(rsNewModel("newid")) Then modelid = CLng(rsNewModel("newid")) End If End If rsNewModel.Close Set rsNewModel = Nothing Set cmdNewModel = Nothing On Error Goto 0 End If ' Handle map coordinates - default to 50 if not provided Dim maptopValue, mapleftValue If maptop <> "" And IsNumeric(maptop) Then maptopValue = CLng(maptop) Else maptopValue = 50 End If If mapleft <> "" And IsNumeric(mapleft) Then mapleftValue = CLng(mapleft) Else mapleftValue = 50 End If ' Update printer using parameterized query Dim strSQL strSQL = "UPDATE printers SET modelid = ?, serialnumber = ?, ipaddress = ?, fqdn = ?, " & _ "printercsfname = ?, printerwindowsname = ?, machineid = ?, maptop = ?, mapleft = ? " & _ "WHERE printerid = ?" On Error Resume Next Dim cmdUpdate Set cmdUpdate = Server.CreateObject("ADODB.Command") cmdUpdate.ActiveConnection = objConn cmdUpdate.CommandText = strSQL cmdUpdate.CommandType = 1 ' Add parameters in order cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@modelid", 3, 1, , CLng(modelid)) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@serialnumber", 200, 1, 100, serialnumber) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@ipaddress", 200, 1, 50, ipaddress) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@fqdn", 200, 1, 255, fqdn) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@printercsfname", 200, 1, 50, printercsfname) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@printerwindowsname", 200, 1, 255, printerwindowsname) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@machineid", 3, 1, , CLng(machineid)) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@maptop", 3, 1, , maptopValue) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@mapleft", 3, 1, , mapleftValue) cmdUpdate.Parameters.Append cmdUpdate.CreateParameter("@printerid", 3, 1, , CLng(printerid)) cmdUpdate.Execute If Err.Number <> 0 Then Set cmdUpdate = Nothing objConn.Close Response.Redirect("displayprinter.asp?printerid=" & printerid & "&error=UPDATE_FAILED&msg=" & Server.URLEncode(Err.Description)) Response.End End If Set cmdUpdate = Nothing On Error Goto 0 objConn.Close ' Success - redirect to displayprinter Response.Redirect("./displayprinter.asp?printerid=" & printerid & "&success=1") %>

Redirecting...

If you are not redirected automatically, click here.