Werte die durch eine sql abfrage bekommen werden addieren...
Hi Leute,
hab mir ein html und php script gebastelt wo ich abfragen absenden kann.
funktioniert auch, doch ich möchte es erweitern in dem alle werte die angezeigt werden spalten weise addiert werden.
beim googlen wird immer select sum() erwähnt und das immer nur von ganzen Tabellen und nicht nur von selektierten Datensätzen. Das ist mein Problem
Hab mir das so vorgestellt ich selektiere die benötigten Daten übersichtshalber werden die Sätze zeilenweise als HTML ausgegeben und unterhalb sollen die jeweiligen spalten dieser Sätze zusammengerechnet werden IN OUT BALANCE
Ist das möglich ??? besser wie geht das
bis jetzt habe ich das hier:
form.html
abfrage.php
Datensätze:
hab mir ein html und php script gebastelt wo ich abfragen absenden kann.
funktioniert auch, doch ich möchte es erweitern in dem alle werte die angezeigt werden spalten weise addiert werden.
beim googlen wird immer select sum() erwähnt und das immer nur von ganzen Tabellen und nicht nur von selektierten Datensätzen. Das ist mein Problem
Hab mir das so vorgestellt ich selektiere die benötigten Daten übersichtshalber werden die Sätze zeilenweise als HTML ausgegeben und unterhalb sollen die jeweiligen spalten dieser Sätze zusammengerechnet werden IN OUT BALANCE
Ist das möglich ??? besser wie geht das
bis jetzt habe ich das hier:
form.html
<html>
<head><title>search EOD info</title></head>
<body>
<h3>SHOP INFO</h3>
<hr>
<form action="abfrage.php" method="post">
<br>
SHOP: <input type="text" name="SHOP" size="20" maxlength="20" value="SHOP"><br>
<br>
DATUM: <input type="text" name="DATUM" size="20" maxlength="20" value="JJJJMMDD"><br>
<br>
<input type="submit" value="search">
<input type="reset" value="reset"><br>
<br>556% = 556001 - 556999 , 201404% = 20140401 - 20140430<br>
</form>
<hr>
</body></html>
<?php
$_db_host = "mysqlsvr35.world4you.com"; # meist localhost
$_db_datenbank = "xxx";
$_db_username = "xxx";
$_db_passwort = "xxx";
$SHOP = $_POST['SHOP'];
$DATUM = $_POST['DATUM'];
mysql_connect($_db_host, $_db_username, $_db_passwort);
mysql_select_db($_db_datenbank);
unset($host,$user,$pass,$_db_datenbank);
$sql="SELECT * FROM GLOBAL WHERE DATUM LIKE '$DATUM' AND SHOP LIKE '$SHOP'";
$result = mysql_query($sql) or die(mysql_error());;
while($row = mysql_fetch_array($result)) {
echo " SHOP: " . $row["SHOP"] . " DATUM: " . $row["DATUM"] . " ULAZ: " . $row["IN"] . " IZLAZ: " . $row["OUT"] . " BALANS: " . $row["BALANCE"] . " TIKETA: " . $row["TICKETS"] . " OP1: " . $row["ONL1"] . " OP1 TIKETA: " . $row["ONL1TICKETS"] . " OP2: " . $row["ONL2"] . " OP2 TIKETA: " . $row["ONL2TICKETS"] . "<hr>";
}
mysql_close($link);
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 235409
Url: https://administrator.de/contentid/235409
Ausgedruckt am: 18.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Moin moin,
das funktioniert aber nur als zweite Abfrage !
So bekommt man die einzelnen Datensätze nicht mehr.
SUM() hat zwar richtig zusammen gerechnet, aber durch das GROUP BY `id` wird nur der erste Datensatz angezeigt.
Die Summen könnte man auch in der WHILE-Schleife(PHP) aufaddieren:
~Arano
das funktioniert aber nur als zweite Abfrage !
So bekommt man die einzelnen Datensätze nicht mehr.
mysql> describe sum;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| wert | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0,00 sec)
mysql> select * from sum;
+------+------+
| id | wert |
+------+------+
| 1 | 10 |
| 1 | 20 |
| 2 | 30 |
| 2 | 40 |
+------+------+
4 rows in set (0,00 sec)
mysql> select id,wert,sum(wert) from sum where id=1 group by id;
+------+------+-----------+
| id | wert | sum(wert) |
+------+------+-----------+
| 1 | 10 | 30 |
+------+------+-----------+
1 row in set (0,00 sec)
mysql>
Die Summen könnte man auch in der WHILE-Schleife(PHP) aufaddieren:
$sum_in=0;
$sum_out=0;
$sum_balance=0;
while( $row=mysql_fetch_assoc($result) )
{
echo 'spalte1, spalte2, spalte-in, spalte-out, spalte-balance';
$sum_in+=$row['in'];
$sum_out+=$row['out'];
$sum_balance+=$row['balance'];
}
echo 'spalte1, spalte2, '.$sum_in.', '.$sum_out.', '.$sum_balance;
~Arano
Hi,
bei meinem ECHO sind es zwei Dinge:
Die einfachen Anführungszeichen werden __nicht__ geparst. Das heist wenn eine Variable dazwischen steht, wird diese nicht durch ihren Wert ersetzt sondern es wird einfach "$variable" ausgegeben. Das ist natürlich schneller wenn der Text einfach ausgegeben werden kan ohne das nach möglichen Variablen gesucht werden muss. Aber was wenn man eine verwenden möchte?
Dann bricht man den Parameter auf
Zu deinem neuem Script kann ich auch noch etwas sagen.
Das Ausrechnen der Bilanz macht doch erst Sinn, wenn alle IN- und OUT-Werte zusammenaddiert sind !
Jetzt errechnest du die Bilanz mit jedem Schleifendurchlauf. Das sind genau soviele Berechnungen wie die Datenbankabfrage Datensätze liefert - obwohl eine einzige Berechnung ganz am Ende reichen würde !
Darüber hinaus, kannst (solltest) du die beiden Schleifen kombinieren bzw. vereinen. Also die Berechnungen aus der zweiten Schleife kannst du genau so gut in die Erste einfügen.
Dann sparst du dir die zweite Datenbankabfrage und Schleife.
~Arano
bei meinem ECHO sind es zwei Dinge:
- Habe ich einfache Anführungszeichen (') verwendet und musste deswegen
- zusätzlich den Verkettungsoperator (.) (den Punkt) verwenden.
Die einfachen Anführungszeichen werden __nicht__ geparst. Das heist wenn eine Variable dazwischen steht, wird diese nicht durch ihren Wert ersetzt sondern es wird einfach "$variable" ausgegeben. Das ist natürlich schneller wenn der Text einfach ausgegeben werden kan ohne das nach möglichen Variablen gesucht werden muss. Aber was wenn man eine verwenden möchte?
Dann bricht man den Parameter auf
echo <parameter>;
und fügt die Variabel mit Hilfe des Verkettungsoperator ein.echo 'ersterteil '
.$variable
.' zweiterteil';
$foo='Welt';
echo 'Hallo '.$foo;
Zu deinem neuem Script kann ich auch noch etwas sagen.
Das Ausrechnen der Bilanz macht doch erst Sinn, wenn alle IN- und OUT-Werte zusammenaddiert sind !
Jetzt errechnest du die Bilanz mit jedem Schleifendurchlauf. Das sind genau soviele Berechnungen wie die Datenbankabfrage Datensätze liefert - obwohl eine einzige Berechnung ganz am Ende reichen würde !
Darüber hinaus, kannst (solltest) du die beiden Schleifen kombinieren bzw. vereinen. Also die Berechnungen aus der zweiten Schleife kannst du genau so gut in die Erste einfügen.
Dann sparst du dir die zweite Datenbankabfrage und Schleife.
~Arano