Zum Inhalt springen

selectFields - Problem

Erstellt am 11. Februar 2010 · 6 Antworten · letzte Antwort am 20. August 2010

Tags: Frage

wolfi02 ·

Hallo Gemeine,
ich habe ein Problem mit dem select mittels TS. Derzeit versuche ich den Klickpfad auf der Webseite mit den Kategorien (kommen aus Ext) zu erweitern. Hier mein aktuelles TS:

  25 = RECORDS
  25 {
    dontCheckPid = 1
    tables = tx_proindustrydb_cat
    source.data = GPvar:tx_proindustrydb_pi1|showCat
    select {
      pidInList = 2,17
      selectFields = cat.title AS maincat, cat2.title AS subcat
      leftjoin = tx_proindustrydb_cat AS cat2 ON ( cat.uid = cat2.parent_category )
    }
    
    conf.tx_proindustrydb_cat = COA
    conf.tx_proindustrydb_cat {
      10 = TEXT
      10.field = maincat
      10.required = 1
      10.wrap = <li>|&nbsp;&raquo;</li>
   
      20 = TEXT
      20.field = subcat
      20.required = 1
      20.wrap = <li>|&nbsp;&raquo;</li>
    }
  }

Das Problem liegt meiner Meinung nach an selectFields. Dort sind die Felder angeben, welche ich aus der DB holen möchte. Allerdings scheint es mit "AS" nicht zu funktionieren. Jedenfalls bekomme ich darüber keine Ausgabe in den 2 Textobjekte.
Wenn ich stattdessen ohne "AS" arbeite funktioniert es nur in sofern, dass ich in beiden Textobjekte den gleichen Text ausgegeben bekomme.

Ich hoffe es kann jemand weiterhelfen.
Lg Christian

just2b ·

schaut eigentlich ok aus.

schalt doch mal sqldebug ein, produzier absichtlich einen fehler, dann siehst du genau die query wie sie aussieht, vielleicht hilft das schon mal

georg

wolfi02 ·

Hallo just2b,

der Tipp mit dem sqlDebug war gar nicht so schlecht 🙂.

Bisher konnte ich 2 Fehler beseitigen. Soweit ich das aus der TSRef lesen konnte, hat das RECORDS-Object die Eigenschaft "select" nicht. Daher habe ich ein CONTENT-Objekt daraus gemacht. Das CONTENT-Objekt kennt allerdings die Eigenschaft "conf" nicht, so dass an dieser Stelle nun ein eigenes Objekt erzeugt wird.
Zum anderen war das SQL falsch, was ich mithilfe des sqlDebug beheben konnte.

Mein TS sieht nun wie folgt aus:

 25 = CONTENT
  25 {
      table = tx_proindustrydb_cat
    select {
      begin = 0
      max = 1
      selectFields = tx_proindustrydb_cat.title,cat2.title AS subcat
      andWhere {
      	cObject = COA
      	cObject {
      		10 = TEXT
      		10.data = GPvar:tx_proindustrydb_pi1|showCat
         		10.noTrimWrap = |(tx_proindustrydb_cat.uid=| |
         		20 = TEXT
         		20.data = GPvar:tx_proindustrydb_pi1|showCat
         		20.wrap = OR cat2.uid=|)
         	}

      }
      leftjoin = tx_proindustrydb_cat AS cat2 ON ( tx_proindustrydb_cat.uid = cat2.parent_category )
    }

    renderObj = COA
    renderObj {
      10 = TEXT
      10.field = title
      10.required = 1
      10.wrap = <li>|1&nbsp;&raquo;</li>
    
      20 = TEXT
      20.field = subcat
      20.required = 1
      20.wrap = <li>|2&nbsp;&raquo;</li>
    }
  }

Allerdings funktioniert die Verarbeitung der Aliasnamen immer noch nicht.
Hat noch wer eine Idee?
Lg Christian

just2b ·

Hallo,

erstens: mach mal lieber ncoh ein intval dazu, sonst wird das ne böse sql injection und zum zweiten muss dir ein absichtlicher fehler ja das query dennoch geben und das im phpmyadmin getestet > wie schaut da das ergebnis aus?

wolfi02 ·

Hallo,
habe den Fehler gefunden. Und zwar hat

pidInList = 2,17

gefehlt.
Nun funktioniert es, vielen Dank.
Bezüglich der SQL-Injection hast du natürlich recht. Kannst du mir einen Hinweis geben, wie das dort in das TS implementieren kann?

wolfi02 ·

Jetzt schließt sich gleich noch eine Frage an. Wie schaffe ich es, die Punkte zu verlinken?
Derzeit habe ich folgendes ohne Erfolg probiert:

renderObj = COA
renderObj {
  10 = TEXT
  10.field = title
  10.required = 1
  10.typolink.parameter = 10
  10.wrap = <li>|&nbsp;&raquo;</li>
   
  20 = TEXT
  20.if.value.field = uid
  20.if.equals.data = GPvar:tx_proindustrydb_pi1|showCat
  20.field = subcat
  20.required = 1
  20.wrap = <li>|&nbsp;&raquo;</li>
}

Hat jemand eine Idee warum der Link nicht erzeugt wird?

Levy ·

Ist zwar schon eine Weile her, aber nur der Form halber für TS'ler, die das gleiche Problem haben:

renderObj = COA
renderObj {
  10 = TEXT
  10.field = title
  10.required = 1
  10.typolink.parameter < .10
  10.wrap = <li>|&nbsp;&raquo;</li>
 
  20 = TEXT
  20.if.value.field = uid
  20.if.equals.data = GPvar:tx_proindustrydb_pi1|showCat
  20.field = subcat
  20.required = 1
  20.wrap = <li>|&nbsp;&raquo;</li>
}

Statt
10.typolink.parameter = 10
muss es heißen
10.typolink.parameter < .10

Ciao,
Levy