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

Durchschnitt eines Integer CCK Feldes['gelöst']

Eingetragen von drupaler3000 (78)
am 12.08.2008 - 15:10 Uhr in
  • Views

Ich habe ein CCK-Feld erstellt:

<?php
print $field_xy['0']['value']
?>

Mit diesem Code kann ich die eingegebene Zahl des Users in dem Node wiedergeben. Die Nodes sind mit verschiedenen Taxonomys verknüpft, also in Kategorien unterteilt.

Jeder einzelne Node hat diese Zahl, nun möchte ich den Durchschnitt dieses Feldes, aller Nodes die mit dem Taxonomy verknüpft sind. Diesen Durchschnitt möchte ich nun in den Nodes selber als auch in den Taxonomy Views anzeigen. Das wäre kein Problem wenn man die geeignete Funktion definiert.

Ich habe mir so etwas vorgestellt:(auch wenn ich weiß dass es so nicht funktioniert, aber deshalb frage ich ja hier...)

<?php
function custom_average_xy($taxonomy['mytaxonomy']) {

$taxonomy = 'mytaxonomy'; // Die Taxonomy die ich auswählen möchte

$nodes = node_load($taxonomy); // Lade alle Nodes die mit dem Taxonomy übereinstimmen
$nodescount = count nodes($taxonomy) // Zähle die Anzahl der Nodes, die diesem Taxonomy zugeordnet sind

if ($taxonomy) { // Nur Nodes die dem Taxonomy zugeordnet sind
foreach ($nodes as $node) {
$output = $node->content['field_xy'] // Gib für jeden Node den Inhalt von field_xy wieder

// An dieser Stelle müsste jede Zahl miteinander addiert werden

}}

$average = $output / $nodescount //Der addierte Wert geteilt durch die Anzahl der Nodes ergibt den Durchschnittswert

}
?>

Ich denke damit konnte ich gut verdeutlichen, was ich haben will, und so in der richtung muss man denken, auch wenn die syntax und so weiter oben komplett falsch sind. Darum ging es mir aber ja auch nicht.

Jetzt bräuchte ich noch jemanden mit Erfahrung der das Durcheinander sozusagen aufräumt und daraus eine gescheite Funktion bastelt. Weil ich weiß dass es ungefähr in die Richtung geht in die ich gedacht habe, nur würde ich es alleine nie hinbekommen, den code zum funktionieren zu bringen...

Wäre über Hilfe sehr dankbar, diese Funktion wäre sicher nicht nur für mich hilfreich. Danke schon mal im Voraus, ich bedanke mich außerdem schon mal für die vielen Antworten in den anderen Threads von mir, ihr habt mir sehr geholfen!

‹ [gelöst] Views + Userreference + Argumente PHP? (erledigt) CCK Feld wird in Vorschau angezeigt, Live nicht ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

mit welcher Drupalversion er es bei Deiner Aufgabe zu tun hat

Eingetragen von quiptime (4972)
am 12.08.2008 - 16:07 Uhr

Zu aller Erst.

Egal wer Dir hilft. Er sollte wissen mit welcher Drupalversion er es bei Deiner Aufgabe zu tun hat.

Zu Deinem Code.

Hast Du auf http://api.drupal.org/api/function/node_load/5 mal nachgesehen was node_load() so macht bzw. wie man die Funktion verwenden kann?

$taxonomy = 'mytaxonomy'; // Die Taxonomy die ich auswählen möchte

$nodes = node_load($taxonomy); // Lade alle Nodes die mit dem Taxonomy übereinstimmen
$nodescount = count nodes($taxonomy) // Zähle die Anzahl der Nodes, die diesem Taxonomy zugeordnet sind

Diese Logik kann nicht funktionieren.

 
Um die zu einem Term gehoerenden Nodes zu zaehlen gibt es eine andere Drupal Funktion.

Du solltest Dich mal auf http://api.drupal.org/api ein wenig umsehen.

Dann wirst Du eventuell diese Funktion entdecken: taxonomy_term_count_nodes()

API: taxonomy_term_count_nodes schrieb

Description

Count the number of published nodes classified by a term.
Parameters

$tid The term's ID

$type The $node->type. If given, taxonomy_term_count_nodes only counts nodes of $type that are classified with the term $tid.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo drupaler3000, Wenn ich

Eingetragen von rcj (66)
am 12.08.2008 - 16:57 Uhr

Hallo drupaler3000,

Wenn ich dich richtig verstanden habe, sollte es folgende Funktion tun (nicht getestet):

<?php
function custom_average_xy( $tid) {
 
$result = db_query( "SELECT AVG(ctype.field_xy) FROM {content_type_namedesctypes} AS ctype, {term_node} AS tn WHERE tn.nid = ctype.nid AND tn.tid = %d", intval( $tid));
 
$average = db_fetch_object( $result);
 
  return
$average->field_xy;
}
?>

$tid = die ID des Taxonomy Terms.

Grüße,
Robin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was genau muss ich da jetzt

Eingetragen von drupaler3000 (78)
am 12.08.2008 - 17:31 Uhr

Was genau muss ich da jetzt erstetzen?

field.xy mit dem namen meines feldes.
content_type_namedesctypes = content_type_blog oder nur blog ?
{term_node} so lassen, oder?

Wenn ich das jetzt beispielsweise in node.tpl.php - datei schreiben wollte, müsste es so aussehen oder?:

<?php
print custom_average_xy($tid)
?>

Wo mach ich Tid Nummer jetzt hin, so?:

<?php
print custom_average_xy($262)
?>
dann kommnt ne fehlermeldung

<?php
print custom_average_xy($tid['262'])
?>
dann kommt zwar eine warnung aber die seite wird geladen.

Folgende Warnung kommt:

user warning: Unknown column 'ctype.field_wertung' in 'field list' query: SELECT AVG(ctype.field_wertung) FROM content_type_blog AS ctype, term_node AS tn WHERE tn.nid = ctype.nid AND tn.tid = 0 in /www/htdocs/w00a0a1e/includes/database.mysql.inc on line 172.

Oder muss ich die Tid in der funktion selber irgendwo einsetzen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo

Eingetragen von rcj (66)
am 12.08.2008 - 17:48 Uhr

Hallo drupaler3000,

<?php
print custom_average_xy( 262);
?>

Im Zweifel musst du in der DB nachsehen, in welcher Tabelle das CCK Field abgespeichert wird,
bei Inytegers ist dies idr in der content_type_xxx wobei xxx Name des Contenttypes.

Grüße,
Robin

  • Anmelden oder Registrieren um Kommentare zu schreiben

so ich hab jetzt mal

Eingetragen von drupaler3000 (78)
am 12.08.2008 - 18:22 Uhr

so ich hab jetzt mal nachgeschaut, bei dem feldnamen muss es anscheinend field_wertung_value heißen. Die Fehlermeldung ist jetzt weg, aber es wird leider auch gar nichts ausgegeben.

Kann man das denn überhaupt in die node.tpl.php datei reinschreiben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was willst Du denn reinschreiben?

Eingetragen von quiptime (4972)
am 12.08.2008 - 18:36 Uhr
Zitat:

Kann man das denn überhaupt in die node.tpl.php datei reinschreiben?

Was willst Du denn reinschreiben?

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?phpprint

Eingetragen von drupaler3000 (78)
am 12.08.2008 - 18:45 Uhr

<?php
print custom_average_xy( 262);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo drupaler3000, sofern

Eingetragen von rcj (66)
am 12.08.2008 - 21:52 Uhr

Hallo drupaler3000,

sofern die Funktion in der template.php steht, ja.
Gib den Query bitte mal in phpMyAdmin ein und schau mal
was du dort als Ergebnis bekommst.

Grüße,
Robin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Da steht ich hätte einen

Eingetragen von drupaler3000 (78)
am 13.08.2008 - 08:21 Uhr

Da steht ich hätte einen Error in der SQl Syntax. Ich benutze Mysql 5 mit Drupal 5.

Fehlermeldung:

SELECT AVG( ctype.field_wertung_value )
FROM {content_type_blog} AS ctype, {term_node} AS tn
WHERE tn.nid = ctype.nid
AND tn.tid = % d

MySQL meldet:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '} AS ctype, {term_node} AS tn WHERE tn.nid = ctype.nid AND tn.tid = %d' at line 1 

  • Anmelden oder Registrieren um Kommentare zu schreiben

SQL-Fehler

Eingetragen von stBorchert (6003)
am 13.08.2008 - 08:35 Uhr

Moin!
Wenn Du das Statement direkt an MySQL sendest, musst Du die geschweiften Klammern weglassen.
Die markieren in drupal Platzhalter für den Tabellennamen, wenn das Statement über drupal_query() ausgeführt wird.

hth,

 Stefan

Nachtrag: und das "%d" musst Du natürlich auch noch durch die entsprechende Id des Term ersetzen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke stefan, jetzt hats

Eingetragen von drupaler3000 (78)
am 13.08.2008 - 09:12 Uhr

Danke stefan,

jetzt hats geklappt!

Folgende Datenbankabfrage direkt in mysql:

SELECT AVG(ctype.field_wertung_value) FROM content_type_blog AS ctype, term_node AS tn WHERE tn.nid = ctype.nid AND tn.tid = 262

Er gibt einen Wert zurück!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo drupaler3000, ist es

Eingetragen von rcj (66)
am 13.08.2008 - 09:38 Uhr

Hallo drupaler3000,

ist es der gewünschte Wert? Poste doch bitte nochmal die Funktion
wie du sie nun in der template.php stehen hast, wenn das print im
Template nichts ausgibt.

Grüße,
Robin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktion in der template.php

Eingetragen von drupaler3000 (78)
am 13.08.2008 - 10:11 Uhr

Funktion in der template.php - datei:

<?php

function custom_average_xy($tid) {
 
$result = db_query( "SELECT AVG(ctype.field_wertung_value) FROM {content_type_blog} AS ctype, {term_node} AS tn WHERE tn.nid = ctype.nid AND tn.tid = 262", intval( $tid));
 
$average = db_fetch_object( $result);

  return
$average->field_wertung_value;
}
?>

in der node.tpl.php - datei:

<?php
print custom_average_xy(262);
?>

ich habe das %d in 262 geändert, mit und ohne diese änderung, es wird leider nichts ausgegeben...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ändere deine Funktion mal

Eingetragen von Joscha (31)
am 20.08.2008 - 14:04 Uhr

Ändere deine Funktion mal so ab:

<?php

function custom_average_xy($tid) {
 
$result = db_query( "SELECT AVG(ctype.field_wertung_value) avgfield FROM {content_type_blog} AS ctype, {term_node} AS tn WHERE tn.nid = ctype.nid AND tn.tid = %d", intval($tid));
 
$average = db_fetch_object($result);
  return
$average->avgfield;
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Juhuuuuuuuuuuuuuuuuuuuuuuuuuu

Eingetragen von drupaler3000 (78)
am 20.08.2008 - 16:44 Uhr

Juhuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!

Es funktioniert!!!!!!!!!!!!!!!!!!!!!!!!!!!!11

Ich danke dir übwer alles! Das erspart mir viel "Code-Grübeln!!". Ich muss die SQL-Sprache auch mal lernen.

Was ich hier noch nicht angefragt habe, weil es zuerst im Hintergrund stand, ist, den Code des Tokens ['term-id']('Top Taxonomy Term'). Von diesem Top Taxonomy Term möchte ich die Tid, und diese dann dynamisch in die Klammern des Codes setzen, dann wäre es perfekt!

Ansonsten würde ich das noch selber versuchen, aber ich habe halt in jedem Node den Top Taxonomy Term, und den Durchschnitt dieser TID brauche ich, wenn das jemand versteht...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, wie muss ich den Code

Eingetragen von Lucidity (nicht überprüft) (0)
am 03.09.2010 - 12:33 Uhr

Hallo,

wie muss ich den Code ändern, damit nur veröffentlichte Nodes mit einbezogen werden?

  • 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 4 Tagen 3 Stunden
  • Inzwischen sind wir bei
    vor 2 Wochen 20 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Wochen 1 Tag
  • melde mich mal wieder, da ich
    vor 9 Wochen 5 Tagen
  • Hey danke
    vor 9 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 10 Wochen 5 Stunden
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 2 Tagen
  • In der entsprechenden View
    vor 11 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250237
Registrierte User: 20466

Neue User:

  • StevenEness
  • ocvk2810
  • marouane.blel

» 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 0 User und 24 Gäste online.

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