[gelöst]Views_calc kilometerzähler
Eingetragen von esseff (173)
am 12.11.2010 - 14:27 Uhr in
am 12.11.2010 - 14:27 Uhr in
Hallo Gemeinde,
ich probiere jetzt schon ne Weile rum und komme zu keinem Ergebnis.
Folgende Situation:
mehrere User (4)
jeder läuft und trägt seine km und Zeit (pro lauf) in ein cck-feld
eine view (Seite) in der der user (angemeldeter) sich die km der anderen anzeigen lassen kann. (Userauswahl ist einfach, weiß ich).
öffentlicher Block mit Gesamtzahl (siehe http://www.lauffreund.de rechts block "gelaufene km" (bisher per Hand)) <<< dieser Block ist mein Problem. da habe ich bisher noch keine Lösung. für die seiten-view schwebt mir die Lösung vor.
kann mir jemand einen Tipp für den Block geben?
Vielen Dank im Vorraus
Sven
- Anmelden oder Registrieren um Kommentare zu schreiben
Und was ist jetzt genau das
am 14.11.2010 - 11:53 Uhr
Und was ist jetzt genau das Problem? An welcher Stelle kommst du denn mit Views Calc nicht weiter?
-----------
Luca Curella
Kooperative Netze - Berlin
mein problem ist, dass ich
am 14.11.2010 - 17:48 Uhr
mein problem ist, dass ich nicht weiß, wie ich einen block hinbekomme, in dem eine gesamtkilometerzahl und dann eine view mit den einzelnen km der user erstelle. so wie es quasie jetzt schon ist. der unterschied ist halt, dass ich im moment alles per hand mache und ich mir nur von den läufern die km geben lasse.
wenns auf diese weiße nicht
am 15.11.2010 - 12:08 Uhr
wenns auf diese weiße nicht möglich ist, würde ich gerne per php eine summe der in das feld der km eingetragenen zahlen ausgeben. allerdings bin ich nicht so der php-held. könnte mir jemand das script flink liefern, in das ich nur noch die feldbezeichnung eintragen muss?
edit:
ich versuchs grad damit. allerdings kommt folgende fehlermeldung:
warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../includes/common.inc(1695) : eval()'d code on line 7.
<?php
$sql = mysql_query("SELECT SUM(field_km_value) as total FROM datenbankname");
list($total) = mysql_fetch_array($sql);
echo $total;
?>
vom script her bin ich nun
am 15.11.2010 - 15:01 Uhr
vom script her bin ich nun umgestiegen auf:
<?php
echo db_result(db_query('SELECT SUM($node->field_km[0]) FROM {node} WHERE type = "kilometer"'));
echo mysql_error();
?>
allerdings habe ich da noch probleme. offensichtlich wird das cck-feld nicht richtig angesprochen.
PHP
am 15.11.2010 - 16:05 Uhr
Hallo.
<?php
echo db_result(db_query('SELECT SUM($node->field_km[0]) FROM {node} WHERE type = "kilometer"'));
echo mysql_error();
?>
Das kann nicht funktionieren, da PHP nur Texte innerhalb von
"
auswertet. Da Du die Variable$node
in einen Text mit einfachen Anführungszeichen setzt, wertet PHP den kompletten Text als simplen String, es wird also keine zusätzliche Behandlung des Textes vorgenommen.Ausserdem enthält
$node->field_km[0]
nicht den Namen der Tabellenspalte (der für SUM benötigt wird), sondern ein Array.Wieso willst Du eigentlich den Wert selbst berechnen? So wie ich das sehe, kann [do:views_calc Views Calc] doch schon von sich aus Summern bestimmter Felder berechnen.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ich kann die Summe der
am 15.11.2010 - 16:46 Uhr
Ich kann die Summe der km-felder in einer View am Ende ausgeben lassen. dies hab ich auch schon für eine Seiten-View hinbekommen. Dort kann man sich den User wählen und bekommt am Ende die Summe seiner gelaufenen km angezeigt.
Nun will ich aber auch einen Block haben, in dem die Summe aller gelaufenen km aller User angezeigt wird, dies bekomme ich aber mit views-calc nicht hin, außer ich lasse alle km von allen Usern anzeigen, was relativ unsinnig wäre. Die Betonung liegt dabei auf ICH, da es ja vielleicht doch möglich ist aber über meinen Wissensstand hinaus geht.
nach kleiner Änderung
am 16.11.2010 - 08:49 Uhr
<?php
echo db_result(db_query('SELECT SUM("field_km") FROM {node} WHERE type = "kilometer" '));
echo mysql_error();
?>
Hiermit bekomme ich nun schon keine Fehlermeldung mehr, aber eine 0 als Ergebnis. Ich probiere weiter.
Wenn ich statt SUM COUNT einsetze
<?php
echo db_result(db_query('SELECT COUNT("field_km") FROM {node} WHERE type = "kilometer" '));
echo mysql_error();
?>
zeigt er mir das richtigte Ergebnis (7 Einträge im field_km) an. Woran liegt's also, dass nicht addiert wird?
JOIN
am 16.11.2010 - 09:19 Uhr
Hallo.
<?php
echo db_result(db_query('SELECT SUM("field_km") FROM {node} WHERE type = "kilometer" '));
?>
Hiermit bekomme ich nun schon keine Fehlermeldung mehr, aber eine 0 als Ergebnis.
Das Feld "field_km" existiert nicht in der Tabelle "node" (würde mich jedenfalls ganz stark wundern). Du benötigst einen SQL-JOIN zwischen der Tabelle "node" und der Tabelle, in der die km-Werte gespeichert werden.
In etwa sowas:
<?php
$sql = "SELECT SUM(field_km_value) FROM {content_field_km} km INNER JOIN {node} n ON km.vid = n.vid WHERE n.type = '%s'":
print db_result(db_query($sql, 'kilometer'));
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke für den Hinweis mit der
am 16.11.2010 - 09:33 Uhr
Danke für den Hinweis mit der Tabelle node!
Hab's jetzt hinbekommen. Man lernt halt nie aus.
<?php
echo db_result(db_query('SELECT SUM(field_km_value) FROM {content_type_kilometer} '));
?>
Ergebnis
am 16.11.2010 - 09:58 Uhr
Ja, stimmt. Die Verbindung zur Tabelle "node" kann man sich hier auch gleich sparen.
Allerdings benötigst Du die Verbindung, wenn Du jetzt für jeden Benutzer die Gesamtkilometer abfragen möchtest.
<?php
$sql = "SELECT n.uid, SUM(field_km_value) as km FROM {content_field_km} km INNER JOIN {node} n ON km.vid = n.vid WHERE n.type = '%s' GROUP BY n.uid":
$results = db_query($sql, 'kilometer');
$items = array();
while (($item = db_fetch_object($results)) !== FALSE) {
$items[] = t('User !uid: !km', array('!uid' => $item->uid, '!km' => $item->km));
}
print theme('item_list', $items);
?>
Tipp: Beachte die Verhaltensregeln des DrupalCenter.