---
title: "mm-Relation im FE ausgeben"
url: "https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Datenbank","Frage","TCA"]
created: "2006-10-11"
last_reply: "2006-10-13"
replies: 9
solved: false
page: 1
pages: 1
lang: "de"
---

# mm-Relation im FE ausgeben

Extensions › Entwicklung · 9 Antworten · gestartet 2006-10-11

## Eröffnungsbeitrag

**gaengsterbruth** · 2006-10-11 · [Beitrag #1](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/1)

Hallo!

Habe mit dem Kickstarter eine Extension erstellt die eine Selectorbox (True M-M relation) enthält. Nun weiss ich nicht genau wie ich die in dieser Selectorbox eingegebenen Werte im Frontend ausgeben kann.

Der zugehörige tca Teil sieht folgendermassen aus:

```php
"ranlage" => Array (		
	"exclude" => 1,		
	"label" => "LLL:EXT:mstreferenz/locallang_db.xml:tx_mstreferenz_referenz.ranlage",		
	"config" => Array (
		"type" => "select",	
		"foreign_table" => "tx_mstreferenz_anlage",	
		"foreign_table_where" => "AND tx_mstreferenz_anlage.pid=###CURRENT_PID### ORDER BY tx_mstreferenz_anlage.aname",	
		"size" => 3,	
		"minitems" => 0,
		"maxitems" => 5,	
		"MM" => "tx_mstreferenz_referenz_ranlage_mm",	
		"wizards" => Array(
			"_PADDING" => 2,
			"_VERTICAL" => 1,
			"add" => Array(
				"type" => "script",
				"title" => "Create new record",
				"icon" => "add.gif",
				"params" => Array(
					"table"=>"tx_mstreferenz_anlage",
					"pid" => "###CURRENT_PID###",
					"setValue" => "prepend"
				),
				"script" => "wizard_add.php",
			),
			"list" => Array(
				"type" => "script",
				"title" => "List",
				"icon" => "list.gif",
				"params" => Array(
					"table"=>"tx_mstreferenz_anlage",
					"pid" => "###CURRENT_PID###",
				),
				"script" => "wizard_list.php",
			),
			"edit" => Array(
				"type" => "popup",
				"title" => "Edit",
				"script" => "wizard_edit.php",
				"popup_onlyOpenIfSelected" => 1,
				"icon" => "edit2.gif",
				"JSopenParams" => "height=350,width=580,status=0,menubar=0,scrollbars=1",
			),
		),
	)
),
```

Wie muss ich diese in der Datei class.tx_mstreferenz_pi1.php umschreiben, damit ich die Werte zurückgeliefert bekomme. So sieht mein bisheriger Versuch aus:

```php
case 'ranlage':
 if(!count($this->aCash)){
  $query = ('SELECT t1.uid, t1.pid, t2.uid_local,    t2.uid_foreign, t3.uid, t3.aname FROM tx_mstreferenz_anlage t1,tx_mstreferenz_referenz_ranlage_mm  t2, tx_mstreferenz_anlage t3 WHERE t1.pid ='.intval($GLOBALS["TSFE"]->id).' AND t1.uid = t2.uid_local AND t2.uid_foreign = t3.uid');
  $this->cObj-> enableFields('tx_mstreferenz_anlage');
  $res = mysql(TYPO3_db, $query);
  while($row = mysql_fetch_array($res)
   $this->aCash[$row['t1.uid']]=$row;
  }
 }
 return $this->aCash[$this->internal['currentRow']['ranlage']]['aname'];
break;
```

Sollte eigentlich nicht so schwierig sein, weiss einfach nicht genau wie. Danke schon im vorraus.

Schönen Tag & Gruess

Ruth

## Antworten

### [#2](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/2) · lavitto · 2006-10-11

Hallo gangsterbruth

Schau dir mal die Funktion "pi_exec_query()" der pibase an, die unterstützt MM-Verknüpfungen.

Falls du die Query selbst schreiben möchtest, verwendest du am besten die [JOIN-Funktion](http://dev.mysql.com/doc/refman/5.1/en/join.html) von MySQL.

Gruss Philipp

### [#3](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/3) · gaengsterbruth · 2006-10-11

Ich habe mir die pi_exec_query Funktion schon lange studiert.
Leider verstehe ich nicht ganz wie des mit dem MM Query funktionieren soll.
Bei mir ist ja nicht das query selber das Problem.
sondern wie ich die werte aus der Funktion zurückgeben kann.

Das Abfrage Query welches ich geschriben habe, ist zwar nicht ganz sauber und wär mit einem Join sicher schöner aber funktionieren tuts.

```php
'SELECT t1.uid, t1.pid, t2.uid_local,    t2.uid_foreign, t3.uid, t3.aname FROM tx_mstreferenz_anlage t1,tx_mstreferenz_referenz_ranlage_mm  t2, tx_mstreferenz_anlage t3 WHERE t1.pid ='.intval($GLOBALS["TSFE"]->id).' AND t1.uid = t2.uid_local AND t2.uid_foreign = t3.uid'
```

Wie kriege ich nun den wert aus t3.aname für den ensprechenden Datensatz als Rückgabewert aus der Funktion ?

### [#4](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/4) · steffenk · 2006-10-11

```php
$res=$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query($select,$local_table,$mm_table,$foreign_table,$whereClause='',$groupBy='',$orderBy='',$limit='');
```

### [#5](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/5) · gaengsterbruth · 2006-10-12

Irgendwiä will das bei mir nicht so klappen.
Hat jetzt das query umgestellt, doch anscheinend stimmt das so nicht, gibt immer nen sql Fehler zurück. Sieht jemand den Fehler?

```php
$query=$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
'tx_mstreferenz_anlage.aname',
'tx_mstreferenz_anlage',
'tx_mstreferenz_referenz_ranlage_mm',
'tx_mstreferenz_anlage',
' AND tx_mstreferenz_anlage.pid =".intval($GLOBALS[TSFE]->id)."');
```

Und kann mit jemand sagen was folgene Zeile, genau bewirkt:

```php
$this->aCash[$row['uid']]=$row;
```

### [#6](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/6) · steffenk · 2006-10-13

Deine Foreign-Tabelle ist falsch, das muss doch tx_mstreferenz_referenz sein.

Woher sollen wir wissen, was in Deinem Modul in der Funktion aCash passiert ?

### [#7](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/7) · gaengsterbruth · 2006-10-13

Danke steffenk, habs auch rausgefunden mit der foreign Tabelle.
Das mit dem aCash hab ich auch rausgefunden, ist ja ne Variable die ich selber definiert habe, habs nur vergessen.

Leider funktioniert das dumme Query immer noch nicht, obwohl es im SQL Browser von phpmyAdmin keinen Fehler gibt. Naja hoffe werde den Fehler bald finden.

```php
case 'ranlage':
$out2 = '';
//Ist Array Leer
if(!count($this->aCash)){
  $query=$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('tx_mstreferenz_referenz.uid_local, tx_mstreferenz_anlage.aname','tx_mstreferenz_referenz','tx_mstreferenz_referenz_ranlage_mm','tx_mstreferenz_anlage',' AND tx_mstreferenz_anlage.pid =".intval($GLOBALS[TSFE]->id)."');
  $this->cObj->enableFields('tx_mstreferenz_anlage');
  $this->cObj->enableFields('tx_mstreferenz_referenz');
  
  $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query); 

  
  while($row = mysql_fetch_array($res)){
   $out2 = $row[aname];

  }
}
return $out2;
```

### [#8](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/8) · steffenk · 2006-10-13

lass mal Dein AND weg ;)

### [#9](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/9) · gaengsterbruth · 2006-10-13

Neee neee, habs getestet das AND wird dort schon benötigt...
Sonst stimmt das query erst recht nicht...
Schön wärs gewesen ...

### [#10](https://www.typo3.net/d/51483-mm-relation-im-fe-ausgeben/10) · steffenk · 2006-10-13

also da kommt das raus

```php
SELECT tx_mstreferenz_referenz.uid_local, tx_mstreferenz_anlage.aname
FROM tx_mstreferenz_referenz,tx_mstreferenz_referenz_ranlage_mm,tx_mstreferenz_anlage
WHERE
tx_mstreferenz_referenz.uid=tx_mstreferenz_referenz_ranlage_mm.uid_local AND tx_mstreferenz_anlage.uid=tx_mstreferenz_referenz_ranlage_mm.uid_foreign AND tx_mstreferenz_anlage.pid =".intval($GLOBALS[TSFE]->id)."
```

Und da sieht man Deinen Fehler: der Schluss

tx_mstreferenz_anlage.pid ='.intval($GLOBALS[TSFE]->id));

---

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