Database relation / Content-UId wird ausgegeben! [Gelöst]

  • elv1s elv1s
    Jedi-Meister
    0 x
    494 Beiträge
    0 Hilfreiche Beiträge
    10. 04. 2006, 16:47

    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 woida
    Flash Gordon
    0 x
    2356 Beiträge
    1 Hilfreiche Beiträge
    10. 04. 2006, 17:02

    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 elv1s
    Jedi-Meister
    0 x
    494 Beiträge
    0 Hilfreiche Beiträge
    10. 04. 2006, 17:14

    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 TW
    Jedi-General
    0 x
    1560 Beiträge
    0 Hilfreiche Beiträge
    14. 04. 2006, 23:00

    $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

  • 0 x
    84 Beiträge
    0 Hilfreiche Beiträge
    28. 08. 2006, 23:47

    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 mamo
    R2-D2
    0 x
    119 Beiträge
    0 Hilfreiche Beiträge
    05. 10. 2006, 18:00

    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:

    1. if (!isset($this->piVars['pointer'])) $this->piVars['pointer']=0;
    2. if (!isset($this->piVars['mode'])) $this->piVars['mode']=1;
    3. 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 elv1s
    Jedi-Meister
    0 x
    494 Beiträge
    0 Hilfreiche Beiträge
    09. 10. 2006, 16:56

    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

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    25. 10. 2006, 14:40

    1. 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?

  • elv1s elv1s
    Jedi-Meister
    0 x
    494 Beiträge
    0 Hilfreiche Beiträge
    26. 10. 2006, 00:03

    Hallo!

    wo hast du das den eingegeben?

    danke
    gr.

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    26. 10. 2006, 00:14

    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

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

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