Voor onderstaande code zoek ik iets, ik wil graag automatisch, of door middel van een knopje de velden "bedrag" en "bethaalmethode" elke keer extra laten verschijnen.
Maximaal 100 stuks ofzo (niet alle 100 tegelijk)

Bij het verzenden van de data moeten alle velden meegenomen worden en de datum ook.


<?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>


Dat klopt Thomas. Ik gaf zelf al aan dat ik een gestripte versie van mijn code had geplaatst. Omdat jij dit aan de topicstarter aanbeveelde:

'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.'

Dus laat hem eerst eens zien hoe je een enkele bundel data kan verwerken. En dan dit gestructureerd uitbouwen naar een foreach(), om de rest door te lopen. Anders komt het meer uit op een hap-klaar voorbeeld die je bij een afhaal-chinees haalt, en daar leert niemand wat van. ;-)
- Ariën - op 28/07/2016 13:20:55

Dat klopt Thomas. Ik gaf zelf al aan dat ik een gestripte versie van mijn code had geplaatst. Omdat jij dit aan de topicstarter aanbeveelde:

'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.'

Dus laat hem eerst eens zien hoe je een enkele bundel data kan verwerken. En dan dit gestructureerd uitbouwen naar een foreach(), om de rest door te lopen. Anders komt het meer uit op een hap-klaar voorbeeld die je bij een afhaal-chinees haalt, en daar leert niemand wat van. ;-)


Hoi Arien,

Bedankt, een enkele bundel was mij al in eerst instantie gelukt om te verwerken naar de db, maar nu de rest.
daar kan ik geen begin van maken.
Zorg eerst dat je even tijdelijk een overzicht biedt van je $_POST-array met al je data.
Dit plaats je op de plek waar je afhandeling van je formulier reeds heeft plaatsgevonden.

<?php echo"<pre>".print_r($_POST,true)."</pre>"; ?>
Thomas van den Heuvel op 28/07/2016 13:17:48

@Ariën het hele idee was juist dat je meerdere records in 1x in kon voeren :). Je zult dus op zijn minst met een foreach-loop door je POST data heen moeten.

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)?


Hoi Thomas,


CREATE TABLE `omzet` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `datum` date NOT NULL,
  `betaalmethode` text NOT NULL,
  `bedrag` decimal(10,2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=91 DEFAULT CHARSET=latin1


Zo worden ze opgeslagen en ingevoerd ook:


datum betaalmethode bedrag 

2015-10-16 Contant 1452.22 

Reageren