Zum Inhalt springen

Select und die Übergabe eines Integer-Wertes

Erstellt am 23. Februar 2009 · 14 Antworten · letzte Antwort am 4. April 2009

Tags: Frage

Morgenthau ·

Liebes Forum,

als jemand, der keinerlei Ahnung von MySQL hat, stehe ich vor einem Problem.

Ich möchte der Extension "seminars" in TS einen Wert übermitteln, und zwar die uid eines Datensatzes. Es soll der Datenatz gefunden werden, der im Feld accreditation_number ein "x" stehen hat.

So habe ich mir das gedacht:

### uid holen:
temp.featured = CONTENT
temp.featured {
  table = tx_seminars_seminars
  pidInList = 33
  select {
    where = accreditation_number = 'x'
    andWhere = hidden=0
    andWhere = deleted=0
    selectFields = uid
  }
}

Und dann noch:

### uid einfügen:
plugin.tx_seminars_pi1.showSingleEvent < temp.featured

Das funktioniert nicht, da seminars an dieser Stelle einen Integer-Wert erwartet, aber CONTENT bekommt. Ich habe zwar in der TSRef den Hinweis gefunden, dass es den Datentyp "int" gibt, allerdings hilft mir das noch nicht weiter.

Was fehlt da? Ist der Abfragekram in temp.featured so überhaupt richtig? Wie bekomme ich einen Integer-Wert übergeben?

Viele Grüße,
Morgenthau

just2b ·

Hallo,

da musst du die seminars schon ändern, dass man da alles übergeben kann, sonst wird das nichts

georg

Morgenthau ·
just2b schrieb

Hallo,

da musst du die seminars schon ändern, dass man da alles übergeben kann, sonst wird das nichts

georg

Hallo, danke für die schnelle Antwort.
Ich müsste also die Beschränkung auf Integer-Werte in der Ext. selbst aufheben?

M.

just2b ·

Lösung

temp.featured = CONTENT
temp.featured {
  table = tx_seminars_seminars
  
  select {
    where = accreditation_number LIKE 'x'
    pidInList = 33
    selectFields = uid
  }
  
  renderObj = TEXT
  renderObj.field = uid
}


lib.featured = COA
lib.featured {
	stdWrap.if.isTrue.cObject < temp.featured
	
	10  < plugin.tx_seminars_pi1
	10 {
	  what_to_display = seminar_list
	  showSingleEvent.override.cObject < temp.featured
	  pages = 33
	  recursive = 2
	  hideFields = category,accreditation_number,credit_points,organizers,eventsnextday,uid
	}
}

und die änderung auf stdWrap mittels patch in der extension in
\ext\seminars\pi1\class.tx_seminars_pi1.php ~238

$singleEvent = $this->cObj->stdWrap($this->conf['showSingleEvent'], $this->conf['showSingleEvent.']);
if ($singleEvent) {
$this->showUid = $singleEvent;

lg georg

oliverklee ·

Hi,

du weißt, dass der Seminarmanager schon die Möglichkeit mitbringt, dass man die Seminar-UID fest konfigurieren kann, die angezeigt werden soll? (Nur, falls das auch das Problem lösen würde.)

Oliver

Morgenthau ·

Hallo,
was genau heißt "fest konfigurieren"? Ist das mit einer Abfrage dieser Art: where = "accreditation_number = 'x'" möglich?
Viele Grüße,
Morgenthau.

oliverklee ·

Nein, das nicht.

Aber du kannst im Plugin einstellen, das hier die Einzelansicht des Seminars #42 angezeigt werden soll.

Wie sieht denn dein Usecase genau aus? Benutzt du das x als Marker, um ein bestimmtes Seminar anzuzeigen, oder ist das eine echte Akkreditierungsnummer bei euch, die mal dem einen und mal dem anderen Seminar gegeben wird?

Oliver

Morgenthau ·
oliverklee schrieb

Aber du kannst im Plugin einstellen, das hier die Einzelansicht des Seminars #42 angezeigt werden soll.

Genau, mittels showSingleEvent.

oliverklee schrieb

Wie sieht denn dein Usecase genau aus? Benutzt du das x als Marker, um ein bestimmtes Seminar anzuzeigen, oder ist das eine echte Akkreditierungsnummer bei euch, die mal dem einen und mal dem anderen Seminar gegeben wird?

Ich nutze das x als Marker, um eine bestimmte Veranstaltung separat anzuzeigen.

Nur als Anmerkung: Die Lösung, die just2b mir gebastelt hat, macht genau, was ich brauche.

Viele Grüße,
Morgenthau.

oliverklee ·

Hallo "Morgenthau",

> Nur als Anmerkung: Die Lösung, die just2b mir gebastelt hat, macht genau, was ich brauche.

Ich weiß. :-)

Eigene Änderungen an der Extension haben nur den Nachteil, dass sie futsch sind, wenn du die Extension updatest (z.B. auf den nächsten Bugfix-Release). Daher sind Lösungen, bei denen du die Extension nicht zu ändern brauchst, günstiger.

Viele Grüße

Oliver

Morgenthau ·

Hi,

oliverklee schrieb

Eigene Änderungen an der Extension haben nur den Nachteil, dass sie futsch sind, wenn du die Extension updatest (z.B. auf den nächsten Bugfix-Release). Daher sind Lösungen, bei denen du die Extension nicht zu ändern brauchst, günstiger.

Ja, das ist mir schon klar. Aber wenn ich Dich richtig verstanden habe, wäre mein Problem mit Bordmitteln nicht zu lösen gewesen, oder?

Viele Grüße,
Le M.

just2b ·

Hallo Oliver,

generell wär es schön wenn alles via TS auch stdWrap hätte. das ist in 3 Zeilen gemacht, ich kenne nur die Ext zuwenig, deswegen mein stupider hack.

hier die funktionierende version:

		 $singleEventTS = $this->cObj->stdWrap($this->conf['showSingleEvent'], $this->conf['showSingleEvent.']);
		 $singleEventFlex = '';
		  if ($this->hasConfValueInteger('showSingleEvent', 's_template_special')) {
            $singleEventFlex = $this->getConfValueInteger(
                'showSingleEvent',
                's_template_special'
            );
        }

    $singleEvent = ($singleEventTS) ? $singleEventTS : $singleEventFlex;
		if ($singleEvent) {
			$this->showUid = $singleEvent;

		} else {
			$this->showUid = $this->piVars['showUid'];
		}

georg

oliverklee ·

Hallo Morgenthau,

naja, das hängt davon ab, ob du im Plugin (in den Flexforms) das Seminar auswählen willst (was geht) oder ausschließlich im Seminardatensatz (was nicht geht).

Oliver