Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Computed Field - Summe aus Feldern von referenzierter Node berechnen

Eingetragen von frank82 (28)
am 07.10.2012 - 18:46 Uhr in
  • Views
  • Drupal 6.x

Hallo,
ich bin gerade dabei, etwas für unsere Verbandsseite einzurichten, komme aber aufgrund meiner eher bescheidenen php Kenntnisse nicht weiter. Die Seite läuft unter Drupal 6.

Nun zu meinem Problem:
Unsere Mitgliedsvereine sollen sogenannte Startkarten für ihre Sportler bestellen können. Dafür gibt es zwei Contenttypen „Startkarte“ und „Sportler“. Für die Sportler gibt es zwei Gebührenkategorien, welche vom Alter abhängig sind. Hierfür habe ich unter dem Content „Sportler“ ein Computed Field angelegt, welches auf Grundlage des Geburtstages die Preiskategorie errechnet (Alter <= 23 => 5 Euro, sonst 10 Euro Lizenzgebühr).

Der Contenttyp „Startkarten“ enthält ein Beitragsreferenzfeld (unbegrenzte Einträge möglich), welcher auf die Sportler verweist. Es können also alle Sportler, für die eine Startkarte benötigt wird ausgewählt werden.

Jetzt möchte ich ein Computed Field bei „Startkarten“ anlegen, welches mir die Summe der Lizenzgebühren der ausgewählten Sportler ausrechnet. Allerdings habe ich trotz intensiver Recherche keine Ahnung, wie ich das hinbekommen kann.
Ich hoffe, ich konnte mein Problem einigermaßen verständlich rüber bringen…
Kann mir jemand helfen?

Vielen Dank schon einmal!

Viele Grüße

‹ userreference auf basis eines views einschränken - dort alle referenzierten User aus 2 userreference-Feldern verwenden Nur Nodes mit Berechtigung in View ausgeben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie meinst du das?Ein Verein

Eingetragen von Ionit (1802)
am 07.10.2012 - 20:56 Uhr

Wie meinst du das?

Ein Verein erstellt einen Node vom Typ "Startkarte" ... bei der Noderstellung wählt er über das Ref-Feld die "Sportler" aus. Wann sollen denn die Preise angezeigt werden? Nachdem der Node "Startkarte" gespeichert wurde oder schon vorm Speichern?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja genau!

Eingetragen von frank82 (28)
am 07.10.2012 - 21:20 Uhr

So ist der Ablauf. Der Gesamtpreis soll nach dem Speichern in das Feld geschrieben werden. Ich habe geplant dieses Feld dann per Mail über Rules an den Ersteller zu schicken - also quasi eine Bestätigung inkl. der per Vorkasse zu zählenden Gebühren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst mit Hilfe von

Eingetragen von Ionit (1802)
am 07.10.2012 - 21:38 Uhr

Du kannst mit Hilfe von node_load($nid); (und den NIDs aus dem Ref-Feld) die einzelnen Ref-Nodes laden, die entsprechende Gebühren-Felder abfragen und einfach per PHP summieren (im Computed Field).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, jetzt habe ich einen

Eingetragen von frank82 (28)
am 08.10.2012 - 08:21 Uhr

Danke, jetzt habe ich einen Ansatzpunkt. Mal sehen wie weit ich komme...
Eine Frage aber noch vorab - wäre es da nicht eigentlich auch sinnvoller, wenn ich das Computed Field aus Sportler (zur Berechnung der Beitragsklassen) entferne und diese Berechnung mit im Content Startkarte durchführen lasse? Eigentlich würde da doch ein Computed Field in Startkarte ausreichen mit dem Code, der erst die Beitragsklassen aus dem jeweiligen Geburtsdatum der ausgewählten Sportler ausrechnet und diese dann summiert. Kann man das in einem Feld machen oder habe ich da einen Denkfehler?

Vielen Dank!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielleicht kann mir ja jemand

Eingetragen von frank82 (28)
am 09.10.2012 - 12:08 Uhr

Vielleicht kann mir ja jemand weiterhelfen - ich habe jetzt ein wenig rum probiert aber komme auf Grund meiner bescheidenen Kenntnisse nicht weiter...
Bis jetzt habe ich folgenden Code:

$node_field[0]['value'] = db_result(db_query("SELECT SUM(field_testwert_value) FROM content_type_test"));

Der Content-Typ Test ist dabei mein Sportler und das Feld Testwert enthält die Gebühr. Das Computed Field ist in meinem Content-Typ Startkarte angelegt, welcher das Referenzfeld auf den Sportler (Content-Typ Test) enthält. Die Feldeinträge des Referenzfeldes sind dabei, wie gesagt, unbegrenzt.

Das Computed Field rechnet jetzt logischerweise die Gebühren aller angelegten Sportler zusammen. Soweit so gut - nur leider habe ich keine Ahnung, wie ich die Berechnung nur für die in der Node ausgewählten Sportler hin bekommen. Ich muss gestehen, dafür bin ich irgendwie zu doof und werde auch aus den Anleitungen nicht schlau.

Vielen Dank für eure Hilfe!

  • Anmelden oder Registrieren um Kommentare zu schreiben

frank82

Eingetragen von torfnase (1525)
am 10.10.2012 - 00:34 Uhr
frank82 schrieb

$node_field[0]['value'] = db_result(db_query("SELECT SUM(field_testwert_value) FROM content_type_test"));

nach FROM content_type_test würde sich dann eine WHERE-Klausel anbieten, mit der du die Tabelle so filterst, dass nur die Sportler beim Summieren berücksichtigt werden, die du haben willst.

Wie man so eine WHERE-Klausel syntaktisch richtig formuliert, dazu findest du z.B. bei MySQL haufenweise Anleitungen.

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Berthold, danke, für

Eingetragen von frank82 (28)
am 10.10.2012 - 11:26 Uhr

Hallo Berthold,
danke, für den Tipp.
Ich habe jetzt mal den Code angepasst, stehe aber jetzt vor dem nächsten Problem (den Testcontent habe ich jetzt mal raus geschmissen und den echten Content hinterlegt - also Felder im Code sind entsp. angepasst).

$node_field[0]['value'] = db_result(db_query("SELECT SUM(field_lizenzgeb_value) FROM content_type_sportler WHERE nid=%d",$node->field_sportler_sl[0][nid]));

Jetzt ist mein Problem, dass das Feld "field_sportler_sl[0]" immer die Lizenzgebühr aus der ersten Referenz ausliest. Wie bekomme ich es denn hin, dass hier alle ausgewählten Enträge ausgelesen werden. Ich bekomme das leider nicht hin! Oder ist der Ansatz komplett falsch? Würde mich freuen, wenn noch jemand einen Tipp für mich hätte!

Danke schonmal!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

also die WHERE Klausel sieht

Eingetragen von torfnase (1525)
am 10.10.2012 - 12:16 Uhr

also die WHERE Klausel sieht schon irgendwie merkwürdig aus, was hat da denn das Komma drin verloren und nach dem Komma steht nur ein Wert und keine Relation.
Hier kannst du dir mal WHERE Klauseln anschauen :-)
Es gibt aber auch jede Menge deutsche Seiten, die sich mit SQL beschäftigen.

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke! Ich werde mir den Link

Eingetragen von frank82 (28)
am 10.10.2012 - 12:29 Uhr

Danke! Ich werde mir den Link mal anschauen! Ich probiere da jetzt schon ewig dran rum:( Ist eben blöd, wenn einem da die kompletten Grundlagen fehlen...

Viele Grüße

Frank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kannst Du das nicht ebenso

Eingetragen von wla (9461)
am 10.10.2012 - 12:40 Uhr

Kannst Du das nicht ebenso mittels Views und Views-Aggregation (zu finden unter Extras) erreichen? Da gibt es die Möglichkeit über bestimmte Felder im View zu summieren. Dann mußt Du das nicht selbst codieren.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, ja das wäre

Eingetragen von frank82 (28)
am 10.10.2012 - 12:49 Uhr

Hallo Werner,

ja das wäre theoretisch möglich, würde mir aber meiner Ansicht nach nichts nutzen, da der Besteller eine Mail per Rules erhalten soll, in der dann der zu zahlende Betrag drin steht. Aber das dürfte ja nur gehen, wenn der Wert in die DB geschrieben wird oder sehe ich das falsch?

Gruß Frank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann füge ein computed field

Eingetragen von wla (9461)
am 10.10.2012 - 12:57 Uhr

Dann füge ein computed field ein, in dem Du den View über views_embed_view aufrufst und damit speicherst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das klingt ja ganz gut, bloß

Eingetragen von frank82 (28)
am 10.10.2012 - 13:08 Uhr

Das klingt ja ganz gut, bloß muss ich da mal schauen, wie ich den view am besten filtere - der Nutzer kann ja beliebig oft bestellen und die view dürfte dann ja bloß die letzte Bestellung anzeigen und das entsprechende Feld übernehmen... Muss ich wirklich mal probieren, der Ansatz klingt auf jeden Fall vielversprechend!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe nochmal gelesen und

Eingetragen von frank82 (28)
am 10.10.2012 - 13:43 Uhr

Habe nochmal gelesen und scheinbar rechnet views_calc nicht mit referenzierten Feldern.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du solltest ja auch die

Eingetragen von wla (9461)
am 10.10.2012 - 14:59 Uhr

Du solltest ja auch die Aggregation nehmen, die arbeitet mit den Ergebnissen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, ich habe das

Eingetragen von frank82 (28)
am 12.10.2012 - 08:30 Uhr

Hallo Werner,
ich habe das jetzt mal mit views und dem Computed Field versucht. Die Berechnung in Views klappt auch und ich kann die ganze View im Computed Field einbinden. Jetzt bräuchte ich aber noch einen Tipp, wie ich nur das Ergebnisfeld der View mit dem Computed Field ansprechen und in der DB speichern kann.
Vielen Dank!

Gruß Frank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Rollen
    vor 11 Stunden 50 Minuten
  • Inzwischen sind wir bei
    vor 1 Woche 4 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 4 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 2 Tagen
  • Hey danke
    vor 9 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 23 Stunden
  • Da scheint die Terminologie
    vor 10 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 10 Wochen 5 Tagen
  • In der entsprechenden View
    vor 10 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250237
Registrierte User: 20464

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 1 Benutzer und 23 Gäste online.

Benutzer online

  • wla

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association