TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

detailView


Autor Nachricht
Verfasst am: 09. 03. 2009 [16:21]
neotron
Themenersteller
Dabei seit: 07.06.2005
Beiträge: 18
Hallo Forum,

Ich habe eine listView, wo mit

PHP
$markerArray['###PROGRAMMLINK###']= $this->pi_linkTP(»Programm,array($this->prefixId.'[prog]'=> $row['veranstaltung_v_id']), $cache=0);


eine veranstaltung_v_id des Datensatzen übergeben werden soll. Der Link wird richtig generiert, aber im Array landet nicht die richtige veranstaltung_v_id.
Wie kann ich die ID so übergeben, dass ich im detailView diese in die Select Anweisung einbauen kann?

PHP
// Datensatz holen
        $record=$this->pi_getRecord=$this->piVars['prog'];
	$vcalvid=$record['veranstaltung_v_id'];
 
        //Datensätze holen ver_veranstaltung
        $resplist=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
		'*',   //select
        'ver_veranstaltungselement a INNER JOIN ver_veranstaltung b ON a.veranstaltungselement_v_id = b.veranstaltung_v_id', //from
		"b.veranstaltung_id = '".$vcalvid."' ",		//where 
		$groupBy='',
		$orderBy='a.veranstaltungselement_rang ASC, a.veranstaltungselement_block ASC, a.veranstaltungselement_von ASC, a.veranstaltungselement_typ ASC',
		$limit='');


Würde mich freuen, wenn mir jemand einen Denkanstoss oder änliches geben kann.



VG

[Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 09.03.2009 um 17:23.]

Have a lot of Fun!
ProfilWWW
Verfasst am: 11. 03. 2009 [10:01]
matin
Dabei seit: 09.08.2008
Beiträge: 90
das folgende kann nicht stimmen:
PHP
$record=$this->pi_getRecord=$this->piVars['prog'];

du hast in einer zeile zwei "="

versuch folgendes:
PHP
$record=$this->pi_getRecord('tx_deineext_tabelle',$this->piVars['prog']);


allerdings läuft das normalerweise über die uid des datensatzes (du verwendest veranstaltung_v_id)
Profil
Verfasst am: 11. 03. 2009 [10:50]
neotron
Themenersteller
Dabei seit: 07.06.2005
Beiträge: 18
Hallo Matin,

das habe ich auch gemerkt, leider selbes Ergebnis.
Mir ist bewusst das normaler Weise die UID der Tabelle übergeben wird, aber laut Syntax kann ich doch jede andere Spalte auch nehmen, wenn ich das richtig verstanden habe. Bei mir ist die Spalte "veranstaltung_v_id" aus Tabelle "ver_veranstaltung" mit Spalte "veranstaltungselement_v_id" aus Tabelle "ver_veranstaltungselement" verknüpft. Aus dieser würde ich gerne die Elemente im detailView per Select rausholen.
Dazu benötige ich in der WHERE Klausel die "veranstaltung_v_id", deshalb keine "UID".

Die Ext. soll auch nur lesen, da die Datenbank von anderer Stelle gefüllt wird.


Ich nutze nun folgenden Code:

PHP
// listView
// Programm ausgeben wenn vorhanden 
			$resvid = $this->pi_RTEcssText($row['veranstaltung_v_id']);
			$resprog=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
			'COUNT(*)',   #select
			'ver_veranstaltungselement', #from
			"veranstaltungselement_v_id = '" . $resvid ."'" );   #where  
 
			// rowvidp mit 0 wenn kein Programm vorhanden ist
			if ($resprog) {
            $rowvid = $GLOBALS['TYPO3_DB']->sql_fetch_row($resprog);
            $rowvidp = $rowvid[0];
 
            // Marker füllen
			if ($rowvidp == "0" || $rowvidp == "&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" /> 
				{
			$markerArray['###PROGRAMMLINK###']= '';
				} 
			else
				{
			$markerArray['###PROGRAMMLINK###']= $this->pi_linkTP(»Programm,array($this->prefixId.'[item]'=> $row['veranstaltung_v_id']), $cache=1);
				}				
			}


Der generierte Link wird richtig erzeugt.


PHP
// detailView Programm ausgeben    
		function detailView() 
		{
        // Subpart definieren
        $subpart=$this->cObj->getSubpart($this->template,'###DETAILVIEW###'); 
        // einzelne Reihe definieren
        $singlerow=$this->cObj->getSubpart($subpart,'###ROW###'); 
 
        // Datensatz holen
        $record=$this->pi_getRecord('ver_veranstaltung',$this->piVars['item']);
 
		// Marker der Veranstalltung füllen
 
				// Veranstaltungstitel ausgeben
				$markerArray['###TITEL###']=$record['veranstaltung_titel'];


Das Array enhält leider immer noch einen anderen Datensatz aus der Tabelle.



Have a lot of Fun!
ProfilWWW