Mysql-Werte (int) summieren

Moin werte Gemeinde!

Folgendes Problem:
In einer mysql-Datenbank namens „cash“ befindet sich eine Tabelle „umsatz“. Darin gibts u.a. eine Spalte „betrag_euro“ (int) und eine Spalte „kontakt_typ“ (varchar).

Die Bedingung alle „betrag_euro“ aufzulisten, wenn sich in der Zeile auch ein „kontakt_typ = ‚Ausgabe‘“ befindet funkioniert mit

$abfrage_b = "
SELECT
betrag_euro
FROM $table_one_name
WHERE kontakt_typ = ‚Ausgabe‘
";
$ergebnis_b = mysql_query($abfrage_b);
while($row = mysql_fetch_object($ergebnis_b))
{
echo $row -> betrag_euro . "
";
}

einwandfrei.

Es funktioniert aber nicht alle gefundenen „betrag_euro“ mit

$abfrage_b = "
SELECT
SUM (betrag_euro)
FROM $table_one_name
WHERE kontakt_typ = ‚Ausgabe‘
";
$ergebnis_b = mysql_query($abfrage_b);
while($row = mysql_fetch_object($ergebnis_b))
{
echo $row -> betrag_euro . "
";
}

zu summieren.

Was mach ich falsch?

Gruß

widecrypt

Hi widecrypt,

ich habe einen Verdacht, warum es nicht funktioniert - versuch mal:
$abfrage_b = "
SELECT
SUM (betrag_euro) AS total_euro
FROM $table_one_name
WHERE kontakt_typ = ‚Ausgabe‘
";
$ergebnis_b = mysql_query($abfrage_b);
while($row = mysql_fetch_object($ergebnis_b))
{
echo $row->total_euro . "
";
}

sollte funktionieren.

Gruß,
Rudy

Hi Rudy,

ich habe einen Verdacht, warum es nicht funktioniert - versuch
mal:
$abfrage_b = "
SELECT
SUM (betrag_euro) AS total_euro
FROM $table_one_name
WHERE kontakt_typ = ‚Ausgabe‘
";
$ergebnis_b = mysql_query($abfrage_b);
while($row = mysql_fetch_object($ergebnis_b))
{
echo $row->total_euro . "
";
}

Danke für die schnelle Antwort, aber es funktioniert leider nicht.

Ausgabe:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in …

Noch Ideen?

Gruß

widecrypt

Hi Widecrypt -

aus dem PHP-Handbuch bei mysql_fetch_object:

When selecting with a count/sum, the field must be named.

select count(\*) from users;
becomes
select count(\*) as total from users;

This way the result can be referenced as:
$row-\>total;

Wenn Du ein invalid ressource-Fehler hast, liegt es nahe, dass die Abfrage nicht richtig arbeitet. Ich hoffe Du hast kein Feld, welches total_euro benannt ist.
Mit count/sum bekommst Du immer nur einen Wert zurück, die Schleife brauchst Du eigentlich nicht.

$abfrage_b = "SELECT IFNULL(SUM(betrag_euro), 0) AS total_euro FROM $table_one_name WHERE kontakt_typ = ‚Ausgabe‘;
print($abfrage_b);
$ergebnis_b = mysql_query($abfrage_b) or die(mysql_error());
if ($row = mysql_fetch_object($ergebnis_b)) {
print($row->total_euro);
}

Tritt damit auch der Fehler auf? Wie ist die Ausgabe?

Gruß,
Rudy

Hi Rudy,

Danke, Danke, Danke.
Jetzt gehts.
(???)

aus dem PHP-Handbuch bei mysql_fetch_object:

When selecting with a count/sum, the field must be named.

OK. Das hab ich übersehen.

select count(*) from users;
becomes
select count(*) as total from users;

This way the result can be referenced as:
$row->total;

Das hast du dann repariert.

Wenn Du ein invalid ressource-Fehler hast, liegt es nahe, dass
die Abfrage nicht richtig arbeitet. Ich hoffe Du hast kein
Feld, welches total_euro benannt ist.

Nein. Und wenn hätt ich total_rudy genommen :wink:)

Mit count/sum bekommst Du immer nur einen Wert zurück, die
Schleife brauchst Du eigentlich nicht.

Das war bis heute Morgen auch meine Meinung. Aber ohne die while-Schleife mault er rum.

$abfrage_b = "SELECT IFNULL(SUM(betrag_euro), 0) AS total_euro
FROM $table_one_name WHERE kontakt_typ = ‚Ausgabe‘;
print($abfrage_b);
$ergebnis_b = mysql_query($abfrage_b) or die(mysql_error());
if ($row = mysql_fetch_object($ergebnis_b)) {
print($row->total_euro);
}

Tritt damit auch der Fehler auf?

Nein.

Wie ist die Ausgabe?

Erst gibt er die Abfrage aus wie er das soll „print($abfrage_b);“ und dann den korrekten Wert „print($row -> total_euro);“

Irgendwie beschleicht mich der Verdacht, daß er mit echo ein Problem hat.

Nochmal Danke.

Gruß

widecrypt