Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Werte die durch eine sql abfrage bekommen werden addieren...

Mitglied: dax4fun

dax4fun (Level 1) - Jetzt verbinden

13.04.2014, aktualisiert 14.04.2014, 4931 Aufrufe, 5 Kommentare, 1 Danke

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
01.
<html> 
02.
<head><title>search EOD info</title></head> 
03.
<body> 
04.
<h3>SHOP INFO</h3> 
05.
<hr> 
06.
<form action="abfrage.php" method="post"> 
07.
<br> 
08.
SHOP:    <input type="text" name="SHOP" size="20" maxlength="20" value="SHOP"><br> 
09.
<br> 
10.
DATUM: <input type="text" name="DATUM" size="20" maxlength="20" value="JJJJMMDD"><br> 
11.
<br> 
12.
<input type="submit" value="search"> 
13.
<input type="reset"  value="reset"><br> 
14.
<br>556% = 556001 - 556999 , 201404% = 20140401 - 20140430<br> 
15.
</form> 
16.
<hr> 
17.
</body></html>
abfrage.php
01.
 
02.
<?php 
03.
    $_db_host = "mysqlsvr35.world4you.com";            # meist localhost 
04.
    $_db_datenbank = "xxx"; 
05.
    $_db_username = "xxx"; 
06.
    $_db_passwort = "xxx"; 
07.
 
08.
$SHOP = $_POST['SHOP']; 
09.
$DATUM = $_POST['DATUM']; 
10.
 
11.
mysql_connect($_db_host, $_db_username, $_db_passwort); 
12.
mysql_select_db($_db_datenbank); 
13.
unset($host,$user,$pass,$_db_datenbank); 
14.
 
15.
 
16.
$sql="SELECT * FROM GLOBAL WHERE DATUM LIKE '$DATUM' AND SHOP LIKE '$SHOP'"; 
17.
 
18.
$result = mysql_query($sql) or die(mysql_error());; 
19.
 
20.
 
21.
while($row = mysql_fetch_array($result)) { 
22.
 
23.
 
24.
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>"; 
25.
26.
 
27.
 
28.
 
29.
mysql_close($link); 
30.
?>
Datensätze:
cdc47c6d7bd202d72293191851638e07 - Klicke auf das Bild, um es zu vergrößern

Mitglied: EvilMoe
13.04.2014, aktualisiert um 07:46 Uhr
Hallo,


1. Dein Script ist nicht gegen MYSQL Injections geschützt.
2. SUM ist schon richtig.
01.
$sql="SELECT SUM(IN), SUM(OUT), SUM(BALANCE), SUM(TICKETS) ....   
02.
FROM GLOBAL  
03.
WHERE DATUM LIKE '$DATUM' AND SHOP LIKE '$SHOP' 
04.
GROUP BY SHOP"; 
Bitte warten ..
Mitglied: Arano
LÖSUNG 13.04.2014, aktualisiert 14.04.2014
Moin moin,

das funktioniert aber nur als zweite Abfrage !
So bekommt man die einzelnen Datensätze nicht mehr.
01.
mysql> describe sum; 
02.
+-------+---------+------+-----+---------+-------+ 
03.
| Field | Type    | Null | Key | Default | Extra | 
04.
+-------+---------+------+-----+---------+-------+ 
05.
| id    | int(11) | YES  |     | NULL    |       | 
06.
| wert  | int(11) | YES  |     | NULL    |       | 
07.
+-------+---------+------+-----+---------+-------+ 
08.
2 rows in set (0,00 sec) 
09.
 
10.
mysql> select * from sum; 
11.
+------+------+ 
12.
| id   | wert | 
13.
+------+------+ 
14.
|    1 |   10 | 
15.
|    1 |   20 | 
16.
|    2 |   30 | 
17.
|    2 |   40 | 
18.
+------+------+ 
19.
4 rows in set (0,00 sec) 
20.
 
21.
mysql> select id,wert,sum(wert) from sum where id=1 group by id; 
22.
+------+------+-----------+ 
23.
| id   | wert | sum(wert) | 
24.
+------+------+-----------+ 
25.
|    1 |   10 |        30 | 
26.
+------+------+-----------+ 
27.
1 row in set (0,00 sec) 
28.
 
29.
mysql> 
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:
01.
$sum_in=0; 
02.
$sum_out=0; 
03.
$sum_balance=0; 
04.
while( $row=mysql_fetch_assoc($result) ) 
05.
06.
    echo 'spalte1, spalte2, spalte-in, spalte-out, spalte-balance'
07.
    $sum_in+=$row['in']; 
08.
    $sum_out+=$row['out']; 
09.
    $sum_balance+=$row['balance']; 
10.
11.
echo 'spalte1, spalte2, '.$sum_in.', '.$sum_out.', '.$sum_balance;

~Arano
Bitte warten ..
Mitglied: dax4fun
14.04.2014 um 17:52 Uhr
Danke für eure Mühe und Hilfe ich habe es hingebogen

@EvilMoe
1.Hab mir das schon vorher angeschaut Mysql Injection und habe es probiert anzuwenden "mysql_real_escape_string" aber es ging nicht (das Script), jetzt wo ich den Befehl gesucht habe um ihn hier einzufügen habe hab ich eine noch detaillierte Anleitung gefunden. Wenn es dir nicht schwer fällt bzw. es nicht viel Arbeit ist, könntest du es auf dieses Script anwenden.

2.keine Ahnung warum das sql nicht funktioniert ich hab es direkt in phpmyadmin eingefügt habe noch zu sum(IN) ' hinzugefügt und habe keine Fehlermeldung bekommen aber auch kein Ergebnis hab mehrere Varianten probiert ab und zu hab ich auch ein Ergebnis bekommen SUM IN, SUM OUT... doch alle mit 0 ???

$sql="SELECT SUM('IN'), SUM('OUT'), SUM('BALANCE') from global ......

@Arano
Habe es mit deiner Schleife hinbekommen funktioniert perfekt das habe ich auch gesucht und es schaut like Batch aus was mir noch mehr gefallen hat

aber eine Frage hab ich noch

01.
echo 'TOTAL IN '.$sum_in.', TOTAL OUT  '.$sum_out.' , TOTAL BALANCE  '.$sum_balance;
ich hab Stunden verbracht das echo zu formatieren ???? warum kommt nach '.$sum_balance kein ' mehr, schaut irgendwie asymmetrisch aus... bzw. ist es auch anders formatiert als das echo aus meinem Script
01.
echo "  SHOP: " . $row["SHOP"] .
???

Danke euch

mfG
Dax

nun Sieht es so aus:
Abfrage.php
01.
 
02.
<?php 
03.
 
04.
function safe($value){  
05.
   return mysql_real_escape_string($value);  
06.
}  
07.
    $_db_host = "xxx";            # meist localhost 
08.
    $_db_datenbank = "xxx"; 
09.
    $_db_username = "xxx"; 
10.
    $_db_passwort = "xxx"; 
11.
 
12.
$SHOP = $_POST['SHOP']; 
13.
$DATUM = $_POST['DATUM']; 
14.
 
15.
mysql_connect($_db_host, $_db_username, $_db_passwort); 
16.
mysql_select_db($_db_datenbank); 
17.
unset($host,$user,$pass,$_db_datenbank); 
18.
 
19.
$sql = "SELECT * FROM GLOBAL WHERE DATUM LIKE '$DATUM' AND SHOP LIKE '$SHOP'"; 
20.
 
21.
$result = mysql_query($sql) or die(mysql_error());; 
22.
 
23.
while($row = mysql_fetch_array($result)) { 
24.
 
25.
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>"; 
26.
 
27.
28.
 
29.
$sum_in=0; 
30.
$sum_out=0; 
31.
$sum_balance=0; 
32.
 
33.
$sqlb = "SELECT * FROM GLOBAL WHERE DATUM LIKE '$DATUM' AND SHOP LIKE '$SHOP'"; 
34.
 
35.
$resultb = mysql_query($sql) or die(mysql_error());; 
36.
 
37.
while( $rowb=mysql_fetch_assoc($resultb) ) 
38.
 
39.
40.
    $sum_in+=$rowb['IN']; 
41.
    $sum_out+=$rowb['OUT']; 
42.
    $sum_balance=$sum_in - $sum_out; 
43.
44.
echo 'TOTAL IN '.$sum_in.', TOTAL OUT  '.$sum_out.' , TOTAL BALANCE  '.$sum_balance; 
45.
?> 
46.
<br> 
47.
 
48.
<a href="global.html">Back 2 search</a><br> 
49.
 
Bitte warten ..
Mitglied: Arano
14.04.2014 um 20:03 Uhr
Hi,

bei meinem ECHO sind es zwei Dinge:
  1. Habe ich einfache Anführungszeichen (') verwendet und musste deswegen
  2. 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.
01.
echo 'ersterteil ' 
02.
     .$variable 
03.
     .' zweiterteil'
04.
$foo='Welt'
05.
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
Bitte warten ..
Mitglied: dax4fun
14.04.2014 um 20:38 Uhr
danke erst mal für das echo das muss ich noch probieren

zur Bilanz da sind Daten (noch nicht importiert sind noch in txt und unformatiert ) von einigen Monaten drin, aber die Abrechnung geschieht Monatlich somit bekomme ich eine Auflistung der einzelnen Shops bzw. sollten Daten fehlen kann ich das erkennen und nachfordern.Immerhin besser als früher einzelne txt Dateien piepen in eine txt dann importieren ins excel zusammenrechnen

ja hab jetzt strikt die Anfragen getrennt werd mal schauen das ich sie kürze

Bastle gerade an einem Script um die Datenbank zu füttern, habe 500+ txt Dateien in diesem Format

Inhalt von 555006....%datum%.txt
01.
SHOP_555006, in:188600, out:198128, balance:-9528, tickets:1113,
mal schauen wie weit ich komm

vielen danke erst mal

mfG
dax
Bitte warten ..
Ähnliche Inhalte
PHP
Werte in einer sql Spalte addieren
gelöst Frage von helmuthelmut2000PHP13 Kommentare

Hallo, Ich habe folgendes Problem. Ich habe eine PHP Seite mit einer MSSQL Datenbank. Da gibt es eine Tabelle ...

VB for Applications

Werte mit gleicher Auftragsnummer addieren

gelöst Frage von Semih55VB for Applications8 Kommentare

Hallo Zusammen, ich habe ein Excel-sheet mit Auftragsnummer, Kunde und Betrag. Jetzt möchte ich alle Beträge mit gleicher Auftragsnummer ...

Batch & Shell

PS .length Werte addieren

gelöst Frage von AventosBatch & Shell5 Kommentare

Servus ich habe mehrere Dateigrößen per auslegesen. Die Werte werden mir nun wenn ich beide Variablen auslese z. B. ...

VB for Applications

Werte aus einer Tabelle vergleichen, einlesen und addieren

gelöst Frage von halbschuh107VB for Applications2 Kommentare

Hallo zusammen, leider bin ich ein absoluter Anfänger und muss mit VBA gleich eine schwierige Aufgabe auf Arbeit lösen. ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 5 StundenHumor (lol)1 Kommentar

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 18 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 18 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 22 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...