The easiest and best solution is to redirect to a new page after the submit. But I have had cases where it was necessary to have the submit code and the form on the same page.
I agree totally with jonathan that a server-side solution is the way to go. To solve the problem (avoid clicking twice and/or reloading the page) I used a hidden field that generated a unique ID based, and then placed that into a field that only accepts unique values. If the user reloads, the query fails - trap that error and you're golden. "Jonathan Hilgeman" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED].; > Hi Jennifer, > I'm guessing the purpose of this would be to keep people from > double-clicking and submitted information twice, possibly making an > application deduct payment twice or something important similar in nature. > > The best way I've found of accomplishing the goal of keeping people from > clicking twice has three parts: > 1) Quickly switching the page. On the next page, have PHP write out about > 300 spaces and a newline, then call the flush() function to make the output > get sent to the browser. In many cases, this will cause the browser to > quickly switch to the next page and display a blank page while the data gets > processed. > > 2) It's still remotely possibly to click twice even if you have part 1 in > place, so this is a more fool-proof method. Store your data in a database > before processing it - along with a timestamp. When the person clicks the > submit button twice, the program checks the database to see if there is the > same information with a very close timestamp. If so, update the timestamp in > the database. At this point you can choose 3 paths: > > - Store the data so you can batch-process the data at a later time, once you > are sure that the visitor has left and there will be no more clicks. For > example, have a program that runs every 5 minutes (via cron), then have that > program check for data/orders that are at least 5 minutes old, and process > them. That means that the timestamp hasn't been updated by extra clicks in 5 > minutes (and you could still have notified the visitor that their order or > data request is now in line to be processed). > > - Process the data immediately. If you need to process an order immediately > and give back results, use the above method, but modify it a bit. Instead of > just displaying notification that their order is in line to be processed, > you can submit to another PHP program which sleeps for about 3-4 seconds, > then checks the database until there are no clicks for at least 4 seconds, > and THEN processes the data, and returns a value to the screen in like 4-5 > seconds. Both of these methods have similar goals, though - Receive data and > timestamp it, Wait $Time, Check for timestamp updates, Process when > timestamp is $Time old. > > 3) Have a very visible notice that people should not click multiple times, > or else undesirable results may occur, and we want "your" request/order to > be perfect. Emphasize the request to click only once and to be patient, and > if something goes wrong, here's how to contact us. > > - Jonathan > > -----Original Message----- > From: Jennifer Downey [mailto:[EMAIL PROTECTED]] > Sent: Saturday, March 02, 2002 10:18 PM > To: [EMAIL PROTECTED] > Subject: [PHP-DB] Tutorial? > > > Hi all, > > Can anyone point me to a good tutorial on how to disable a submit button > once clicked? > preferably in php. > > Thanks > Jennifer Downey > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php