[PHP & MySQL] -

Startpost-Retter
-
kext
Probiers mal hiermit: Banksystem

Ist eigentlich ganz einfach zu benutzen. Wenn du hilfe brauchst, einfach fragen oder ne PN schreiben. <:

lg
Julia712
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:
<?php
include("Datenbank.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 class="h2">Hofkasse</h2>
<hr class="linie"> <br>
<table style="width: 100%; text-align: center; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
     <td style="text-align: center;" class="dunkel">Einnahmen</td>
    </tr><?php
// Anfangswert setzen
$akt_konto "250000";
    $abfragen "SELECT * FROM bank ";
    $ergebnisn mysql_query($abfragen);
    if (@mysql_num_rows($ergebnisn) == 0)
   {
    echo '
    <tr>
    <td style="width: 98px; text-align: center; " colspan="4">Keine Transaktionen vorhanden.</td></tr>';
}
else
{
    while($row mysql_fetch_object($ergebnisn))
    {
    //Kontostand verändern
    $akt_konto $akt_konto $row->einnahmen;
    echo"
    <tr>
      <td style="text-aligncenter;" class='hell'>".$row->einnahmen."</td>
    </tr>";
}
 }
?>
</tbody>
</table><br>


<table style="width: 100%; text-align: center; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td style="text-align: center;" class="dunkel">Ausgaben</td>
    </tr><?php
    $abfragen "SELECT * FROM bank ";
    $ergebnisn mysql_query($abfragen);
    if (@mysql_num_rows($ergebnisn) == 0)
   {
    //Kontostand verändern
    $akt_konto $akt_konto $row->ausgaben;
    echo '
    <tr>
    <td style="width: 98px; text-align: center; " colspan="4">Keine Transaktionen vorhanden.</td></tr>';
}
else
{
    while($row mysql_fetch_object($ergebnisn))
    {
    echo"
    <tr>
      <td style="text-aligncenter;" class='hell'>".$row->ausgaben."</td>
    </tr>";
}
 }
?>

</tbody>
</table><br>
<table cellpadding="0" cellspacing="2" align="center" width="70%">
  <tbody>
    <tr >
      <td style="width: 167px; text-align: center;" class="dunkel">Aktueller Kontostand:</td>
      <td style="width: 163px; text-align: center;"><b>$akt_konto</b> €</td>
    </tr>
  </tbody>
</table>
</body>
</html>



Wenn ich deine Frage richtig verstanden habe, sollte es so gehen smile
Hab dir die betreffenden Stellen kommentiert und beim aktuellen Kontostand die Variable ausgeben lassen smile



Lg Julia
Julia712
Huhu smile

Entferne mal in meinem Code an der Stellen, an der der Kontostand am Anfang gesetzt wird, die beiden " vor und hinter der Zahl.
Wahrscheinlich interpretiert php die Zahl auf Grund der " als String und nicht als Integer, weshalb nicht gerechnet sondern nur aneinandergehangen wird Freude


Lg Julia
kext
echo number_format(doubleval($konto), 2, ",", ".");
kext
Du musst weiter oben $konto natürlich durch die entsprechende Variable ersetzen, sonst ist klar, dass er immer das gleiche anzeigt. Mein Kommentar bezog sich rein auf die falsche Syntax.

@Cantara: Das macht nicht den geringsten Unterschied. Egal Welcher Typ in MySQL eingestellt ist, in PHP wird er IMMER zum String.
kext
Ja, aber es klappt mit Varchar genauso, auch wenn man in MySQL durch Int durchaus vorteile erhält.
kext
Deine Datenbankstruktur ist unlogisch. Du hast unter anderem die Spalten einnahmen und ausgeben in der Tabelle bank. Was trägst du da denn ein, wenn du zum Beispiel eine Ausgabe machst?

Der Quelltext, syntaktisch etwas bereinigt:
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:
<?php
include("Datenbank.php");
?>
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 class="h2">Hofkasse</h2>
<hr class="linie" /><br />
<?php
$konto 250000;
?>

<table width='100%'>
<tr>
<th><p align="center"><font color='#0A8101'>Einnahmen</font></p></th>
</tr>
</table>
<div style='overflow: auto; height: 100px; width: 100%; border-left: 1px solid; border-right: 1px solid; border-bottom: 1px solid;'>
<table width='100%' style='border: 0;'>
<?php
$gesamt_einnahmen 0;
$sql "SELECT `einnahmen`, `einnahmen_grund` FROM `bank`";
$result mysql_query$sql );
while($row mysql_fetch_assoc($result))
{
    $einnahmen $row["einnahmen"];
    $grund $row["einnahmen_grund"];
    echo "<tr><td><p align='center'><font color='#0A8101'>";
    echo number_format($einnahmen2","".");
    echo " - ".$grund."</font></p></td></tr>";
    $gesamt_einnahmen += $einnahmen;
}
?>
</table>
</div>

<br />

<table width='100%'>
<tr>
<th><p align="center"><font color='#CA0202'>Ausgaben</font></p></th>
</tr>
</table>
<div style='overflow: auto; height: 100px; width: 100%; border-left: 1px solid; border-right: 1px solid; border-bottom: 1px solid;'>
<table width='100%' style='border: 0;'>
<?php
$gesamt_ausgaben 0;
$sql "SELECT `ausgaben`, `ausgaben_grund` FROM `bank`";
$result mysql_query($sql);
while($row mysql_fetch_assoc($result))
{
    $ausgaben $row["ausgaben"];
    $grund $row["ausgaben_grund"];
    echo "<tr><td><p align='center'><font color='#CA0202'>";
    echo number_format($ausgaben2","".");
    echo " - ".$grund."</font></p></td></tr>";
    $gesamt_ausgaben += $ausgaben;
}
?>
</table>
</div>


<table width='100%'>
<tr>
<th><p align="center"><b>Kontostand</b></p></th>
</tr>
<tr>
<th><p align="center">
<?php
$konto += $gesamt_einnahmen;
$konto -= $gesamt_ausgaben;
echo number_format($konto2","".");
?></p></th>
</tr>
</table>
</body>
</html>
kext
Du hast mehr Spalten, als du eigentlich brauchst. Deine Tabelle Bank sollte nur id, betrag, grund und vielleicht das datum enthalten.

Ausgaben sind negativ, Einnahmen positiv.
kext
Naja, wie gesagt, Ausgaben sind negativ (kleiner als null) und Einnahmen sind positiv (größer als null).

Willst du also alle einnahmen sehen, lautet die Abfrage:

SELECT * FROM `bank` WHERE `betrag` > '0'

Analog für Ausgaben:

SELECT * FROM `bank` WHERE `betrag` < '0'

Du musst Ausgaben natürlich auch entsprechend eintragen:

INSERT INTO `bank` (`betrag`, `grund`) VALUES ('-700', 'Eine Ausgabe')