Home / Forum / Doppelte Sätze aus DB nur einmal ausgeben

Doppelte Sätze aus DB nur einmal ausgeben

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

Jan Wettern

Registriert seit: 31.03.2006

Beiträge: 6

Mittwoch, 26. Juli 2006 15:07:26

Hallo,
habe alles versucht bzw. in eZ-Foren nachgelesen, aber keine Lösung gefunden - (oder übersehen?).

Aufgabe:
Anzeige von Datensätzen aus DB (Extension) per Template über HTML Select.
Mehrere gleiche Werte (z.B. A) in einer Spalte (client_name) vorhanden. (A,B,C,A,D,F,R,A,X usw.)
Sätze werden werden sortiert nach "client_name" ausgelesen (leadsmodule.php)
Im Template erfolgt das Einlesen:

<select multiple="multiple" size="24" id="client_name" name="client_name">
<option selected="selected" value=''>-select-</option>
{section name=CLIENT loop=fetch('leads','filterlist')}
<option value="{$:item.contact_id}">{$:item.client_name}</option>
{/section}
</select>

Die Ausgabe ist logischerweise: A,A,A,B,C,D usw.

Problem:
Was um alles in der Welt muss ich tun, damit A nur einmal angezeigt wird?

Was ist mit "distinct", kann ich beim fetch was tun?
In "eZPersistentObject.php" habe ich auch nichts gefunden.

Bitte um Lösungsvorschläge.
Danke.

Jan

Sebastian v. Roos

Registriert seit: 27.01.2006

Beiträge: 358

Mittwoch, 26. Juli 2006 21:34:35

hab auch gerad so rumgesurft, auf der Suche nach der Antwort auf ein Problem, und dabei das mit den doppelten im Hinterkopf gehabt.
Aber ich glaub, das ist völlig was anderes, - für mich eh viel zu kompliziert.

http://ez.no/products/ez_publish/...nce/template_operators/arrays/unique

_______________________

http://webdevelopment.artenic.de ARTENIC - Publishing mit allen Mitteln!

Jan Wettern

Registriert seit: 31.03.2006

Beiträge: 6

Donnerstag, 27. Juli 2006 08:54:55

Danke Sepp für den Hinweis auf unique.
Das hatte ich auch schon gefunden, kann es allerdings mit der jetzigen Datenkonstellation nicht einsetzen, glaube ich.
Denn mit dem Fetch lese ich den ganzen Datensatz, der über ein Modul beschrieben und aus der DB geholt wird:
....
return eZPersistentObject::fetchObjectList( Leadsmodule::definition(),
$filter, $conds, null, $limitArray, $asObject);

Hier wäre schon ein Distinct sinnvoll, bevor die Daten an das Template gehen.

eZ bietet alles Mögliche an, um per Parameter das Lesen von Datensätzen zu steuern (Filter, Sortierung, Conditions etc.), aber einen Parameter "Distinct" finde ich nicht. Schwächelt eZ hier oder verstehe ich das Ganze nicht?
Wenn im Template der Fetch ausgeführt wird, ist der ganze Satz mit 18 Spalten im Array zu finden. Da bekomme ich natürlich kein Unique hin, da ich das auf eine Spalte (client_name) reduzieren müsste.

Wünschenswert wäre es, wenigstens im Template bzw. Fetch eine Möglichkeit zu haben, nur die Spalte client_name zu selektieren und die Doppelten z: B. mit unique oder was weiß ich nur einmalig auszulesen.

Wahrscheinlich muss ich ein neues Modul schreiben, in dem nur die eine Spalte aus der DB geholt wird, den fetch darufhin anpassen und mit unique arbeiten. Warum einfach wenn es auch umständlich geht.

Oder hat bitte ein eZ-erfahrener Kollege DEN genialen Vorschlag, der mir als "Viertel-Wissender" bis jetzt verborgen geblieben ist.
Ich kämpfe seit geraumer Zeit als Autodidakt mit eZ-publish. Gar nicht so einfach, hinter die Kulissen zu blicken.
Zumal die Dokumentation von eZ und auch das Buch "Learning eZ publish 3" in vielen Dingen nicht wirklich die Auskunft geben, die ich manchmal dringend bräuchte. Auf diese Art und Weise dauert das Projekt eben länger.

Bitte um eine elegante, nachvollziehbare Lösung.
Danke schön.

Jan

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein