<xd:xdoc xmlns:xd="http://mit.edu/2003/XDOC"
	 problem-set="0">
<xd:head>
  <link rel="stylesheet" href="/styles/6002x-admin.css" type="text/css" />
</xd:head>


<h3>Multiple button example</h3>

<?scheme

#|
This example illustrates how to detect button presses.  The button is
generated by INPUT whose SUBMIT attribute is a given symbol.  When the
button is pressed, the paged is revisited and
HTTP-REQUEST-POST-PARAMETER can check for that symbol to detect
whether the button was pressed.
|#

(define (go-button submit #!optional value)
  (let ((v (if (default-object? value) "Go" value)))
    (input 'type 'submit 'name submit 'value v)))

(define (form-test-request)
  (emit
   (go-button 'one "button 1")
   (go-button 'two "button 2")))

(define (form-test-result)
  (let ((bindings (http-request-post-parameter-bindings)))
    (let ((names (map car bindings)))
      (cond ((memq 'one names)
	     (emit "\n" "Button 1 was pressed"))	     
	    ((memq 'two names)
	     (emit "\n" "Button 2 was pressed"))
	    (else (emit "Nothing was pressed"))))))

(define (form-test-result-variant)
  (if (http-request-post-parameter 'one)
      (emit "\n" "Button 1 was pressed"))
  (if (http-request-post-parameter 'two)
      (emit "\n" "Button 2 was pressed"))
  )

(form-test-request)

(form-test-result)

?>

</xd:xdoc>
