Zum Inhalt springen

CONTENT-select-db-abfrage nur falls bestimmter GET-parameter in URL gesetzt

Erstellt am 1. Mai 2009 · 4 Antworten · letzte Antwort am 1. Mai 2009

Tags: Frage

mostwanted ·

hallo allesamt,

ich würde gerne BEVOR DURCH EIN BESTIMMTES CONTENT OBJEKT EINE DB-ABFRAGE AUSGEFUEHRT WIRD abfragen, ob ein bestimmter get-parameter in der URL vorhanden ist - ich schätze, das wär sinnvoll, damit, falls die DB-abfrage keinen sinn macht (weil in meinem beispiel wenn der get-parameter nicht gesetzt ist die abfrage kein ergebnis zurückliefern kann), die abfrage nicht sinnloserweise durchgeführt wird...

page {
  20 = CONTENT
  20 {
    if {
       ### hier habe ich schon alles moegliche ausprobiert...
    }
    table = tx_produkte
    select {
      pidInList = 21
      andWhere.stdWrap.cObject = TEXT
      andWhere.stdWrap.cObject.data = GPVar:uid
      andWhere.stdWrap.cObject.wrap = uid = |    
    }
    renderObj = COA
    renderObj {
      10 = TEXT
      10 {
        field = bezeichnung
        wrap =   <h1> | </h1>
      }
    }
  }
}
mostwanted ·

hmm, das hab ich schon erfolglos ausprobiert...

kann es sein, dass egal ob die if-abfrage true oder false liefert, die datenbank-abfrage auf alle fälle durchgeführt wird und in meinem beispiel nur das objekt 20 nicht mit dem ergebnis der abfrage gefüllt wird?

...ich bekomm nämlich, wenn der get-parameter nicht gesetzt ist eine SQL-fehlermeldung, die wohl zu verhindern wär, wenn die abfrage nur dann ausgeführt wird, wenn der get-parameter gesetzt ist.

just2b ·

du kannst das if auch nicht direkt auf CONTENT machen, da brauchst noch ein stdWrap. davor.

auf der sichersten seite ist man da immer
mit

lib.foo = COA
lib.foo {
stdWrap.if.isTrue.data = ..

10 = CONTENT
10 {
dein content
}
}
mostwanted ·

hmm, SQL-fehlermeldung bleibt trotzdem...

page {
  20 = COA
  20 {
    stdWrap.if.isTrue.data = GPVar:uid 
    10 = CONTENT
    10 {
      table = tx_produkte
      select {
        pidInList = 21
        andWhere.stdWrap.cObject = TEXT
        andWhere.stdWrap.cObject.data = GPVar:uid
        andWhere.stdWrap.cObject.wrap = uid = |    
      }
      renderObj = COA
      renderObj {
        10 = TEXT
        10 {
          field = bezeichnung
          wrap =  <h1> | </h1>
        }
      }
    }
  }
}

...kann es sein, dass egal ob die abfrage TRUE oder FALSE als ergebnis liefert die abfrage immer ausgeführt wird?