kasboek totaal berekenen
ik heb het opgesplitst in een aantal mini projecten maar mijn huidige mini project wil niet doen wat ik wil.
ik heb een table gemaakt met de naam kasboek_totaal met de volgende kolommen
(id, datum, omschrijving, bon_nr, inkomsten, uitgaven, kenmerk)
----
(1 , 2016-01-01, waarom, 0001, 12.75, , BS)
(2, 2016-02-15, waarom, 0002, , 23,50, WK)
ik heb momenteel de gegevens voor de maand januari al in mijn database gezet voor test doeleinden maar ik wil graag dat het totaal van de inkomsten en het totaal van de uitgaven word berekend en dat uiteindelijk deze 2 met elkaar verkend worden.
mijn eigen kennis van php is het lezen van de code het zelf schrijven heb ik nog niet onder de knie vandaar mijn hulpvraag.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
echo "<table style='border: solid 1px black;' align='center'>";
echo "<tr><th>datum</th><th>omschrijving</th><th>bon_nr</th><th>inkomsten</th><th>uitgaven</th><th>kenmerk</th></tr>";
class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}
function beginChildren() {
echo "<tr>";
}
function endChildren() {
echo "</tr>" . "\n";
}
}
/*
optel functie maken om totaal bedrag te laten zien maar hoe ?
*/
$servername = "localhost";
$username = "root";
$password = "******";
$dbname = "test";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT datum, omschrijving, bon_nr, inkomsten, uitgaven, kenmerk FROM kasboek_totaal WHERE kenmerk LIKE '" . $_POST['kenmerk'] . "'");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
} else {
echo '<br><form method="post" action="">';
require "config.php";
//$sql="SELECT name,id FROM student";
$sql="SELECT kenmerk,omschrijving FROM kenmerken order by omschrijving";
/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */
echo "<select name=kenmerk value=''>kenmerk</option>"; // list box select command
foreach ($dbo->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[kenmerk]>$row[omschrijving]</option>";
/* Option values are added by looping through the array */
}
echo "</select>";// Closing of list box
echo '<input type="submit" name="submit" value="sorteer op" />';
echo '</form>';
}
?>
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
echo "<table style='border: solid 1px black;' align='center'>";
echo "<tr><th>datum</th><th>omschrijving</th><th>bon_nr</th><th>inkomsten</th><th>uitgaven</th><th>kenmerk</th></tr>";
class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}
function beginChildren() {
echo "<tr>";
}
function endChildren() {
echo "</tr>" . "\n";
}
}
/*
optel functie maken om totaal bedrag te laten zien maar hoe ?
*/
$servername = "localhost";
$username = "root";
$password = "******";
$dbname = "test";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT datum, omschrijving, bon_nr, inkomsten, uitgaven, kenmerk FROM kasboek_totaal WHERE kenmerk LIKE '" . $_POST['kenmerk'] . "'");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
} else {
echo '<br><form method="post" action="">';
require "config.php";
//$sql="SELECT name,id FROM student";
$sql="SELECT kenmerk,omschrijving FROM kenmerken order by omschrijving";
/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */
echo "<select name=kenmerk value=''>kenmerk</option>"; // list box select command
foreach ($dbo->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[kenmerk]>$row[omschrijving]</option>";
/* Option values are added by looping through the array */
}
echo "</select>";// Closing of list box
echo '<input type="submit" name="submit" value="sorteer op" />';
echo '</form>';
}
?>
Ik kan het niet testen, maar het zal in de buurt komen van
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
datum,
omschrijving,
bon_nr,
inkomsten,
uitgaven,
kenmerk,
SUM(inkomsten - uitgaven) rest
WHERE
kenmerk LIKE '" . $_POST['kenmerk'] . "'"
datum,
omschrijving,
bon_nr,
inkomsten,
uitgaven,
kenmerk,
SUM(inkomsten - uitgaven) rest
WHERE
kenmerk LIKE '" . $_POST['kenmerk'] . "'"
Waarom daar trouwens een LIKE? Een LIKE kan je gebruiken i.c.m. met % waar eventueel nog iets komt, bijv.
SELECT WHERE product LIKE 'appel%'
Gevonden: appelsap, appeljam, appelstroop, appeltaart
In jouw geval kan je evengoed '==' (is gelijk aan) gebruiken.
EDIT:
Aangezien je ook een leeg veld hebt, zou deze geteld moeten worden als 0, dit kan met COALESCE of IFNULL
COALESCE(SUM(inkomsten), 0)
Gewijzigd op 18/08/2016 19:07:19 door Michael -