Zum Inhalt springen

relation suche in komma-separierten blob feldern

Erstellt am 22. März 2008 · 2 Antworten · letzte Antwort am 23. März 2008

Tags: Datenbank, Frage

rarufu ·

Hallo

bei einer selbst erstellen extension, die eine Vereinsdatenbank (Vereine, Sportarten: ein Verein hat x Sportarten. Sportart X wird in X Vereinen betrieben) werden soll, habe ich das Problem die komma separierten Werte auszulesen. Ich versuche sie so auszulesen, aber ees wird nur auf den ersten Wert im Feld zugegriffen.
Kann mir da jemand helfen, suche schon ewig nach einer Lösung....
Tausend Dank!
Gruss Ralph

$query='SELECT * from tx_rfvereine_vereinsdaten'
.' WHERE sportart IN ('.$this->internal["currentRow"]["uid"].')'
.' AND hidden=0 AND deleted=0 ';
$res = $GLOBALS['TYPO3_DB']->sql_query($query);
$result='';
while( $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res) ) {
$result.=$row['name'].',';
}
/*$result=substr($result,0,(strlen($result)-2)); */
return $result;
break;

marksta ·

Hallo Rarufu

Grundsätzlich ist diese Art der Speicherung von Beziehungen nicht optimal. Besser wäre die Verwendung des "True MM-Relations" Lösungsansatz.

Für dein Problem gibt es aber trotzdem eine Lösung, deine Abfrage sollte so aussehen:

$query='SELECT * from tx_rfvereine_vereinsdaten'
.' WHERE FIND_IN_SET('.$this->internal["currentRow"]["uid"].',sportart) AND hidden=0 AND deleted=0 ';

Wenn wir jetzt noch die von TYPO3 zur Verfügung gestellten Funktionen nutzen würde dies so aussehen:
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_rfvereine_vereinsdaten','FIND_IN_SET('.$this->internal["currentRow"]["uid"].',sportart)'.$this->cObj->enableFields('tx_rfvereine_vereinsdaten'));

Das enableFields kümmert sich automatisch um deleted, hidden oder abgelaufene Datensätze.

Gruss
Markus

rarufu ·

Hallo Markus!
Tausend Dank! Es funktioniert!!!javascript:emoticon('😃')
Ind ie MM Relationen muss ich mich dann mal einarbeiten. Wir Dir da ein Tutorial bekannt wäre....
Grüße
Ralph