variable houdt enkel waarde bij radio buttons, niet bij gewone buttons
Door
ewergreen php
op 25-11-2010 18:51
gewijzigd op 25-11-2010 21:24
2.418 views
Een van de voorstellen in de beginnersoefeningen thread die ik laatst startte, was een rekenmachine te schrijven. Hoewel ik vrij snel iets werkends had, kwam ik erachter dat ik telkens eerst de cijfers moest ingeven en dan pas de operator kon ingeven.
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.
Calculator.php
<?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 "/":
$result = $one / $two;
return $result;
break;
}
}
?>
?
Onbekende gebruiker
25-11-2010 18:57
Controleren of een post is gedaan doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
Gebruik [php]var_dump[/php]($_POST); om te kijken wat je binnen krijgt.
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.
Thanks, had ze niet gecopy paste om de code niet te lang te maken.
[size=xsmall]Toevoeging op 25/11/2010 21:50:55:[/size]
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.
Goede opmerking. Heb ze allebei aangepast.
[size=xsmall]Toevoeging op 25/11/2010 21:58:38:[/size]
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.
De operator wordt wel gepost wanneer je een operator-knop gebruikt, maar hij staat niet in een veld. Type=button is niet nuttig om waardes door te geven.
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.
@Bas
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?