---
title: "Database Relation Feld im FE richtig ausgeben"
url: "https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Datenbank","Frage"]
created: "2008-11-23"
last_reply: "2008-12-21"
replies: 7
solved: false
page: 1
pages: 1
lang: "de"
---

# Database Relation Feld im FE richtig ausgeben

Extensions › Entwicklung · 7 Antworten · gestartet 2008-11-23

## Eröffnungsbeitrag

**ÁndreMansfeld** · 2008-11-23 · [Beitrag #1](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/1)

Hallo Freunde,
ich versuche mich mal wieder mit, etwas für mich, gänzlich Neuem :-).

Ich hab 1 Extension mit 2 Tabellen (tx_test_main und tx_test_kat). Dort sind in der tx_test__main drei Einträge und eine Relation auf tx_test__kat.
In der tx_test__kat Tabelle habe ich nur 1 Feld (String Input).
Ich möchte hier nun bei der Ausgabe im FE die 3 Felder aus der tx_test__main + das 1 Feld aus der  tx_test__kat anzeigen lassen.
Im BE kann ich wunderbar bei der Eingabe die Kategorie auswählen.
Mit dem StandardQuery

```php
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_test_main','','','','');

while($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){; 
          $markerArray['###VORNAME###']=$row['vorname'];
          $markerArray['###NACHNAME###']=$row['nachname'];
          $markerArray['###ANMERKUNG###']= $row['anmerkung'];
          $markerArray['###KAT###']= $row['kategorien']; //RELATIONSAUSGABE <- hier soll der Text aus der UID stehen
```

klappt das auch wunderbar mit der Ausgabe.
ABER!!!  ###KAT### wird nicht durch den Text, sondern durch die UID dargestellt.
Hinter der UID/KAT sind einfach nur in der Listenansicht eingefügte Kategorien hinterlegt( z.B. 1 = Sehr Gut, 2 = Gut, u.s.w.). (Das Labelfeld habe ich angegeben)

Wie bekomme ich denn nun den Text zur UID in meine Ausgabe?

Lieben Gruß
Andreas

PS: Ich habe natürlich schon gegoogelt  #paralyzed# , aber die Threats waren meistens unbeantwortet oder auf die Ausgabe/Anzeige im BE bezogen. Also bitte um Verzeihung, wenn das schon mal behandelt wurde... ich hab dazu nichts gefunden  ;)

## Antworten

### [#2](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/2) · ÁndreMansfeld · 2008-11-23

OK, ich habe es jetzt mit einem String Replace gelöst!.
Wenn es eine einfachere Variante gäbe, wäre ich aber trotzdem froh, wenn mir das Einer noch posten könnte.
Mein Lösung jetzt ist halt nicht dynamisch. Also wenn jemand eine neue Kategorie einfügt, muß ich erst noch das _pi anpassen  o.O

Aber mal den Code(falls ihn jemand benötigt:

```php
$tausch = $row['kategorien'];
$search = array ("1","2","3","4");
$replace = array ("Sehr Gut","Gut","Befriedigend","Ausreichend");
$result = str_replace ($search, $replace, $tausch);
$markerArray['###KAT###']= $result;
```

Einfach über den Marker für die Ausgabe.
$search sucht nach dem Value.
$replace erzeugt eine Ausgabe(exakte Reihenfolge zu $search einhalten).
$result -> das str_replace ersetzt dann in $tausch die Werte.

Wie auch immer, es funktioniert, aber ist sicher nicht das Eleganteste.

lieben Gruß
Andreas

### [#3](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/3) · ÁndreMansfeld · 2008-12-09

Würde dieses Thema gerne nochmal aufgreifen.
Habe jetzt leider keine festen Auswahlfelder mehr, sondern eine Relation mit dynamisch ereiterbaren Einträgen.
Jetzt müsste ich doch im FE die realen Labels ausgegeben bekommen.
Also anstatt "1" für "Sehr gut" eben gleich direkt"Sehr gut".
Sonst müßte ich ständig überprüfen, ob da eine weitere Kategorie dazugekommen ist und dann die SEARCH/REPLACE ändern.
Die Labelfelder sind schon angegeben, aber im FE kommen nur die Zahlen  #angry#

Andreas

### [#4](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/4) · matin · 2008-12-09

du musst die id der kategorie, die in der tabelle main gespeichert wird, einfach in der tabelle kat mit where oder inner join abfragen ...

### [#5](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/5) · ÁndreMansfeld · 2008-12-18

Hallo matin,
vielen Dank für die Antwort.
Ich habe natürlich die DOKU zu exec_SELECTquery studiert.
Auch die zu exec_SELECT_query_mm.

Ich habe es leider noch nicht geschafft. Ich weiss, dass das wohl eine ganz einfache Sache ist, aber wie immer ists noch ein "KLICK" im Denken, um dann das Gelesene auch zu verstehen.  :)

Meine Query habe ich nach DOKU so aufgebaut.

```php
$Where ='??'; 
$res3 =GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('*','tx_test_main','tx_test_kat','',$Where,'','','')
```

Die Where Clause macht mir Schwierigkeiten, denn ich erhalte (egal wie ichs reincode) immer SQL Fehler #angry#
Leider gibts über die meisten Join Abfragen in Suchmaschinen immer nur Angaben in der "alten" bzw. SQL Schreibweise. Ich würde aber gerne in Typo3 konformen Schreibweisen bleiben und da sind die Ergebnisse etwas spärlich bzw. extrem verschachtelt und kompliziert #paralyzed#.

Nochmal kurz erwähnt um Fehler auszuschliessen.
Beim Erstellen der Extension habe ich parallel 2 Tabellen angelegt.
Das KAT Feld der "MAIN" Tabelle ist auf Database Relation (Select Global)mit einer Verbindung zur Kat Tabelle. Für die Kat Tabelle habe ich im BE einen Systemordner angelegt und die Kategorien eingetragen(erscheinen auch bei der MAIN Tabelle im BE). True MM habe ich nicht angehackt.
Ich habe außer in der _pi Datei nirgendwo etwas angepasst(vielleicht sollte ich das aber, hmm?).
thats it!!
Ich bekomme es einfach nicht hin, dass ich die 2te Tabelle in Abhängikeit der 1ten ausgegeben bekomme. Vielleicht noch einen Tipp oder Link  o.O

Lieben Gruß
Andreas

### [#6](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/6) · digedag · 2008-12-19

Die exec_SELECT_mm_query() ist in deinem Fall nicht anwendbar, weil du in deiner DB-Struktur keine MM-Beziehung hast. Dafür würdest du nämlich auch drei Tabellen benötigen. Du hast eine einfache 1-n-Beziehung. Du kannst einem Datensatz in der Tabelle **tx_test_main** genau eine Kategorie zuordnen.

Um bei der Ausgabe die ID der Kategorie zu ersetzen, gibt es zwei Ansätze. Entweder du lädst die Daten getrennt mit zwei DB-Anfragen oder du machst es mit einer einzelnen Anfrage, indem du die Tabellen mit einem JOIN verbindest.

Beim ersten Ansatz lädst du zuerst alle Kategorien aus der DB. Da vermutlich nur ein paar sind, ist das nicht weiter kritisch.

```php
$GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,name','tx_test_kat');
while($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){;
 $cats[$row['uid']]=$row['name'];
}
```

Damit hast du ein neues Array $cats bei dem du leicht den Namen zu einer Kategorie ermitteln kannst. Wenn du nun deinen Zugriff auf die Tabelle tx_test_main machst und das markerArray füllst, dann sieht die Zeile für die Kategorie so aus:

```php
$markerArray['###KAT###']= $cats[$row['kategorien']]
```

In der zweiten Variante überläßt du diese Zuordnung der DB. Dadurch wird aber das SQL-Statement etwas komplizierter:

```php
$where = 'tx_test_main.kategorien = tx_test_kat.uid';
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tx_test_main.*,tx_test_kat.name AS catname','tx_test_main,tx_test_kat', $where);
while($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){;
 ...
 $markerArray['###KAT###']= $row['catname'];
}
```

Anmerkungen: Das funktioniert so wirklich nur bei 1-n Beziehungen. Wenn in dem Feld kategorien der Tabelle tx_test_main kommaseparierte UIDs stehen, dann klappt das nicht. Hier muss dann ggf. mit IN_SET_INT gearbeitet werden.
Es fehlt in den Beispielen auch noch die Abfrage der enableFields, also von hidden und deleted.

### [#7](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/7) · matin · 2008-12-19

versuch mal:

```php
$query = ('SELECT t1.*, t2.*
 FROM tx_test_main t1,tx_test_kat t2
 WHERE t1.kategorie = t2.uid and t1.hidden=0 and t1.deleted=0');     

$res =$GLOBALS['TYPO3_DB']->sql_query($query);
```

### [#8](https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben/8) · ÁndreMansfeld · 2008-12-21

Hallo ihr Beiden,
sorry, dass ich mich heute erst melde, aber war sehr mit Weihnachtseinkäufen beschäftigt :-). Musste auch mal sein!!!

Vielen Dank für die Antworten, denn Beide bzw. Jede der Varianten führte dann letztlich zum Erfolg(mit ein bisschen Anpassung).
Jetzt hats auch Klick gemacht. An der "Where Clause" lags...
Durch das viele Lesen von mm_ 1N_ ect. Queries hat ich wohl immer genau das Falsche in der WHERE.

Ich wünsche Euch ein ruhiges schönes Weihnachtsfest!!!!!!

Ihr wart SUPER.....

Andreas

---

Quelle: „Database Relation Feld im FE richtig ausgeben“, typo3.net, https://www.typo3.net/d/84299-database-relation-feld-im-fe-richtig-ausgeben
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
