可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm having trouble with more then one submit Buttons in HTML & PHP, i tried to code a GUI for a web-based calculator. That's realy easy, but the function in php isn't so easy. So i have this simple GUI with 6 submit buttons:
<?php
$output= isset($_POST['output']) ? $_POST['output'] : "";
function calc(){
//calculate...
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>Calc</title>
<style type="text/css">
.bwidth {
width: 100%;
}
</style>
</head>
<body>
<form action="calc.php">
<h1>
<u>MY Own Calculator</u>
</h1>
<table border="3px" type="box" cellspacing="5px" width="250px">
<tr style="height: 24px;">
<td colspan="3"><input type="text" name="<?php $ausgabe ?>"
value="0" style="width: 98%;" /></td>
</tr>
<tr>
<td><input class="bwidth" type="submit" name="1" value="1" /></td>
<td><input class="bwidth" type="submit" name="2" value="2" /></td>
<td><input class="bwidth" type="submit" name="3" value="3" /></td>
</tr>
<tr>
<td><input class="bwidth" type="submit" name="minus" value="-" /></td>
<td><input class="bwidth" type="submit" name="plus" value="+" /></td>
<td><input class="bwidth" type="submit" name="enter"
value="=" /></td>
</tr>
</table>
</form>
</body>
Now how I can differentiate these many submit buttons? It's even possible to have more than one submit button? I tried it to seperate the buttons by the value... but it didn't work.
And sb has an idea how i can add a value to an existing value in the textfield? So i can push button 1 and it will write 1 in the textfield and when i will push button 2 it will add the number 2 so it will a "12"?
Thanks for all suggestions!
回答1:
You can try to verify which button is set using isset($_GET['input_name'])
.
Or you could name different the inputs:
<form action="calc.php">
<h1>
<u>MY Own Calculator</u>
</h1>
<table border="3px" type="box" cellspacing="5px" width="250px">
<tr style="height: 24px;">
<td colspan="3"><input type="text" name="<?php $ausgabe ?>"
value="0" style="width: 98%;" /></td>
</tr>
<tr>
<td><input class="bwidth" type="submit" name="digit" value="1" /></td>
<td><input class="bwidth" type="submit" name="digit" value="2" /></td>
<td><input class="bwidth" type="submit" name="digit" value="3" /></td>
</tr>
<tr>
<td><input class="bwidth" type="submit" name="operation" value="-" /></td>
<td><input class="bwidth" type="submit" name="operation" value="+" /></td>
<td><input class="bwidth" type="submit" name="operation" value="=" /></td>
</tr>
</table>
</form>
And in your function:
function calc(){
$op = isset($_GET['operation']) ? $_GET['operation'] : null;
switch ($op) {
case "+": .... ; break;
case "-": .... ; break;
case "=": .... ; break;
default: "not supported";
}
}
回答2:
In your php
if(isset($_POST['minus'])) {
// selected minus
}
if(isset($_POST['plus'])) {
// selected plus
}
if(isset($_POST['enter'])) {
// selected enter
}
When you click on a button its going to be send with your post data to the server. All the post data you find in the $_POST array.
If you want to look whats in the $_POST array you can run this small code:
<?php
echo '<pre>' . print_r($_POST, true) . '</pre>';
?>
回答3:
You can do this using JavaScript, first you will have to change your <form>
to something like:
<form id="form1" name="form1" method="post" action="calc.php">
Then the JavaScript and the buttons should look like this:
<script>
function submitForm(action)
{
document.getElementById('form1').action = action;
document.getElementById('form1').submit();
}
</script>
...
<input type="button" onclick="submitForm('page1.php')" value="submit 1" />
<input type="button" onclick="submitForm('page2.php')" value="submit 2" />
回答4:
May be you can use one name for all the submit buttons.
<input type="submit" name="operator" value="+" />
<input type="submit" name="operator" value="-" />
<input type="submit" name="operator" value="=" />
and you can get the values in php
<?php
$opr = $_GET['operator'];
if($opr == "+") {
//do something
} else if($opr == "-") {
//do something
} else if($opr == "=") {
//do something
}
?>
回答5:
when you submit the form to calc.php
Inside calc.php
check which form element received.
if(isset($_REQUEST['minus']))
{
// minus is clicked
}
else if(isset($_REQUEST['plus']))
{
// plus is clicked
}
else if(isset($_REQUEST['enter']))
{
// enter is clicked
}
The clicked button will be sent with the form, not the others...
Hope it helps...
回答6:
Yes, you can have n number of submit buttons in a form.
Specify the action page in the same line as with the submit button.
<form action="actionpage.php">
<input type="submit" value="1">
<input type="submit" value="2" formaction="postPage.php">
</form>
UPDATED - IF ISSUES IN IE
<form>
<input type="submit" value="1" onclick="document.formName.action='abc.php';">
<input type="submit" value="2" onclick="document.formName.action='xyz.php';">
</form>
回答7:
You can use JavaScript to submit your form. After clicking button, you call JS function that set some hidden element with pushed operation and then submit form to server.