formulier afhandeling
Zelf krijg ik 2 dingen niet werkend.
Laat ik beginnen met de code
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(isset($_POST['submit'])){
$amount = $_POST['amount']; // Storing value amount
$orderid = $_POST['orderid']; // Storing value orderid
}
//create empty error orderid
if (empty($_POST['orderid'])) {
$emptyorderid = 'Vul het ordernummer in';
}
//create empty error amount
if (empty($_POST['amount'])) {
$emptyamount = 'Vul het te betalen bedrag in';
}
?>
<html>
<body>
<form action="" method="post">
<input name="orderid" placeholder="Voer bestelnummer in">
<input name="amount" placeholder="Voer het te betalen bedrag in">
<input type="submit" value="Proceed to payment">
</form>
if(isset($_POST['submit'])){
$amount = $_POST['amount']; // Storing value amount
$orderid = $_POST['orderid']; // Storing value orderid
}
//create empty error orderid
if (empty($_POST['orderid'])) {
$emptyorderid = 'Vul het ordernummer in';
}
//create empty error amount
if (empty($_POST['amount'])) {
$emptyamount = 'Vul het te betalen bedrag in';
}
?>
<html>
<body>
<form action="" method="post">
<input name="orderid" placeholder="Voer bestelnummer in">
<input name="amount" placeholder="Voer het te betalen bedrag in">
<input type="submit" value="Proceed to payment">
</form>
vraag 1:
Hoe kan ik php automatisch een euro symbool voor het bedrag laten plaatsen als het formulier gesubmit is?
Zelf had ik geprobeerd een variable hiervoor te maken die ik laat echoen voor de variable $amount
Het eurosymbool wil ik ook pas laten zien als er wel een bedrag is ingevuld anders niet.
Vraag 2:
Stel ik vul het ordernummer is maar geen bedrag en ik duw op submit, dan word de error amount getoont d.m.v. een echo variable emptyamount. Dat werkt prima, alleen verliest hij de waarde van het orderid uit de input.
Is er een mogelijkheid om deze vast te houden tot dat het formulier foutvrij is?
Moet ik dan werken met een input type button?
Mvg,
Yoeri
Gewijzigd op 01/04/2015 13:25:45 door Yoeri Achterbergen
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
<?php
if(isset($_POST['send'])) {
$amount = trim($_POST['amount']); // Storing value amount
$orderid = trim($_POST['orderid']); // Storing value orderid
if (empty($orderid) || empty($amount])) {
echo 'Vul een ordernummer en bedrag in';
}
else {
$ammount = "€".$ammount;
// rest van je code
}
}
?>
<html>
<body>
<form action="" method="post">
<input type="text" name="orderid" placeholder="Voer bestelnummer in" value="<?php if (isset($orderid)) echo $orderid; ?>">
<input type="text" name="amount" placeholder="Voer het te betalen bedrag in" value="<?php if (isset($ammount)) echo $ammount; ?>">
<input type="submit" name="send" value="Proceed to payment">
</form>
if(isset($_POST['send'])) {
$amount = trim($_POST['amount']); // Storing value amount
$orderid = trim($_POST['orderid']); // Storing value orderid
if (empty($orderid) || empty($amount])) {
echo 'Vul een ordernummer en bedrag in';
}
else {
$ammount = "€".$ammount;
// rest van je code
}
}
?>
<html>
<body>
<form action="" method="post">
<input type="text" name="orderid" placeholder="Voer bestelnummer in" value="<?php if (isset($orderid)) echo $orderid; ?>">
<input type="text" name="amount" placeholder="Voer het te betalen bedrag in" value="<?php if (isset($ammount)) echo $ammount; ?>">
<input type="submit" name="send" value="Proceed to payment">
</form>
Gewijzigd op 01/04/2015 14:09:27 door Rick B
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
30
31
32
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
30
31
32
<?php
// initialisatie!
$amount = '';
$orderid = '';
$emptyamount = '';
$emptyorderid = '';
if(isset($_POST['submit']))
{
//create empty error orderid
if (empty($_POST['orderid'])) {
$emptyorderid = 'Vul het ordernummer in';
}
//create empty error amount
if (empty($_POST['amount'])) {
$emptyamount = 'Vul het te betalen bedrag in';
}
$amount = '€ ' . number_format($_POST['amount'], 2, ',', '.'); // Storing value amount
$orderid = intval($_POST['orderid']); // Storing value orderid
}
?>
<html>
<body>
<form action="" method="post">
<input name="orderid" placeholder="Voer bestelnummer in" value="<?php echo $orderid; ?>">
<input name="amount" placeholder="Voer het te betalen bedrag in" value="<?php echo $amount; ?>">
<input type="submit" value="Proceed to payment">
</form>
// initialisatie!
$amount = '';
$orderid = '';
$emptyamount = '';
$emptyorderid = '';
if(isset($_POST['submit']))
{
//create empty error orderid
if (empty($_POST['orderid'])) {
$emptyorderid = 'Vul het ordernummer in';
}
//create empty error amount
if (empty($_POST['amount'])) {
$emptyamount = 'Vul het te betalen bedrag in';
}
$amount = '€ ' . number_format($_POST['amount'], 2, ',', '.'); // Storing value amount
$orderid = intval($_POST['orderid']); // Storing value orderid
}
?>
<html>
<body>
<form action="" method="post">
<input name="orderid" placeholder="Voer bestelnummer in" value="<?php echo $orderid; ?>">
<input name="amount" placeholder="Voer het te betalen bedrag in" value="<?php echo $amount; ?>">
<input type="submit" value="Proceed to payment">
</form>
Toevoeging op 01/04/2015 14:05:06:
Weet je zeker dat je empty() wilt gebruiken voor amount? daarmee kan / mag het bedrag niet gelijk aan 0 zijn namelijk.
Gewijzigd op 01/04/2015 14:03:31 door Frank Nietbelangrijk
De controle op de variable amount heb ik veranderd in
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if ($_POST['amount'] == ''){
$emptyamount = 'Vul het te betalen bedrag in';
}
?>
if ($_POST['amount'] == ''){
$emptyamount = 'Vul het te betalen bedrag in';
}
?>
Echter werkt het nog niet zoals ik het graag zou willen.
Als ik bij het bedrag niet invul geeft hij toch een euro symbool weer, dit mag alleen als er een bedrag is ingevuld.
Wat kan ik nu het beste doen om hierop een controle te maken?
Toevoeging op 01/04/2015 16:22:27:
Opgelost
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
//initialisatie
$eurosymbol = '€ ';
if ($_POST['amount'] == ''){
$emptyamount = 'Vul het te betalen bedrag in';
$eurosymbol = '';
}
$amount = $eurosymbol.number_format($_POST['amount'], 2, ',', '.');
?>
//initialisatie
$eurosymbol = '€ ';
if ($_POST['amount'] == ''){
$emptyamount = 'Vul het te betalen bedrag in';
$eurosymbol = '';
}
$amount = $eurosymbol.number_format($_POST['amount'], 2, ',', '.');
?>
Gewijzigd op 01/04/2015 14:41:11 door Yoeri Achterbergen
Ik hou zelf meestal gewoon een decimaal aan in een invoerveld. Ook zou ik dan van rechts naar links zoeken naar een punt of een komma. Indien een komma dan str_replace naar een punt. Alle overige karakters die geen cijfers zijn moeten er dan vervolgens uit. Leuke uitdaging :-)
Dit zijn dan dus geldige invoer mogelijkheden:
uiteindelijk moet er een van deze uitkomen:
Het mooiste is om met javascript direct aan de gebruiker te tonen wat het uiteindelijke bedrag wordt.
Dan kan deze het namelijk nog direct veranderen als het niet goed gaat.
Gewijzigd op 01/04/2015 18:07:49 door Frank Nietbelangrijk
Verder zou ik de € niet in een variabele stoppen, maar bij de echo (hard coded) tonen.
Gewijzigd op 01/04/2015 18:21:25 door Obelix Idefix
Gewoon 5 of 5.00 wel. Dus dat 'euroteken' niet erbij opslaan. Dat kan je ook niet optellen en/of gebruiken om BTW te berekenen (bijvoorbeeld).
Met de functie money_format() (zie http://php.net/manual/en/function.money-format.php) is dit erg makkelijk.
Je vraagt een INT of DECIMAL (0,27374 is ook geldig!) en gebruikt een ROUND() om dit naar 2 decimalen op te slaan.
Euroteken komt pas bij de presentatie, via MONEY_FORMAT().
dank voor jullie reacties. Ik heb 2 outputs gemaakt, een variabel is voor te rekenen en de ander is voor te showen.
Nu loop ik nog tegen een ding aan en dat is zodra er gepost word word krijgt de pagina een refresh.
Als ik dus nu een functie (jquery) aan de button koppel, dan word deze uitgevoerd maar direct weer weggehaald omdat de pagina opnieuw word getoont.
Kan ik ook submitten zonder refresh?
event.preventDefault();