Zum Inhalt springen

FE Datenausgabe von einer query mit m:m Relation

Erstellt am 30. März 2008 · 2 Antworten · letzte Antwort am 2. April 2008

Tags: Frage

Heiky ·

Hallo ,

und noch eine Anfängerfrage.

Ich habe zwei Tabellen mit True m:m Relation im Kickstarter erstellt
Tabelle 1 enthält Regionen und Tabelle 2 Subregionen mit m:m Relation zu den Regionen.

Diese query funktioniert

$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery('tx_koba_regio.*,tx_koba_subregio.*' ,
' tx_koba_subregio, tx_koba_subregio_subregioregio_mm, tx_koba_regio' ,

' tx_koba_regio.uid AND tx_koba_subregio.uid=tx_koba_subregio_subregioregio_mm.uid_local AND tx_koba_regio.uid=tx_koba_subregio_subregioregio_mm.uid_foreign '.$this->cObj->enableFields('tx_koba_subregio'),
$groupBy='',
$orderBy='',
$limit='50');

Und mit folgender Schleife und Template erhalte ich alle Regionen und Subregionen im FE angezeigt
if ($res) {
$liste = '';
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){

$markerArray['###REGION###']=$row['region'];
$markerArray['###SUBREGION###']=$row['subregion'];
$liste .= $this->cObj->substituteMarkerArrayCached($singlerow, $markerArray,$row, array());
}
$subpartArray['###ROW###' ] = $liste;
}

return $this->cObj->substituteMarkerArrayCached($subpart, $markerArray, $subpartArray, array());

}

<!-- ###LISTVIEW### >
<!-- ###ROW### -->
<div id=box1" > ###REGION### </div>
<div id=box1" > ###SUBREGION###</div>
<!-- ###ROW### -->
<!-- ###LISTVIEW### >

Jetzt wird eine Liste erzeugt, die Regionen und zugehörige Subregionen korrekt anzeigt. Zu jeder Subregion wird die Region (mit-)angezeigt.
Natürlich gibt es zu einigen Regionen mehrere Subregionen und ich möchte eine Übersicht erzeugen, welche die Region nur einmal mit allen zugehörigen Subregionen anzeigt.

Ich habe schon verschiedenste Varianten versucht und so langsam komme ich zu dem Schluss, dass dieser Aufbau von Query, Schleife und $markerArray und Template so eigentlich nicht funktionieren kann, oder?

Wer hat einen Tipp oder ein kleines Muster wie der Code aufgebaut werden muss?

Danke
Heike

ffjoe ·

du kannst doch einfach innerhalb deiner while schleife folgendes machen:

$oldregion = '';
while(...) {

...
$markerArray['###REGION###']=$row['region'] != $oldregion ? $row['region']: '';
...

if($oldregion != $row['region']) {
 $oldregion = $row['region'];
}
}
Heiky ·

Danke,

funktioniert schon fast.

Die Region wird jetzt nur einmal im FE ausgegeben und alle Subregionen werden 'untergeordnet' dargestellt.

Leider wird aber zu jeder Subregion ein 'leeres Feld' für die Region im FE erzeugt.
Nun muss wohl noch etwas im Bereich Template-Gestaltung und/oder Verarbeitung
geschehen.
Einige Versuche haben bis jetzt leider nur "wirre" Listen im FE erzeugt.

Gibt es hierzu noch einen Tipp?