Zum Inhalt springen

Database relation / Content-UId wird ausgegeben!

Erstellt am 10. April 2006 · 16 Antworten · letzte Antwort am 16. Mai 2007

Tags: Frage

elv1s ·

Hallo,

habe eine kleine Ext. geschrieben - oder besser gesagt, versuche es! -

Nun habe ich ein Feld "Databas relation / Create relation to table:" angelegt und als Tabelle tt_content ausgewählt.

Ich möchte auf einer bestimmte Seite bereitsvorhandene Content-Items einfügen.

Im Backend funktioniert das auch. Aber im Frontend wird immer nur die UID des Contents gezeigt. Also z.B: 1232 statt eigentliche Text "blababbababaabs abnsbas"

Wie kann ich dafür sorgen, dass eben der Text ausgegeben wird!?

Danke
Gruss
Kasper

woida ·

Durch den Typ "Database Relation" wird ja quasi nur ein "Link" zu einem anderen Datensatz gespeichert (also in deinem Fall die uid).
Diese uid mußt du dann halt weiter auswerten. In deinem Fall also ein SELECT auf die entsprechende Tabelle mit der entsprechenden Bedingung.

Übringeds: Das was in der tt_content gespeichert ist, ist nicht gleich dem HTML-Output von Typo3. Das muß noch geparst werden.

elv1s ·

Hi Woida,

danke...!

mist..! wie soll des denn aussehen und wo muss man diese Select eingeben?

Ich möchte pracktisch nur diese "datensatz einfügen" funktion in meine kleine Ext. einbauen...

Danke
Gruss
kasper

TW ·

$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'uid, text, bla', //felder
'tx_habkeineahnung', /from
'uid = deineuid_aus_tt_content', //where
'',
'',
''
);

while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){

};

sollte so passen.... 8-)
aber ich übernehme keine gewähr... :o

cu

onkelfusspilz ·

Hi,

ich hatte das Problem auch hänge aber nun an einer anderen Stelle. Ich hatte das zunächst gelöst in dem ich in der PHP Datei pi1/class.tx_myextension_pi1.php in der Methode function getFieldContent($fN) eine switch-Bedingung für das Feld mit der ID hinzugefügt habe und dann aus der entsprechenden Tabelle den Wert über die ID selektiert habe und ausgegeben habe. Hat wunderbar funktioniert, ABER: Natürlich funktioniert das sortieren dann nicht (ich habe das sortieren für die Spalte aktiviert) bzw. genauer gesagt sortiert er, aber logischer Weise über die ID und nicht den referenzierten Text.
Hat dazu jemand einen Ansatz? Das muss auch sauberer gehen.
Meine Idee ist ein join-select zu machen so in der Art:

SELECT * FROM table1,table2 WHERE table1.refID=table2.id AND ... ORDER BY table2.stringField;

Ok, in phpmysql funktioniert die Abfrage, aber wie zum Henker parametrisiere ich pi_exec_query damit diese Abfrage funktioniert?

Oder gehe ich in eine falsche Richtung?

mamo ·

Hallo,
zum Sortieren habe ich eine Lösung gefunden: in der pi/class.tx_myextension_pi1.php zu den bestehenden zwei Zeilen den Sortierlink einfügen:

if (!isset($this->piVars['pointer']))	$this->piVars['pointer']=0;
if (!isset($this->piVars['mode']))	$this->piVars['mode']=1;
if (!isset($this->piVars["sort"]))	$this->piVars["sort"]="meinFeld:0";

0= aufsteigend, 1= absteigend sortieren.

Dafür habe ich mit dem neuen Kickstarter (extKey: Kickstarter) einige Sorgen. Wie hast du die erwähnte switch-Bedingung genau geschrieben? Ich habe eine von einer alten, noch mit Kickstarter (extKey: extrep_wizard) erstellten Extension abgeändert, mit dem Erfolg, dass nun nur noch die erste Zeile der Tabelle umgesetzt wird. Alle weiteren Einträge bleiben leer!
Wäre sehr froh um deinen Code-Schnipsel.
Danke
mamo

elv1s ·

Hallo,

also.. irgendwie komme ich nicht weiter..

Habe noch immer das gleiche Problem.

-----------
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'uid, text, bla', //felder
'tx_habkeineahnung', /from
'uid = deineuid_aus_tt_content', //where
'',
'',
''
);

while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){

};
---------------

wo soll ich das denn einfügen.

Kann mir bitte jemanden helfen!?
Danke
Gr.
Kasper

ICEMANno1 ·
t3lib::getProcessedValue

hab bei mir geholfen, hab die database relation auf fe_user gemacht
kann also fe_user eintragen und löschen im backend

im frontend wird bei mir dann der benutzername ausgegeben...

hat jemand ne idee wie ich dann im frontend die benutzer eintrage lassen kann?

ICEMANno1 ·

wie wo hab ich das eingegeben?

aaallllssssooooo, hier ein beispiel aus meine code

als erstes les ich einen datensatz aus, in dem die ganzen id's stehen
in meinem fall die FE Benutzer ID's
danach benutz ich die funktion getProcessedValue und geb dieser die tablle (aus der ich den datensatz hab), das tabellenfeld in der die ID's stehen und dann die variable in der die ID'S stehen

$this->getProcessedValue('tx_dienstanforderung_dienst',$feld,$rohdaten)

und danach liefert er mir die benutzernamen
mit dieser funktion kann mann auch checkboxen auslesen usw.

IYF ·

Hi,

schau dir doch einfach mal die Extension-Videos an. Dort wird auch ziemlich gut erklärt und gezeigt, wie man dein Problem löst. Am besten schaust du dir die gesamten Videos unter "Frontend Plugin Development" mal an.
http://typo3.org/documentation/videos/wmv-format/

Das Problem wird (glaube ich) in dem "Rendering The Category Title" Video gelöst.

Hoffe, das hilft dir weiter!

elv1s ·

Hallo"

so, habe nun fast alle videos angeschaut... Krieg es aber nicht hin... Kann mir jemanden vielleicht helfen. wie bekomme ich statt uid nun die tatsächliche Inhalten dargestellt..??!

vielen Dank.

Gruss
Kasper

elv1s ·

Hallo,

ist zwar schon ´ne weile her... Problem habe ich aber immer noch..!

wäre echt toll wenn jemanden da helfen / ´ne Tipp hat.

danke
gr.
kasper

just2b ·

Hallo,

ein klassischer 2Zeiler, wenn du tt_content-Elemente neu ausgeben willst und die ID hast:

<?
		$conf = array('tables' => 'tt_content','source' => $idList,'dontCheckPid' => 1);
		$markerArray['###TEXT###'] = $content = $this->cObj->RECORDS($conf);

?>

georg

elv1s ·

Hey Georg,

danke für deine Antwort.

Ich möchte also bestimmte content-element wieder ausgeben. Ich habe auch bereits eine ext. bzw. News so bearbeitet dass ich nun eine möglichkeit habe ein Content-Element rauszusuchen. Es wird aber im Front-end nur der Nummer (Content-ID-Nummer) ausgegeben.

Wenn ich dies mit deine 2 Zeile hinbekommen kann/will, wo muss ich die denn einfügen? Welche Datei muss ich bearbeiten?

Danke dir.
gr
kasper

just2b ·

naja in der Klasse, in der du die ID ausliest und dann zB direkt oder via template den inhalt zurückgeben willst.
2 Extensions, bei denen das auch im Einsatz ist, rgpopup, rgtabs

georg

mgiesen ·

ok, jetzt bekomme ich ein array zurück,
darin stehen die Daten des Datensatzes.

Ich möchte aber, dass dieser Datensatz
ganz "normal" ausgegeben wird.

das heisst, die variable $content steht in einem FE-plugin, das bereits eingebunden ist. an der stelle soll jetzt nun einfach der "durchgereichte" inhalt aus dem datensatz auftauchen.

gibt es sowas überhaupt schon?
oder muss ich evtl. einen weiteren Marker setzen?
Oder muss ich da ganz anders ran gehen?