Python : How to use variables with HTML FORM Hidden Fields.

Posted on 2015-02-22
Last Modified: 2015-02-23
I have a HTML 5 form with two hidden fields. I need to assign the values of existing variables to each hidden field as shown below in. The form has a cgi action page where I recover the values of the variables and other field info which has been directly entered into the form.

Everything works, except the hidden fields. The variable names do not get translated into their numerical values - so all the form transmits is OrderID and TotalCost. I have tried using print(OrderID) and print(TotalCost) but that does no work.

Is here a special syntax to be used in html forms to address this  ?

Thanks for any help

print("<input name='OrderID' type='hidden' id='OrderID' value='OrderID' />")
      print("<input name='TotalCost' type='hidden' id='TotalCost' value='TotalCost' />")

Open in new window

def getData():
      CustomerID = formData.getvalue('CustomerID')
      DelDate = formData.getvalue('DelDate')
      DelTime = formData.getvalue('DelTime')
      [b]TotalCost = formData.getvalue('TotalCost')
      OrderID =  formData.getvalue('OrderID')[/b]
      return CustomerID,DelDate,DelTime,TotalCost,OrderID

Open in new window

Question by:jameskane
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 3
  • 2
LVL 25

Expert Comment

ID: 40624467
You need to have your print statement actually output/include the values of your variables:

OrderID = '13313131'  # OrderID is a defined variable with the value you want in it
print("<input name='OrderID' type='hidden' id='OrderID' value='{0}' />".format(OrderID))

Open in new window

The above will output:
<input name='OrderID' type='hidden' id='OrderID' value='13313131' />

Open in new window


Author Comment

ID: 40624479
OrderID = '13313131'......  I don't know how to get that statement.  I do have OrderID which has a value, say 13313131.. but to see what its actual value is at the moment I only know print(OrderID) ??
LVL 25

Accepted Solution

clockwatcher earned 500 total points
ID: 40624493
I'm just trying to illustrate that OrderID has to be a defined at the point that you're trying to output it.   Because without seeing your code, I'm guessing there's a good chance it's not going to be.  

Anyway... a string's format method allows you to embed variables within it.   See for a detailed explanation and sample.

Basically you need to get a string to include the variable you want in it.  Under newer versions of python (2.6+) that's typically down with the format method (  

But you could also use concatenation (+):

print("<input name='OrderID' type='hidden' id='OrderID' value='" + OrderID + "' />")

Or you could use the % operator:

print("<input name='OrderID' type='hidden' id='OrderID' value='%s' />" % OrderID)

Or you could use a string template (

Use format, just showing the others as examples.  The idea is all the same.  You need to get a string that includes the value of your variable.  The above methods are ways to do that.
Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

LVL 83

Expert Comment

by:Dave Baldwin
ID: 40624498

Author Comment

ID: 40624679
Thanks very much clockwatcher - I spent a day trying to figure this out !!

The OrderID hidden field worked perfectly first time !!

Have a problem still with the TotalCost. The form statement is as follows:

print("<input name='TotalCost' type='hidden' id='TotalCost' value='{0}' />".format(GrandTotalCost))

TotalCost is the name of the table column I want to update. However, the name of the variable with the value is called GrandTotalCost.   Other than that, the conditions are exactly the same as those which exist for OrderID.
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40624689
In your original post above, the value returned is just 'TotalCost', not 'GrandTotalCost'.
LVL 25

Expert Comment

ID: 40624890
Are you getting an error?  Is it outputting a value different than what you're expecting it to?  What exactly is the problem that you're having with TotalCost?   We'll probably need a bit more to go on to be of much help.

Author Comment

ID: 40625251
TotalCost is being picked up as [12] - i.e. as a list. This is then fed into the database update function (below) which uploads a 0, instead of 12 (as in this example.

def UpdateCustomerOrderInfo(db,cursor):
      cursor.execute ("""
         UPDATE customerorder
         SET CustomerID=%s, DelDate=%s, DelTime=%s, TotalCost=%s
         WHERE OrderID=%s
      """, (CustomerID, DelDate, DelTime, TotalCost, OrderID))
      cursor.close ()

Open in new window

I have tried to change TotalCost before the above function is executed .... TotalCost=TotalCost[12] - but this does not return 12 - rather [ ???  Bizzare ???  and the database update function gets updated in column TotalCost from NULL to 0.

Author Comment

ID: 40625255
sorry, error above... should read TotalCost=TotalCost[0]

Author Comment

ID: 40625361
Been looking at this again clockwatcher -  the problem might be the value of GrandTotalCost I am feeding into the hidden field. It may be bracketed []. I need to leave it for the moment. Please assume the problem has been solved and I will get back later to confirm.
Thanks very much

Author Closing Comment

ID: 40625398
Thanks very much for the solution and the great pointers.

Featured Post

Don't Cry: How Liquid Web is Ensuring Security

WannaCry is just the start. Read how Liquid Web is protecting itself and its customers against new threats.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When it comes to write a Context Sensitive Help (an online help that is obtained from a specific point in state of software to provide help with that state) ,  first we need to make the file that contains all topics, which are given exclusive IDs. …
When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
In this tutorial viewers will learn how to embed Flash content in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: "<!DOCTYPE html>": Use the <object> tag to embed Flash content.: To specify that the object is Flash content, d…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question