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

Frage Entwicklung PHP

Mitglied: dax4fun

dax4fun (Level 1) - Jetzt verbinden

13.04.2014, aktualisiert 14.04.2014, 4818 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
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 8 StundenInternet3 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 15 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless18 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...