Zum Inhalt springen

Mehrere Fragen zur ersten eigenen Extension

Erstellt am 1. November 2010 · 2 Antworten · letzte Antwort am 3. November 2010

Tags: PHP, Frage

ViktoriaS ·

Hallo!

Im Rahmen meiner ersten Versuche mit der Extensionentwicklung, habe ich
einig Fragen.
Kurzer Background:
Übungsprojekt ist eine Mini-Seminarverwaltung.
2 Tabellen: Dozenten + Kurse.
Derzeit 4 Funktionen: List Dozent, Single Dozent, List Kurse, Single Kurse.

Nun das primäre Problem.
Wenn ich eine Single-Ansicht aufrufe, erhalte ich keine Daten.
Im nachfolgenden Ausschnitt einer List-Funktion, die ordnungsgemäße Daten liefert, habe ich einfach einmal die Schleife auskommentiert und dafür einen Datensatz direkt angesprochen.
Doch wie gesagt, das Ergebnis sind keine Feldinhalte mehr.

  $res = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*", $table, "deleted = 0 AND hidden = 0" );
  if (mysql_error())  debug(array(mysql_error(), $query));

  $row=$this->pi_getRecord( $table, 1 );
  //while ($row = mysql_fetch_row($res)) 
  //	{ 
	$marker["###KURSNR###"] = "KursNr.: "  . $row[9] ;
	$marker["###KURSTITEL###"] = $row[10] ;
	$marker["###BESCHREIBUNG###"] = $row[15] ;
…….
	$content .=$this->cObj->substituteMarkerArrayCached($subsub, $marker);
   //}

  $content = $this->cObj->substituteSubpart ($subpart, "###KSINGLE###", $content);
  return $content;
$row=$this->pi_getRecord( $table, 1 );

steht doch überall so dokumentiert #paralyzed#

Bei der Gelegenheit noch 2 weitere Fragen:
Wie man sehen kann, spreche ich die Tabellenspalten über Nummern an.
Setze ich Feldnamen in Hochkommata ein, wird ebenfalls kein Inhalt geliefert.
Woran kann denn das nun wieder liegen?

Und die 3. Frage:
Wie kann ich es erreichen, dass in der List-Ansicht im Backend, rechts vom Datensatz-Symbol nicht nur die Nummer erscheint, sondern auch der Eintrag aus einem Feld?

Danke vielmals im Voraus.
Viele Grüße
Viki

Julian.​Hofmann ·

Hallo Viki.

Die Fragen 1+2 dürften gemeinsam zu beantworten sein:

In Deinem Code-Schnipsel nutzt Du die Methode mysql_fetch_row(), die Dir ein nummeriertes Array zurückgibt.
Die Methode pi_getRecord() (ruft checkRecord() auf) liefert hingegen ein assoziatives Array, d.h. Key-Value-Paare.

Damit sind bei Frage 1 für die Singleansicht die einzelnen Werte nicht via nummerischen Array-Index ansprechbar.
Und damit sind bei Frage 2 die Werte nicht via Key ansprechbar, weil nur nummerische Indizes existieren.

Frage 3:
Die Anzeige wird über das TCA gesteuert. Dieses wird in der Regel im Extensionordner in den Dateien ext_tables.php und ggf. tca.php für Deine Tabellen definiert. Den Titel vergibst Du über ['ctrl']['title']. Details:
https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html

Viele Grüße
Julian

ViktoriaS ·

Hallo Julian!

Danke für die ausführliche Erläuterung. :p

Also:

Für die Schleife:
mysql_fetch_row($res)    und Angabe Feldnummern oder
mysql_fetch_assoc($res)  und Angabe Feldnamen

Für das Auslesen eines Datensatzes:
pi_getRecord() 	und Angabe Feldnamen
??????	        und Angabe Feldnummern

Würde mich nun schon interessieren wie die Funktion (???) heisst, um einen Datensatz auszulesen, der ein numerisches Array liefert. Bin da leider nicht fündig geworden.

Zu Frage 3:
Der entscheidende Eintrag ist nach meiner Erkenntnis in der tca.php

'ctrl' => array (
'label'     => 'uid',

Wobei uid eben durch etwas beliebiges ersetzt werden muss.
Aber (!!!) das scheint ein verdammt heißes Eisen zu sein (8-)8-)8-) )
Ich habe mal versucht, 2 Feldnamen durch Komma oder Punkt getrennt anzugeben.
Folge: Parse error und nix ging mehr. Aber ich hab´s über´s Kundencenter hoffentlich wieder bereinigt. Muss mich jetzt erst malvon dem Schreck erholen.
Viele Grüße
Viki