• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[PHP] Ergebnismenge von SQL in PHP übergeben

Samurai

Klarapfel
Registriert
20.04.05
Beiträge
277
Hallo,

ich programmier gerade eine kleine HTML-Seite mit Datenbankverbindung.

Ich habe in der Datenbank eine Tabelle wo eine Spalte die Beträge drin stehen. Diese Beträge kann ich per SQL-Abfrage so abfragen das ich diese Beträge summiert haben möchte mit

Code:
SELECT SUM(betraege) FROM tabellename;

und bekomme einen Wert als Ergebnis raus. Soweit so gut.

Nun wie mache ich das über PHP/HTML Seite so das ich diesen einen Wert übergeben bekomme und es anzeigen lassen kann.

Mir ist klar das ich vorher die Datenbankverbindung aufbauen muss usw. und hab es mal so umgesetzt:

Code:
$abfrage = "SELECT SUM(betraege) FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ergebnis = mysql_num_rows($ausgabe);
echo "<p><strong>".$ergebnis."</strong> Euro Insgesamt!</p>";

Irgendwie hab ich das gefühl dass ich mit mysql_num_rows was falsch mache. Denn wenn ich so mache wie da steht bekomme ich als "1" zurück, klar das im $ergebnis nur ein Wert drin steht. Nur wir bekomme ich das hin, dass er mit dieses Wert was drin steht ausgibt?
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
Hm. Ich habe mit MySQL_num_rows() noch nie gearbeitet. Aber um das gesamte Array anzuzeigen kannst du es einfach mal mit print_r($ergebnis) ausgeben und gucken welche Werte es in dem Array gibt. Poste mal was dann ausgegeben wird..

Hem hab mich vertan, mach das mal so:
Code:
$abfrage = "SELECT SUM(betraege) FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ergebnis = mysql_fetch_assoc($ausgabe);
print_r($ergebnis);
// echo "<p><strong>".$ergebnis."</strong> Euro Insgesamt!</p>";
 

Samurai

Klarapfel
Registriert
20.04.05
Beiträge
277
Hi dpr,

danke für deine Hilfe, da sind wir schon einen Schritt näher,

wenn ich alles mit deinem Quellcode ausführe kommt auf dem Browser sowas raus:

Array ( [SUM(geld)] => 50 )

Also die 50 sind korrekt.

Aber wie krieg ich das jetzt dies jetzt mit dem schönen Text den du auskommentiert hast hin, ohne Array...?

@Sid.Tux Danke für die Seite habe auch schon versucht mit mysql_result aber da zeigt der mit nix mehr an :/
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
Okay, dann musst du das noch so ändern:
Code:
$abfrage = "SELECT SUM(betraege) FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ergebnis = mysql_fetch_assoc($ausgabe);
echo "<p><strong>" . $ergebnis["geld"] ."</strong> Euro Insgesamt!</p>";
oder anstatt der letzten Zeile:
Code:
echo "<p><strong>" . $ergebnis["SUM(geld)"] ."</strong> Euro Insgesamt!</p>";
Bin mir nicht ganz sicher... Das mit dem Sum(geld) ist etwas seltsam. Aber ansonsten machst du das ganze einfach so:
Code:
$abfrage = "SELECT * FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ganzesgeld = 0;
while($ergebnis = mysql_fetch_assoc($ausgabe)) {
/* Schleife, die für jeden Eintrag die Variable $ganzesgeld um $geld der jeweiligen Spalte erhöht. */
$geld = $ergebnis["geld"];
$ganzesgeld = $ganzesgeld + $geld;
}
echo "<p><strong>" . $ganzesgeld ."</strong> Euro Insgesamt!</p>";
 
  • Like
Reaktionen: Samurai

Samurai

Klarapfel
Registriert
20.04.05
Beiträge
277
Tatsächlich, dein Code mit der while Schleife war korrekt und genau das gewünschte Ergebnis.

Ich dachte, wenn ich per SQL-Abfrage los starte und danach das Ergebnis als Wert abspeichere und entsprechend ausgeben will. Hätte nicht gedacht dass ich es mit der while-Schleife machen soll. Aber gut. Ich danke dir vielen mals.
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Das ganze geht auch mit deinem SUM um das in der Datenbank berechnen zu lassen, was schneller ist als das ganze in PHP per Schleife zu berechnen:

Dein Ursprungscode:
Code:
$abfrage = "SELECT SUM(betraege) FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ergebnis = mysql_fetch_assoc($ausgabe);
echo "<p><strong>" . $ergebnis["geld"] ."</strong> Euro Insgesamt!</p>";

Wie du auf die Summe zugreifen kannst:
Code:
$abfrage = "SELECT SUM(betraege) AS 'geldsumme' FROM `tabellenname`";
$ausgabe = mysql_query($abfrage);
$ergebnis = mysql_fetch_assoc($ausgabe);
echo "<p><strong>" . $ergebnis["geldsumme"] ."</strong> Euro Insgesamt!</p>";

Das von DRP angemerkte
Code:
$ergebnis["SUM(geld)"]
ist eben die Bezeichnung für dein Summenfeld. Die Datenbank ersetzt quasi die Spalte "Geld" durch eine Spalte mit dem Namen "SUM(Geld)". Daher gibt man üblicherweise , wenn man soetwas verwendet, noch einen Alias mit wie ich es oben beschrieben habe. Damit hat man dann wieder einen ansprechenden und verwendbaren Spaltennamen, den man ganz normal auslesen kann.
 
  • Like
Reaktionen: Samurai

Samurai

Klarapfel
Registriert
20.04.05
Beiträge
277
Danke Seaker, hab jetzt nun auch verstanden. Nur wusste ich vorher nicht wie ich es umsetzen konnte bzw. was bei mir jetzt so falsch war. Aber jetzt habe ich den Fehler erkannt.