variable houdt enkel waarde bij radio buttons, niet bij gewone buttons
Niet helemaal correct, dus opnieuw begonnen. Oplossing in mijn ogen: de operator weg te schrijven in een variable. Nu blijft de operator blijkbaar helaas enkel in de variable staan als ik met radio buttons werk. Wat logisch is, want ze worden pas doorgegeven als ik submit. Iemand enig idee hoe ik dit oplos/omzeil? Hieronder het voorbeeld met radio buttons.
Ps: Ik zou wel liefst strict in php/HTML blijven werken, dus geen JavaScript.
Index.php
<form action="index.php" method="post">
<input type="text" name="input1" />
<input type="radio" name="op" value="+" />
<input type="radio" name="op" value="-" />
<input type="radio" name="op" value="/" />
<input type="radio" name="op" value="*" />
<input type="submit" value="submit" />
<input type="text" name="input2" />
</form>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$input1 = $_POST['input1'];
$input2 = $_POST['input2'];
echo calculate($input1,$input2);
?>
$input1 = $_POST['input1'];
$input2 = $_POST['input2'];
echo calculate($input1,$input2);
?>
Calculator.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Gewijzigd op 25/11/2010 21:24:07 door Ewergreen php
Gebruik var_dump($_POST); om te kijken wat je binnen krijgt.
En met je deling, kijk dan wel even uit dat je niet door 0 heen deelt, krijg je nare foutmeldingen van.
Gewijzigd op 25/11/2010 19:21:39 door Johan K
Gewijzigd op 25/11/2010 19:46:59 door Maarten PHP
Gnotrgnotr gnotrgnotr op 25/11/2010 19:46:34:
Je zegt HMTL ow ik dacht tog dat het HTML was hoor
Misschien eerst maar eens een cursus Nederlands schrijven voor beginners doen?
Constructief.
Niet eerst de <form>
Jordi kroon op 25/11/2010 21:35:26:
Html begint met <html>
Niet eerst de <form>
Niet eerst de <form>
Thanks, had ze niet gecopy paste om de code niet te lang te maken.
Toevoeging op 25/11/2010 21:50:55:
Johan Kruse op 25/11/2010 19:19:02:
Maak ook een "default:" aan in je switch statement voor het geval dat er word gekloot met de input. De default case word uitgevoerd als de vorige cases nog niet gebroken zijn.
En met je deling, kijk dan wel even uit dat je niet door 0 heen deelt, krijg je nare foutmeldingen van.
En met je deling, kijk dan wel even uit dat je niet door 0 heen deelt, krijg je nare foutmeldingen van.
Goede opmerking. Heb ze allebei aangepast.
Toevoeging op 25/11/2010 21:58:38:
Ik heb een paar veranderingen doorgevoerd, maar de operator wordt nog steeds niet doorgegeven als ik op submit duw. Ergens logisch, maar ik vind dus echt niet hoe ik dit wel kan oplossen.
Index.php
<html>
<head>
<title>Calculator</title>
</head>
<body>
<form action="index.php" method="post">
<input type="text" name="input1" />
<input type="button" name="op" value="+" />
<input type="button" name="op" value="-" />
<input type="button" name="op" value="/" />
<input type="button" name="op" value="*" />
<input type="submit" value="submit" />
<input type="text" name="input2" />
</form>
Code (php)
</body>
</html>
Calculator.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
function calculate($one,$two){
switch ($_POST['op']){
case "+":
$result = $one + $two;
return $result;
break;
case "-":
$result = $one - $two;
return $result;
break;
case "*":
$result = $one * $two;
return $result;
break;
case "/":
if ($two == "0"){
echo "Divisions by 0 are not allowed";
break;
}else{
$result = $one / $two;
return $result;
break;
}
default:
echo "No operator could be found";
}
}
?>
function calculate($one,$two){
switch ($_POST['op']){
case "+":
$result = $one + $two;
return $result;
break;
case "-":
$result = $one - $two;
return $result;
break;
case "*":
$result = $one * $two;
return $result;
break;
case "/":
if ($two == "0"){
echo "Divisions by 0 are not allowed";
break;
}else{
$result = $one / $two;
return $result;
break;
}
default:
echo "No operator could be found";
}
}
?>
Gewijzigd op 25/11/2010 22:04:10 door ewergreen php
Wat zou je willen? Met een script de waarde in een input type=hidden zetten? Dan kun je wanneer je het formulier daarna weer opbouwt, iets met de waarde doen.
Wat bedoel je exact met een operator knop?
Liefst had ik gewoon met type=button gewerkt, maar ik heb al door dat ik dan of JavaScript of een workaround ga moeten gebruiken.
Ik zou liefst de buttons houden, dus als ik daar een input type=hidden voor nodig heb, so be it. Kan je hier a.u.b. een voorbeeldje van geven, aangezien ik niet meteen weet wat je hiermee bedoelt. Exacter: hoe schrijf je de waarde met een druk op de knop weg naar dat input field?
Je kunt met de plusknop in het voorbeeld hieronder nog niet zien dat je erop hebt geklikt. Maar de waarde wordt nu wel meegesubmit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form method="POST" action="">
<input type="text" name="arg1" />
<input type="button" onclick="setOperator(this)" value="+" />
<input type="text" name="arg2" />
<input type="submit" value="=" />
<input type="hidden" id="operator" name="operator" />
</form>
<script type="text/javascript">
function $(el) {
if (typeof el == "string") return document.getElementById(el);
return el;
}
function setOperator(el) {
$('operator').value = el.getAttribute('value');
}
</script>
<input type="text" name="arg1" />
<input type="button" onclick="setOperator(this)" value="+" />
<input type="text" name="arg2" />
<input type="submit" value="=" />
<input type="hidden" id="operator" name="operator" />
</form>
<script type="text/javascript">
function $(el) {
if (typeof el == "string") return document.getElementById(el);
return el;
}
function setOperator(el) {
$('operator').value = el.getAttribute('value');
}
</script>
vreesde al dat ik het enkel met JavaScript ging kunnen oplossen. Bedankt voor de voorzet!
Hierom geldt dus ook dat je controleert of een form gesubmit is door if($_SERVER['REQUEST_METHOD'] == 'POST') te gebruiken ;-)