Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win


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

Posted on 2015-02-22
Medium Priority
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 2000 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 http://infohost.nmt.edu/tcc/help/pubs/python/web/new-str-format.html 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 (https://docs.python.org/2/library/string.html#format-string-syntax).  

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 (https://docs.python.org/2/library/string.html#template-strings).

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.
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

LVL 84

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 84

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

Tech or Treat!

Submit an article about your scariest tech experience—and the solution—and you’ll be automatically entered to win one of 4 fantastic tech gadgets.

Question has a verified solution.

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

Use these top 10 tips to master the art of email signature design. Create an email signature design that will easily wow recipients, promote your brand and highlight your professionalism.
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
In this tutorial viewers will learn how to style transparent/translucent elements using alpha transparency in CSS Start with a normal styled element, such as a div.: Define its "background-color" property as "rgba (255, 255, 255, .5): The numbers in…
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

618 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