MY SQL Rechnen mit Tabellenwerten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
beitrag
datensatz
ergebnis
falsch mache
fehlermeldung
flugstunde
fragen
gruss
minute
mitglied
mod
null
objekt
spalt
spalten
stehen
stunden
summen
tabelle
-
Hallo,
ich würde gerne bei meiner Tabelle von einer Spalte alle werte zusammen rechnen.
Ich habe auch schon viel versucht, aber immer kam eine Fehlermeldung egal was ich gemacht habe.
Meine Daten:
Tabelle: flugstunden
Spalte: stunde
Meine letzte Ausführung sieht so aus:
Ich habe mal den User und das Password raus genommen.
<?php
$host = "mysql.lima-city.de";
$user = "";
$password = "";
$dbname = "db_72063_1";
$tabelle ="flugstunde";
$dbverbindung = mysql_connect ($host, $user, $password);
$ergebnis = mysql_query(SELECT SUM(stunde) AS summe FROM flugstunden);
{
echo $ergebnis;
}
mysql_close ($dbverbindung);
?>
Leider kommt auch hier eine Fehlermeldung. Kann mir jemand sagen was ich falsch mache? Oder würdet ihr es ganz anders machen.
In meiner Tabelle stehen in der Spalte stunde 2 Zahlen: 10 und 15.
Als Ergebnis sollte also 25 raus kommen.
Mfg jens -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<?php $host = ''; $user = ''; $password = ''; $dbname = ''; $tabelle ='flugstunde'; $dbverbindung = mysql_connect ($host, $user, $password); // du hattest vergessen die datenbank auszuwählen mysql_select_db($dbname); // das or die(mysql_error()) hilft, es zeigt Fehlermeldungen an ... $query = 'SELECT SUM(stunde) AS summe FROM ' . $tabelle; $ergebnis = mysql_query($query) or die(mysql_error()); $num = mysql_num_rows($ergebnis); if($num == 1) { echo mysql_result($ergebnis,0,'summe'); } mysql_close ($dbverbindung); ?>
Das sollte funktionieren. Ist aber nicht unbedingt sicher für den Einsatzt auf einer Page.
Es müssten noch Fehlerbehandlung rein (z.b. bei der Table-auswahl) und auch das die(mysql_error()) ist nicht empfehlenswert.
... das $ergebnis ist ein mysql result, du kannst es nicht wie eine zahl behandeln. schau dir mal an wie ich es geschrieben habe.
Gruß gotn
edit: tippfehler entfernt
Beitrag geaendert: 24.2.2007 13:23:44 von gotn -
Vielen Danke für deine Antwort. Jetzt funktioniert es.
-
Kein Problem, aber wie gesagt, ich würde es so nicht auf einer Website einsetzen.
Gruß GotN -
Ich habe nun nochmal 2 Fragen:
Und zwar würde ich gerne nicht nur einfach so die Spalten zusammen rechen. Sondern die Spalten sollte Zeiten sein. Beispiel:
Name Spielzeit
XS 00:30
XD 02:14
Als Ergebnis soll dann 02:44 stehen. Ist sowas möglich?
Außerdem sollte darauf geachtet werden das nach 00:59 nicht 00:60 sondern 01:00 kommt.
Und meine Zweite Frage ist:
Ist es möglich das man die Anzahl der Spalten raus gibt. Beispiel ich habe in einer Tabelle die Mitglieder und würde nun gerne angezeigt bekommen wie viele Mitglieder ich habe.
Mfg Jens -
Bei folgender Tabelle (ergebnisse):
+---------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+------------+------+-----+---------+-------+ | name | varchar(3) | YES | | NULL | | | stunden | int(11) | YES | | NULL | | | minuten | int(11) | YES | | NULL | | +---------+------------+------+-----+---------+-------+
Verwende folgendes Query + WHERE Klausel:
SELECT (SUM(stunden)+FLOOR(SUM(minuten)/60) mod 24), (SUM(minuten) mod 60) FROM ergebnisse;
Für deine 2. Frage:
SELECT COUNT() FROM tabellenname ...
Beitrag geaendert: 6.3.2007 17:36:40 von bladehunter -
mit php auslesen und dann explode() geht auch ganz gut
-
Hallo,
ich habe es jetzt mal getestet, leider komme ich damit nicht so ganz klar. Ich bekomme kein Ergebnis raus, obwohl etwas in der Tabelle steht.
Hier mal Quelltext: (Verbindung zur Datenbank habe ich raus genommen)
<?php $dbverbindung = mysql_connect ($host, $user, $password); $abfrage = "SELECT (SUM(stunden)+FLOOR(SUM(minuten)/60) mod 24), (SUM(minuten) mod 60) FROM ergebnisse"; $ergebnis = mysql_query($abfrage); { echo "$ergebnis"; } ?>
Kann mir jemand sagen was ich falsch mache? (Ich bin nicht so gut in php, da ich es auch noch nicht so lange mache, also sorry wenn es ein einfacher Fehler ist, aber ich würde mich trotzdem freuen wenn ihr mir die Losung nenne könntet.)
Mfg Jens
Beitrag geaendert: 13.3.2007 15:31:14 von jensico-airlines -
Mach mal ein mysql_error(); am Ende des PHP Bereichs.
Dann sagt er dir die Fehlermeldung.
Du musst natürlich die Spaltennamen anpassen ;) -
Das habe ich jetzt mal gemacht.
Als Fehlermeldung kommt: Resource id #4
<?php $host = "mysql.lima-city.de"; $user = ""; $password = ""; $dbname = ""; $tabelle ="ergebnisse"; $dbverbindung = mysql_connect ($host, $user, $password); mysql_select_db($dbname); $abfrage = 'SELECT (SUM(stunden)+FLOOR(SUM(minuten)/60) mod 24), (SUM(minuten) mod 60) FROM ergebnisse'; $ergebnis = mysql_query($abfrage) OR die(mysql_error()); { echo $ergebnis; } mysql_close ($dbverbindung); ?>
Ich weiß nur nicht was daran noch falsch sein soll.
Mfg Jens -
Nicht mysql_close(); sondern mysql_error(); !
Du kannst das Ergebnis aus $ergebnis nicht einfach so ausgeben!
Du musst es Zeile für Zeile "fetch"en.
Dafür hast du folgende Möglichkeiten:
mysql_fetch_array — Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
mysql_fetch_assoc — Liefert einen Datensatz als assoziatives Array
mysql_fetch_field — Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
mysql_fetch_lengths — Liefert die Länge eines jeden Feldes in einem Ergebnis
mysql_fetch_object — Liefert eine Ergebniszeile als Objekt
mysql_fetch_row — Liefert einen Datensatz als indiziertes Array
Quelle: http://www.php.net/manual/de/ref.mysql.php -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage