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

MIN/MAX-Werte Exposed Filter - Field Collection

Eingetragen von ThuleNB (380)
am 01.09.2017 - 11:49 Uhr in
  • Views
  • Drupal 7.x oder neuer

Hallo,

ich arbeite mit Better Exposed Filter und lasse diese mit dem jQuery-Slider anzeigen. Die Min-/ und Max-Werte schreibe ich mir mit diesem Code in die Filter:

<?php
// MAX
   
$max_query = db_query('SELECT MAX(field_preis2_value) AS max_flaechenpreis, entity_id AS eid FROM field_data_field_preis2 LEFT JOIN node AS n ON entity_id = n.nid WHERE n.status =1;');
   
$record = $max_query->fetchAssoc();
   
$max=floatval($record['max_flaechenpreis']);
   
$settings['field_preis2_value']['slider_options']['bef_slider_max'] = $max;
//MIN
   
$min_query = db_query('SELECT MIN(field_preis2_value) AS min_flaechenpreis, entity_id AS eid FROM field_data_field_preis2 LEFT JOIN node AS n ON entity_id = n.nid WHERE n.status =1;');
   
$record = $min_query->fetchAssoc();
   
$min=floatval($record['min_flaechenpreis']);
   
$settings['field_preis2_value']['slider_options']['bef_slider_min'] = $min;
?>

Nun habe ich neuerdings das Modul Field Collection im Einsatz und wollte die Feld-Werte einger Field Collection Felder mit dem gleichen Code wie oben laden. Es werden zwar Werte aus der richtigen Datenbanktabelle geladen, allerdings nicht die wirklichen Min-/ und Max-Werte.

Ich kann mir das nur erklären, dass es sich hier um Field Collection Felder handelt und nicht -wie bisher- um normale Felder. In der Datenbanktabelle sehe ich, dass meine normalen Felder in der Spalte "entity_type" "node" stehen haben und meine Field Collection Felder "field_collection_item". Da im obigen Code "node" verwendet wird, liegt da vielleicht der Hase im Pfeffer.

Ich habe leider nur wenig Programmier- und SQL-Erfahrung und kann das Problem nicht beheben. Hat von euch jemand eine Idee, wie ich den Code anpassen müsste, damit das sauber funktioniert?

Grüße, Thomas

‹ Zeige User, die nicht per Entity Reference referenziert wurden MIN/MAX-Werte Exposed Filter - Field Collection ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi,FieldColleciions sind

Eingetragen von Hyp1 (1463)
am 02.09.2017 - 10:25 Uhr

Hi,

FieldColleciions sind keine normalen Felder, sondern Entities und werden normalerwiese über entity_load,entity_metadata_wrapper oder field_get_items geladen.
Schau mal hier:
https://www.drupal.org/node/1477202

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, danke für deine Hilfe.

Eingetragen von ThuleNB (380)
am 02.09.2017 - 12:14 Uhr

Hallo,

danke für deine Hilfe. Ich habe vielleicht die falschen Befriffe verwendet. Also ich versuche nicht die Field Collection zu laden, sondern ein paar Felder innerhalb der Field Collection. Das sind doch normale Felder, oder? Zumindest sehen sie in der Datenbank so aus. Bis auf die oben beschriebene Tatsache, dass anstelle "Node" in der Spalte "entity type" "field collection item" steht. Könnte das der Grund sein, dass die Werte nicht richtig geladen werden?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,nein eine

Eingetragen von Hyp1 (1463)
am 02.09.2017 - 13:16 Uhr

Hallo,

nein eine FieldColecction ist kein normales Feld sindern eine Kollektion aus Feldern
und muss dem entsprechend anders geladen.
Ja, das könnte der Grund sein, denn Du musst eine FieldCollection laden und keinen Node.
Der Node enthält nur die id der Fieldcollection, mit der du die Felder dann laden kannst.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

hmm...irgendwie komme ich

Eingetragen von ThuleNB (380)
am 05.09.2017 - 06:17 Uhr

hmm...irgendwie komme ich hier nicht weiter. Ich habe das Prinzip, dass eine Field Collection kein normales Feld ist, verstanden. Nur weiß ich nicht, wie ich meinen Code anpassen könnte, damit die Werte aus den Feldern der Field Collection korrekt geladen werden. Wie gesagt, es fehlen mir leider die Programmierkenntnisse, um den Fehler zu beheben. Hat vielleicht jemand einen Hinweis?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi nochmal.So sieht das in

Eingetragen von Hyp1 (1463)
am 08.09.2017 - 13:10 Uhr

Hi nochmal.

So sieht das in Code aus wenn man eine FieldCollection in Code laden
und die Felder in dieser Collection auswerten möchte:

//Get PROPERTY DESCRIPTION data from field collection.
$property_description = $node->field_property_description[LANGUAGE_NONE][0][‘value’];
// here we are loading field collection
$pd_item = field_collection_item_load($property_description);

//getting field collection item value.
$pd_item_values = array(
  ‘scheme_type’ => $pd_item->field_scheme_type[LANGUAGE_NONE][0][‘value’],
  ‘area’ => $pd_item->field_area[LANGUAGE_NONE][0][‘value’],
  ‘property_type’ => $pd_item->field_property_type[LANGUAGE_NONE][0][‘value’],
  ‘budget’ => $pd_item->field_budget[LANGUAGE_NONE][0][‘value’],
);

//PROPERTY DESCRIPTION ENDS.

Das Feld

Zitat:

$pd_item

ist eine FieldCollection und kein Wert eines Feldes!!

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Robert,vielen Dank für

Eingetragen von ThuleNB (380)
am 08.09.2017 - 08:38 Uhr

Hallo Robert,

vielen Dank für deine Hilfe hiermit. Ich habe deinen Code so angewendet:

<?php
     $fc_ge
= $node->field_data_field_test[LANGUAGE_NONE][0][‘value’];
   
$ge_item = field_collection_item_load($fc_ge);
   
$ge_item_values = array(
       
field_data_field_preis2 => $ge_item->field_preis2_value[LANGUAGE_NONE][0][‘value’];
   
$settings['field_preis2_value']['slider_options']['bef_slider_max'] = $ge_item_values;
?>

field_data_field_test = Field Collection
field_data_field_preis2 = Feld innerhalb der Field Collection, dessen Wert ich ausgeben möchte
field_preis2_value = Spalte mit den Werten aus field_data_field_preis2

Es funktioniert noch nicht. Kannst du einen Fehler in meinem Code sehen?

Wäre es nicht auch möglich meinen ursprünglichen Code, den ich für die "normalen" Felder verwende, anzupassen:

$max_query = db_query('SELECT MAX(field_mietpreis_value) AS max_mietpreis, entity_id AS eid FROM field_data_field_mietpreis LEFT JOIN node AS n ON entity_id = n.nid WHERE n.status =1;');

Ich möchte nämlich nur die Feldwerte laden, deren übergeordnete Nodes veröffentlicht sind. Könnte man das nicht auch mit einer zweiten LEFT JOIN bewerkstelligen? Sorry für meine Anfängerfragen, ich versuche mir die Basics beizubringen.

Danke und Grüße
Thomas

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi,$ge_item =

Eingetragen von Hyp1 (1463)
am 08.09.2017 - 10:03 Uhr

Hi,

$ge_item = field_collection_item_load($fc_ge);
$ge_item ist nicht ein Feld sondern MEHERE, also musst Du mit einer Loop durch alle Felder!

Da werden werden Felder einer FielCollection geladen.

Zitat:

function field_collection_item_load($item_id, $reset = FALSE) {
$result = field_collection_item_load_multiple(array($item_id), array(), $reset);
return $result ? reset($result) : FALSE;
}

Probier es mal mit einem loop durch $ge_item:

foreach($ge_item as $item){
//dpm($item);
//oder var_dump($item);
}

Gruss

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ohje, jetzt blick ich nicht

Eingetragen von ThuleNB (380)
am 08.09.2017 - 12:44 Uhr

Ohje, jetzt blick ich nicht mehr durch. Welchen Bereich muss ich entsprechend deinem Code austauschen?

Ist ein SQL Query nicht möglich? PHP verstehe ich nur sehr rudimentär.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi,ich habe es doch zeimlich

Eingetragen von Hyp1 (1463)
am 08.09.2017 - 13:15 Uhr

Hi,

ich habe es doch zeimlich genau beschrieben:
$ge_item ist kein Wert eines Feldes sondern eine FieldCollection.
Du kannst nicht einfach auf einen Wert von ge_item zugreifen,
sondern Du musst eine Schleife durchlaufen, auch wenn diese FieldCollection
nut ein Feld mit einem Wert hat!

$ge_item = field_collection_item_load($fc_ge);
foreach($ge_item as $item){
//dpm($item); //Wert ausgeben mit dpm
//oder var_dump($item); //Wert ausgeben mit var_dump
}

Gruss

Robert
btw. Der Code mit dem MIN MAX kommt mir bekannt vor. ich glaube da habe ich mal demjenigen hier weitergeholfen, der den Code geschreiben hat! ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • 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
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 1 Tag
  • Hey danke
    vor 1 Woche 2 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 19 Stunden
  • Da scheint die Terminologie
    vor 2 Wochen 22 Stunden
  • Kannst doch auch alles direkt
    vor 2 Wochen 5 Tagen
  • In der entsprechenden View
    vor 2 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 5 Tagen
  • gelöst
    vor 5 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 10 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