Zum Inhalt springen

select-ergebnis an special übergeben

Erstellt am 19. Juni 2007 · 8 Antworten · letzte Antwort am 28. Juni 2007

Tags: Datenbank, Frage

smindel ·

ich benötige hilfe bei folgendem problem:

ich möchte das ergebnis eines sql-selects in einer ts-variablen ablegen.

die abfrage würde normal so aussehen:
SELECT uid FROM pages WHERE pid=15 ORDER BY sorting LIMIT 1

das ergebnis ist eine einzelne int und soll so übergeben werden:
temp.MenuLinks2.special.value = ergebnisDerSQLabfrage

ich steh aufm schlauch. hat jemand ne idee?

smindel ·

ich will nicht gierig oder undankbar wirken, aber ich benötige ein kleines beispiel (ist schließlich die anfängerrubrik ;-)

ich hatte mit folgendem experimentiert:

# DIESER TEIL SOLL DIE ABFRAGE DARSTELLEN
temp.testdaten2 = CONTENT
temp.testdaten2 {
   table = pages
   select {
      where = pid = 15
      max = 1
   }
}

# DIESE ZEILE SOLL DAS ABFRAGEERGEBNIS ÜBERGEBEN
temp.MenuLinks2.special.value.data = temp.testdaten2

hab ich aus der tsRef und n bischen angepaßt. da ist zumindest schon mal n select drin. aber das klappt nicht...

karlchen ·

kannst ja damit mal ein bisschen rumprobieren 🙂

temp.BEISPIEL = COA
temp.BEISPIEL {
		

			
		5 = CONTENT
		5 {
  			table = tt_content
  			select.orderBy = sorting
  			select.pidInList = 15
                        select.max =1
  			#select.andWhere = 

		}
				
		#5.renderObj.stdWrap.wrap = hier wird gewrapt|
		5.renderObj = TEXT
		5.renderObj.field = uid
		  
}
page.5 < temp.BEISPIEL

#temp.MenuLinks2.special.value <temp.RAND

Hier wird ein kompletter Datensatz aus der DB geholt und die UID in ein Textfeld geschrieben, die ausgabe zu page.5 klappt, ob du sie so in dein MenuObjekt bekommst musst mal probieren, ansonsten, halt wie Armin schon sagte, mal mit dem auskommentierten wrap weiterprobieren...

algiz ·

Guten Morgen,

ich hätte folgenden Vorschlag anzubieten:

temp.menu = COA
temp.menu {
    10 = LOAD_REGISTER
    10.specialUID.cObject = CONTENT
    10.specialUID.cObject {
        table = tt_content
        select {
            pidInList = 15
            orderBy = sorting
            max = 1
            where = (NOT hidden) AND (NOT deleted)
        }
        renderObj = TEXT
        renderObj.field = uid
    }
    20 = HMENU
    20.special.value.data = register:specialUID
    ...
}

Da ich den nicht getestet habe, lege ich auch nicht meine Hand dafür ins Feuer. Aber in diese Kombination aus LOAD_REGISTER und CONTENT verwende ich häufiger.

smindel ·

hallo nochmal,

erstmal vielen dank für die antworten. leider hats bislang noch nicht geholfen. trotzdem bin ich etwas weiter:

verzeichnis = CONTENT
verzeichnis {
   table = pages
   select {
      pidInList.data = TSFE : id
      orderBy = sorting
      max = 1
      selectFields = uid
   }
}

diese abfrage liefert als ergebnis die id der ersten unterseite der ausgewählten seite. wenn ich das ergebnis als text rendere und ausgebe, kann ich sehen, daß die richtige id ermittelt wird.

diese id möchte ich als special.value für ein menü verwenden. das rendern des ergebnisses laß ich deshalb weg, weil ich die ungerenderte id nur als zwischenergebnis benötige und gar nicht ausgeben will.

mein problem ist jetzt: wie übergebe ich das abfrageergebnis an special.value?

menuLinks = HMENU
menuLinks.special = directory
menuLinks.special.value = 9
...

das funktioniert. ich suche nun eine möglichkeit die ungefähr so aussieht:

menuLinks = HMENU
menuLinks.special = directory
menuLinks.special.value = verzeichnis
...

das funktioniert aber leider nicht. und auch dies hier liefert nicht das gewünschte ergebnis:

menuLinks = HMENU
menuLinks.special = directory
menuLinks.special.value.data = verzeichnis
...

hat jemand eine idee??

*nix kapier, wie ochs vorm berg steh*

Tosta ·

Hi,

in der TSRef ist HMENU.special.value als "list of page-uid's /stdWrap" dokumentiert. Also müsstest du doch stdWrap benutzen können (nicht ausprobiert, keine Gewähr...):

menuLinks = HMENU
menuLinks.special = directory
menuLinks.special {
  value.stdWrap.cObject = CONTENT
  value.stdWrap.cObject {
    table = pages
    select {
      pidInList.data = TSFE:id
      orderBy = sorting
      max = 1
      selectFields = uid
    }
  }
}

Sag mal kurz Bescheid, ob das geht. Danke!

Tosta.

Tosta ·

Ergänzung: Folgendes hab ich gerade erfolgreich ausprobiert:

  20 = HMENU
  20 {
    special = directory
    special.value.cObject = TEXT
    special.value.cObject {
      value = 175
    }
    1 = TMENU
    1 {
      noBlur = 1
      wrap (
        <div id="left_navi" style="background-color: yellow">
          |
        </div>
      )
      
      NO = 1
    }
  }

Das klappt: Es wird mir ein Menü der Unterseiten von Seite 175 gezeigt (hier zum Testen schön auffällig in Gelb). Statt eines TEXT-Elements kannst du dann auch dein CONTENT-Element benutzen.

Grundsätzlicher Tip: TS-Elemente immer in der TSRef nachschlagen und Typ prüfen: stdWrap bedeutet immer: alles ist möglich!

Tosta.

smindel ·

hallo toaster,

vielen dank für die hilfe, sieht auf den ersten blick toll aus. kann es leider erst am montag ausprobieren. bitte geduld...

gruß

smind