Nieuwe velden
Maximaal 100 stuks ofzo (niet alle 100 tegelijk)
Bij het verzenden van de data moeten alle velden meegenomen worden en de datum ook.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
include ("db_config.php");
include ("site_config.php");
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div class="row">
<label for="betaalmethode"><?php echo $betaalmethode; ?></label>
<select type="text" name="betaalmethode" id="betaalmethode" betaalmethode=""> </br></br>
<option value="contant" selected>Contant</option>
<option value="pin">Pin</option>
</select></br></br>
</div>
<div class="row">
<label for="bedrag"><?php echo $bedrag; ?></label>
<input type="text" name="bedrag" id="bedrag" bedrag=""> </br></br>
</div>
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
include ("db_config.php");
include ("site_config.php");
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div class="row">
<label for="betaalmethode"><?php echo $betaalmethode; ?></label>
<select type="text" name="betaalmethode" id="betaalmethode" betaalmethode=""> </br></br>
<option value="contant" selected>Contant</option>
<option value="pin">Pin</option>
</select></br></br>
</div>
<div class="row">
<label for="bedrag"><?php echo $bedrag; ?></label>
<input type="text" name="bedrag" id="bedrag" bedrag=""> </br></br>
</div>
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken. Quote-tags zijn alleen bedoeld voor citaten.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 06/07/2016 22:21:37 door - Ariën -
https://www.google.nl/#q=append+form+field+javascript
Heb je hier al iets gevonden?
Heb je hier al iets gevonden?
Maar JavaScript werkt niet op iOS toch?
De site word voornamelijk gebruikt door een iPad
Het is me gelukt, nu rest me nog 1 probleem.
Hij stuurt alleen de data van de laatste invoer naar de db
Dus als ik er 3 invoer, pakt ie de 3e invoer, de 1e en 2e voert ie niet in.
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
33
34
35
36
37
38
39
40
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
33
34
35
36
37
38
39
40
<?php
include ("db_config.php");
include ("site_config.php");
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
<script src="/js/meer.js" language="Javascript" type="text/javascript"></script>
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div id="regels">
Betaalmethode <input type="text" name="betaalmethode">
Bedrag <input type="text" name="bedrag">
</div>
<input type="button" value="Extra bon" onClick="meer('regels');">
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
include ("db_config.php");
include ("site_config.php");
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
<script src="/js/meer.js" language="Javascript" type="text/javascript"></script>
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div id="regels">
Betaalmethode <input type="text" name="betaalmethode">
Bedrag <input type="text" name="bedrag">
</div>
<input type="button" value="Extra bon" onClick="meer('regels');">
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
Me javascript:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
var counter = 1;
var limit = 50;
function meer(divName){
if (counter == limit) {
alert("Maximum bereikt " + counter + " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <div class='row'>Betaalmethode <input type='text' name='bethaalmethode' required></section><section class='unit span6'>Bedrag <input type='text' name='bedrag'>";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
var limit = 50;
function meer(divName){
if (counter == limit) {
alert("Maximum bereikt " + counter + " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <div class='row'>Betaalmethode <input type='text' name='bethaalmethode' required></section><section class='unit span6'>Bedrag <input type='text' name='bedrag'>";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
Gewijzigd op 09/07/2016 00:53:00 door Douwe Westra
Omdat je de veldnamen overschrijft. Maak ze per klik uniek: betaalmethode[1], bedrag[1] etc.
Je bent er van op de hoogte dat mysql verouderd is? Stap over op mysqli of PDO.
Veel ga ik er niet mee doen, puur stukje ondersteuning.
on-topic, ik snap het wel, maar krijg het niet voor mekaar, ik zal vast iets vreselijks fouts doen :S
Met de $meerinvoer wil ik het oplossen hopelijk.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
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
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
include ("db_config.php");
include ("site_config.php");
$meerinvoer = $_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
foreach ($meerinvoer as $sqlquery) {
echo $sqlquery . "<br>";
}
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
<script src="/js/meer.js" language="Javascript" type="text/javascript"></script>
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div id="regels">
<?php echo $betaalmethode; ?> <input type="text" name="betaalmethode[]">
<?php echo $bedrag; ?> <input type="text" name="bedrag[]">
</div>
<input type="button" value="Extra bon" onClick="meer('regels');">
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
include ("db_config.php");
include ("site_config.php");
$meerinvoer = $_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
foreach ($meerinvoer as $sqlquery) {
echo $sqlquery . "<br>";
}
$sqlquery = "INSERT INTO omzet (datum, betaalmethode, bedrag) VALUES('".$_POST['datum']."','".$_POST['betaalmethode']."','".$_POST['bedrag']."')";
$results = mysql_query($sqlquery) or die ("Fout: " .
mysql_error());
mysql_close();
?>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $titel; ?></title>
<link rel="stylesheet" href="css/style.css">
<script src="/js/meer.js" language="Javascript" type="text/javascript"></script>
</head>
<body>
<form id="zoekform" method="post" action="toevoegen.php">
<div class="row">
<label for="datum"><?php echo $datum; ?></label>
<input type="text" name="datum" id="datum" datum=""> </br></br>
</div>
<div id="regels">
<?php echo $betaalmethode; ?> <input type="text" name="betaalmethode[]">
<?php echo $bedrag; ?> <input type="text" name="bedrag[]">
</div>
<input type="button" value="Extra bon" onClick="meer('regels');">
<hr>
<input type="submit" value="toevoegen">
<input type="reset" value="terugzetten">
</form>
<a href= index.php >Home</a>
</body>
</html>
Douwe Westra op 12/07/2016 12:20:04:
@obelix, nee wist ik niet, maar ik denk dat het voor mij niet veel uitmaakt.
Veel ga ik er niet mee doen, puur stukje ondersteuning.
Veel ga ik er niet mee doen, puur stukje ondersteuning.
Totdat je webhosting over stapt op PHP 7. En je site ligt plat....
Toevoeging op 12/07/2016 12:30:31:
Elke set ingevoerde set hoort bij één item, Dus in je javascript moet je bij elke iteratie dus de boel nummeren, zoals je dit krijgt:
betaalmethode[0]
bedrag[0]
betaalmethode[1]
bedrag[1]
betaalmethode[2]
bedrag[2]
Maar wat moet ik dan doen?
Dat betekent dat ik 50x in de javascript moet zetten???
Dat is de max
het kan niet automatisch?
Gewijzigd op 12/07/2016 12:32:22 door Douwe Westra
Er zit mogelijk een spellingsfout in de veldnaam -> bethaalmethode.
En voor de goede orde zouden waarden van tag-eigenschappen tussen "dubbele quotes" moeten staan in plaats van enkele.
Maar Thomas zijn manier is beter.
Ook heeft de index geen echte betekenis noch echte meerwaarde, want de velden worden toch verzonden in de volgorde waarin ze visueel op het scherm staan.
Om toch/gemakkelijk het aantal elementen te kunnen tellen zou ik hier een soort van container/wrapper (div) met een id omheen zetten, en dan gewoon elke keer als er geklikt wordt het aantal elementen in de container tellen.
Gewijzigd op 12/07/2016 13:21:11 door Thomas van den Heuvel
Thomas van den Heuvel op 12/07/2016 12:58:49:
Het enige wat je hoeft te doen is de veldnamen in je JavaScript snippet te voorzien van rechte haken?
Er zit mogelijk een spellingsfout in de veldnaam -> bethaalmethode.
En voor de goede orde zouden waarden van tag-eigenschappen tussen "dubbele quotes" moeten staan in plaats van enkele.
Er zit mogelijk een spellingsfout in de veldnaam -> bethaalmethode.
En voor de goede orde zouden waarden van tag-eigenschappen tussen "dubbele quotes" moeten staan in plaats van enkele.
thx voor de spellingsfout, was idd zo.
Maar blijkbaar snap ik het niet.
Ik heb de js aangepast, volgens mij correct, maar het werkt nog steeds niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
var counter = 1;
var limit = 50;
function meer(divName){
if (counter == limit) {
alert("Maximum bereikt " + counter + " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <div class="row">Betaalmethode <input type="text" name="betaalmethode[]"><section> Bedrag <input type="text" name="bedrag[]">";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
var limit = 50;
function meer(divName){
if (counter == limit) {
alert("Maximum bereikt " + counter + " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <div class="row">Betaalmethode <input type="text" name="betaalmethode[]"><section> Bedrag <input type="text" name="bedrag[]">";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
Kijk eens met print_r($_POST) wat er ge-POST wordt?
Concreet, vervang regel 9 door:
Code (php)
1
newdiv.innerHTML = 'Entry ' + (counter + 1) + ' <div class="row">Betaalmethode <input type="text" name="betaalmethode[]"><section> Bedrag <input type="text" name="bedrag[]">';
Waarom open je daar trouwens een section? :/
- Ariën - op 12/07/2016 14:01:42:
Kijk eens met print_r($_POST) wat er ge-POST wordt?
Dan komt er dit uit:
Array ( [datum] => 11.2.16 [betaalmethode] => Array ( [0] => Overmaken [1] => Pin ) [bedrag] => Array ( [0] => 11,11 [1] => 52.25 ) )
Thomas van den Heuvel op 12/07/2016 14:40:08:
@Douwe ik denk dat je JavaScript breekt omdat je de zowel de string begrensd met dubbele quotes, en ook in de string zelf dubbele quotes gebruikt... Als je nu eens je string begrensd met enkele quotes?
Concreet, vervang regel 9 door:
Waarom open je daar trouwens een section? :/
Concreet, vervang regel 9 door:
Code (php)
1
newdiv.innerHTML = 'Entry ' + (counter + 1) + ' <div class="row">Betaalmethode <input type="text" name="betaalmethode[]"><section> Bedrag <input type="text" name="bedrag[]">';
Waarom open je daar trouwens een section? :/
Helaas nog steeds niet in de db
Die section is weg, was een probeerseltje nvt
Gewijzigd op 12/07/2016 15:05:29 door Douwe Westra
Het HTML en JavaScript gedeelte zou nu opgelost moeten zijn. Resteert je nog het bakken van INSERT-queries.
Ik denk dat je het jezelf gemakkelijker maakt om dit soort dingen in verschillende deelproblemen op te delen want je neemt teveel hooi op je vork. Je probeert alles in 1x op te lossen en dan "werkt het niet", in plaats van dingen stap voor stap en gestructureerd aan te pakken.
Je bent nu zover dat je je POST data kunt gaan inspecteren en op grond daarvan queries kunt gaan bouwen. Het is misschien ook handig om eerst te controleren of je formulier verzonden is voordat je lukraak $_POST variabelen gaat gebruiken die mogelijk helemaal niet bestaan...
Probeer even wat meer orde te scheppen in je (eigen) chaos.
Thomas van den Heuvel op 12/07/2016 16:16:32:
Okay.
Het HTML en JavaScript gedeelte zou nu opgelost moeten zijn. Resteert je nog het bakken van INSERT-queries.
Ik denk dat je het jezelf gemakkelijker maakt om dit soort dingen in verschillende deelproblemen op te delen want je neemt teveel hooi op je vork. Je probeert alles in 1x op te lossen en dan "werkt het niet", in plaats van dingen stap voor stap en gestructureerd aan te pakken.
Je bent nu zover dat je je POST data kunt gaan inspecteren en op grond daarvan queries kunt gaan bouwen. Het is misschien ook handig om eerst te controleren of je formulier verzonden is voordat je lukraak $_POST variabelen gaat gebruiken die mogelijk helemaal niet bestaan...
Probeer even wat meer orde te scheppen in je (eigen) chaos.
Het HTML en JavaScript gedeelte zou nu opgelost moeten zijn. Resteert je nog het bakken van INSERT-queries.
Ik denk dat je het jezelf gemakkelijker maakt om dit soort dingen in verschillende deelproblemen op te delen want je neemt teveel hooi op je vork. Je probeert alles in 1x op te lossen en dan "werkt het niet", in plaats van dingen stap voor stap en gestructureerd aan te pakken.
Je bent nu zover dat je je POST data kunt gaan inspecteren en op grond daarvan queries kunt gaan bouwen. Het is misschien ook handig om eerst te controleren of je formulier verzonden is voordat je lukraak $_POST variabelen gaat gebruiken die mogelijk helemaal niet bestaan...
Probeer even wat meer orde te scheppen in je (eigen) chaos.
Hoi Thomas,
Excuus voor de late reactie (vakantie), maar mijn kennis rijkt niet ver genoeg (nog) om te snappen wat je bedoeld en uit te voeren.
Kan/wil je mij op weg helpen?
In dit ietswat gestripte voorbeeld houd ik rekening dat je de MySQLi-functies gebruikt. Je zult hierbij nog wel je db_config.php moeten aanpassen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include ("db_config.php");
include ("site_config.php");
if($_SERVER['REQUEST_METHOD'] == "POST") {
$sqlquery = "INSERT INTO omzet (datum,
betaalmethode,
bedrag)
VALUES('".mysqli_real_escape_string($con,$_POST['datum'])."',
'".mysqli_real_escape_string($con,$_POST['betaalmethode']."',
'".mysqli_real_escape_string($con,$_POST['bedrag']."
')";
$results = mysqli_query($con,$sqlquery) or die ("Fout: " .mysqli_error($con));
} else {
?>
/* HIER JE HTML-GEDEELTE
<?php
}
?>
include ("db_config.php");
include ("site_config.php");
if($_SERVER['REQUEST_METHOD'] == "POST") {
$sqlquery = "INSERT INTO omzet (datum,
betaalmethode,
bedrag)
VALUES('".mysqli_real_escape_string($con,$_POST['datum'])."',
'".mysqli_real_escape_string($con,$_POST['betaalmethode']."',
'".mysqli_real_escape_string($con,$_POST['bedrag']."
')";
$results = mysqli_query($con,$sqlquery) or die ("Fout: " .mysqli_error($con));
} else {
?>
/* HIER JE HTML-GEDEELTE
<?php
}
?>
Gewijzigd op 28/07/2016 10:38:58 door - Ariën -
Daarnaast is het verstandig om je invoer te filteren, je wilt dat datums goed geformatteerde datums zijn, dat (bij voorkeur) de betaalmethode een id(entifier) is van een betaalmethode-tabel en dat een bedrag ook echt een numeriek bedrag is. Dit alles om er zorg voor te dragen dat de informatie die de database in gaat ook echt (in ieder geval qua formattering) klopt.
Oh en als je hier dan toch een foreach van maakt wil je waarschijnlijk ook dat al deze records worden ingevoerd, of geen van alle. Misschien is dan gebruikmaking van een transactie verstandig. Wat tot gevolg heeft dat de engine van deze tabel(len) InnoDB moet zijn.
Daarnaast wil je dan waarschijnlijk ook terugkoppeling over wat er fout is indien er iets niet klopt en wil je tevens niet alles opnieuw invullen maar het formulier terugkrijgen met alle zojuist ingevulde informatie, waarbij de velden met fouten voorzien zijn van een aantekening. Anders wordt het invoeren van omzet nogal een beproeving.
Oftewel: het invoeren moet makkelijk zijn, geen extra werk kosten en de data die de database in gaat moet van het juiste format zijn.
@Douwe hoe zijn deze bedragen opgebouwd? Met een komma als decimaal scheidingsteken, of een punt? Of vul je alles in in centen? Indien je bedragen invoert met een komma dan kan PHP/MySQL hier niet (goed) mee rekenen. Daarnaast, hoe luidt de tabeldefinitie van omzet (op te vragen met SHOW CREATE TABLE omzet)?