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