---
title: "Extension HowTo II"
url: "https://www.typo3.net/d/3009-extension-howto-ii"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage"]
created: "2003-05-21"
last_reply: "2006-01-18"
replies: 41
solved: false
page: 1
pages: 1
lang: "de"
---

# Extension HowTo II

Extensions › Entwicklung · 41 Antworten · gestartet 2003-05-21

## Eröffnungsbeitrag

**Shinji** · 2003-05-21 · [Beitrag #1](https://www.typo3.net/d/3009-extension-howto-ii/1)

Hallo !

Ich hatte das zwar vor einiger Zeit schon mal gefragt....

Ich suche eine verständliche HowTo über das Schreiben einer Extension für TYPO3.5. Und zwar sollte beschrieben sein wie man die Eingabemaske im Backend erstellt, wie man auf die einzelen Elemente der Datenbank zugreifen kann und, was für mich das wichtigste ist, wie man den vom Kickstarter erzeugten Code so umschreibt das die eigene Extension mit HTML-Templates arbeitet (wie z.B. die News). Ich habe im Netz leider nichts dazu gefunden. Alle verfügbaren Howtos hören weit vor der Stelle mit dem Template auf.

Ich finde es zwar interessant wenn ich das Beispiel-Frontend des Kickstartes sehe, aber wie man was ändern kann steht leider nicht im Quellcode.

Aber da hier ja scheinbar einige eigene Extensions schreiben kann das doch nicht so schwierig sein. ;-) Ich habe leider nicht die Zeit mich durch alle Funktionen und Klassen zu wurchteln.

Gruß
  Thorsten

## Antworten

### [#2](https://www.typo3.net/d/3009-extension-howto-ii/2) · Michael Plank · 2003-05-22

Ohne Dich durch die Klassen und Funktionen zu wurschteln geht es leider nicht, jede Extension ist anders hier und da brauchst Du verschiedene Ansätze deine Funktionen umzusetzen. Wie Du siehst ist ein Allgemeines Tutorial nicht möglich.
Das wichtigste ist, daß Du ein Grundverständnis über Objektorientierte Programmierung hast und der Rest kommt dann von alleine.

Gruß Michael

### [#3](https://www.typo3.net/d/3009-extension-howto-ii/3) · Shinji · 2003-05-23

Hallo !

Also ich habe mittlerweile schon herausgefunden wie man die Elemente der Felder anspricht. Aber alles weitere liegt noch im Dunkeln.

Mir ist auch klar das ein ultimatives HowTo Dokument nicht existieren kann. Aber man könnte ja anhand einer sehr einfachen Extension die Grundlagen vermitteln.

Ich stelle mir folgendes vor:

Man hat ein einfaches Backend bei dem man z.B. drei Felder mit Name, Vorname und Alter angeben kann. Dann sollte ausführlich beschrieben sein wie man die eingegebenen Daten im Frontend darstellen kann. Man könnte an einem Beispiel zeigen wie man die Daten

a) direkt per PHP als HTML Code ausgibt
b) wie man die Daten in ein HTML-Template schreibt (wie bei den news usw.) und dieses dann ausgibt.

Dann eventuell noch ein Beispiel wie man anhand der CODE Feldes verschiedenen Aktionen im PHP Code ausführen kann. Z.B.

Man muss also garnicht auf spezielle Funktionen usw. eingehen. Halt "nur" wie man die eingegebenen Daten wieder aus der DB bekommt und ausgibt. Das würde sehr vielen Leuten ja schon helfen.

Gruß
  Thorsten

### [#4](https://www.typo3.net/d/3009-extension-howto-ii/4) · boonkerz · 2003-05-26

Hallo

Was auch wichtig wäre ist z.b. Wie ich im frontend z.b. navigieren kann ich lasse z.b. nur zwei anzeigen und habe einen weiter button z.b. wie gehe ich dann vor.

Oder auch wie ich z.b. selectboxen anspreche.

MFG

### [#5](https://www.typo3.net/d/3009-extension-howto-ii/5) · dj.​picasso · 2003-05-26

Hi,

auf dem letzten Treffen der NRW-"Typo-Junkies" hat Sacha einen Vortrag darüber gehalten, wie man an die Erstellung der 1. Extension rangeht.
War gerade für Anfänger sehr hilfreich.
Vielleicht kann er Euch ja einige Infos bereitstellen. Außerdem das Hachmeister Tutorial ist sehr gut.
Ciao
Der DJ

### [#6](https://www.typo3.net/d/3009-extension-howto-ii/6) · boonkerz · 2003-05-26

Hallo

Nur Leider ist der Herr Hachmeister nicht mehr online.

MFG

### [#7](https://www.typo3.net/d/3009-extension-howto-ii/7) · dj.​picasso · 2003-05-26

HI,
dann nimm doch einfach dies hier:

<http://typo3.org/doc.0.html?&tx_extrepmgm_pi1%5BextUid%5D=468&cHash=7f1759266d>

Ciao
Der DJ

### [#8](https://www.typo3.net/d/3009-extension-howto-ii/8) · Shinji · 2003-06-01

Hallo !

Ich habe "Creating a basic extension" einmal durchgearbeitet. Jedoch funktioniert da vieles nicht so wie es eventuell sollte.  Ich habe z.B. Probleme mit den Einträgen in der setup.txt und der constants.txt.

1)
Im HowTo steht z.B.

```typoscript
plugin.tx_playerprofile_pi{
  image{
    file.maxW = {$plugin.player_profile.maxW_single}
    imageLinkWrap = {$plugin.player_profile.clickEnlarge}
[...]
```

Bei mir geht es aber nur so

```typoscript
plugin.tx_playerprofile_pi{
  image{
    file.maxW = {$plugin.tx_playerprofile.maxW_single}
    imageLinkWrap = {$plugin.tx_playerprofile.clickEnlarge}
[...]
```

Die etwas seltsame Definition in der constants.txt mit

```typoscript
file.maxW = {$plugin.player_profile.maxW_single} = 70
```

funktioniert bei mir irgendwie nicht. Das habe ich bisher auch noch in keiner Extension so gesehen.

Auf jeden Fall kann ich mir jetzt mit t3lib_div::debug den Inhalt des Arrays anzeigen lassen. Ich bekomme jetzt für image. :

```typoscript
file.	
maxW	100
imageLinkWrap	{$plugin.tx_fsrprofile.clickEnlarge}
imageLinkWrap.	
enable	1
bodyTag	<body bgcolor="#FFFFFF">
wrap	<a href="javascript:close()"> | </a>
width	400m
height	400
JSwindow	1
JSwindow.	
newWindow	1
expand	17,20
```

Aber wozu das alles? Ich dachte ja man könnte dann auf das Bild klicken und es würde in einem neuen Fenster größer dargestellt. Doch bei mir haben die Bilder noch nicht einmal einen Link. :-(
Und wozu gibt es noch die nicht benutzte Variable "$plugin.tx_fsrprofile.clickEnlarge" ?

2)
Ursprünglich dachte ich, man könne mit folgendem Code den "Ausgangspunkt" der Daten, also z.B. den SysOrdner auslesen.

```php
$config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."]));
    $config["pid_list"] = $config["pid_list"] ? implode(t3lib_div::intExplode(",",$config["pid_list"]),",") : $GLOBALS["TSFE"]->id;
    list($pid) = explode(",",$config["pid_list"]);
```

Doch die pid_list ist immer leer. So musste ich in der setup.txt manuell diesen Code einfügen:

```typoscript
plugin.tx_playerprofile_pi1{
	// ID des SysOrdners mit den Daten
	pid_list = 49
}
```

Irgendwie bin ich mal wieder zu doof.
Dafür habe ich wohl das mit den HTML-Templates hinbekommen. :-) :-)

Gruß
  Thorsten

### [#9](https://www.typo3.net/d/3009-extension-howto-ii/9) · via · 2003-06-04

hallo thorsten,

sorry wenn ich für mehr verwirrung mit dem tutorial gesorgt habe als für klärung. da ich leider keinerlei programmierkenntnisse habe, habe ich zusammen mit anderen typo3 könnern und kennern eine erste einfach extension gebaut. diese habe ich anschliessend versucht so gut wie möglich als tutorial nachzuarbeiten und auch prüfen lassen. nachbauen konnte man die extension auch schon, von daher war mir nicht bewusst, dass das tutorial solche fehler aufweisen soll. nach der veröffentlichung des tutorials habe ich darum gebeten mir jegliche infos zu möglichen fehlern oder irrwegen mitzuteilen, um das tutorial zu verbessern. wenn vielleicht der/die ein oder andere korrekturen zumailen oder noch besser über die Annotation Funktion auf typo3.org anmerkungen zu hinterlassen.

schöne grüße,
oliver

### [#10](https://www.typo3.net/d/3009-extension-howto-ii/10) · Shinji · 2003-06-04

Hallo Oliver !!

> **via schrieb:**
>
> sorry wenn ich für mehr verwirrung mit dem tutorial gesorgt habe als für klärung. da ich leider keinerlei programmierkenntnisse habe, habe ich zusammen mit anderen typo3 könnern und kennern eine erste einfach extension gebaut.

Neinnein, Verwirrung hast du nicht gestiftet. Bestimmt habe ich auch einen Fehler gemacht.  Z.B. funktioniert bei mir das mit dem Vergrößern des Bildes jetzt super. Nur halt das mit dem Ausgangspunkt noch nicht.

Ich schaue mir mal die anderen Extensions an. Das wird ja bestimmt immer gleich gelöst. Wenn sonst keiner eine Lösung findet kann ich dir ja mal den bei mir funktionierenden Code zukommen lassen.

Dafür habe ich jetzt das die Benutzung eines HTML Templates eingebaut. Man kann sich also ein HTML-Template mit MArkern erstellen und diese werden dann mit Inhalt gefüllt.

Meine Extension zeigt jetzt schön die Mitglieder einer Fachschaft an.
Kannst ja mal gucken: <http://mars.nt.fh-koeln.de/24.html>

Die Seite ist natürlich noch lange nicht fertig.

> nachbauen konnte man die extension auch schon, von daher war mir nicht bewusst, dass das tutorial solche fehler aufweisen soll.

Mach die darüber mal keinen Kopf. Ich finde es ja super das du so etwas geschrieben hast, vor allem wenn du keinerlei Programmierkenntnisse hast! Wenn ich etwas mehr Zeit hätte würde ich ja auch einmal etwas zur HTML Vorlage und den Markern schreiben.

Gruß
  Thorsten

### [#11](https://www.typo3.net/d/3009-extension-howto-ii/11) · via · 2003-06-05

Hallo Thorsten,

die Sache mit den Markern würde mich auch interessieren, sofern Du Zeit dafür hast etwas dazu zu schreiben.

Grüße,
Oliver

### [#12](https://www.typo3.net/d/3009-extension-howto-ii/12) · Shinji · 2003-06-05

Hallo !

Super, eben hatte ich Zeit und Lust und wollte mal "kurz" mit OpenOffice ein Dokument verfassen. Aber das Programm ist ja noch besch... als WordXP. Nachdem ich jetzt fast 1 Stunde damit verbracht habe herauszufinden wie man eingefärbten oder markierten Text wieder entfärbt oder die Markierung rückgängig macht habe ich jetzt keine Lust mehr. Und dann fügt OO auch noch bei Copy&Paste immer <!-- StartFragment --><!-- EndFragment --> ein, ändert die Schriftart von Arial auf "verdana;arial;sans-serif" und die Größe von 9 auf 7.5.   :x  #evil#

Es kann also noch was dauern.

Gruß
  Thorsten

### [#13](https://www.typo3.net/d/3009-extension-howto-ii/13) · Shinji · 2003-06-05

Also ich habe noch einmal wegen der pid_list bzw. dem Ausgangspunkt problem gesucht. In der Extension tt_news habe ich folgenden Code gefunden:

```php
$this->config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."]));
$this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $GLOBALS["TSFE"]->id;
list($pid) = explode(",",$this->config["pid_list"]);
$this->pid = $pid;

t3lib_div::debug($GLOBALS["TSFE"]->id);
t3lib_div::debug($pid);
```

Leider funktioniert auch das nicht richtig. Mein Sysordner mit den Daten hat die PID 49. $GLOBALS["TSFE"]->id enthält aber **48**, also die ID der aktuellen Seite. Aber wie bekomme ich jetzt die ID des Sysordners?

Gruß
  Thorsten

### [#14](https://www.typo3.net/d/3009-extension-howto-ii/14) · Shinji · 2003-06-05

So funktioniert es:

```php
$this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $this->cObj->data["pages"];
```

anstatt

```php
$this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $GLOBALS["TSFE"]->id;
```

### [#15](https://www.typo3.net/d/3009-extension-howto-ii/15) · Shinji · 2003-06-15

Hallo !

Habe jetzt eine HowTo zum Thema HTML-Vorlage geschrieben.  Will jemand das Dokument haben? Wo kann ich die hinlegen?

Gruß
   Thorsten

### [#16](https://www.typo3.net/d/3009-extension-howto-ii/16) · maxhb · 2003-06-16

Hi!

> **Shinji schrieb:**
>
> Habe jetzt eine HowTo zum Thema HTML-Vorlage geschrieben.  Will jemand das Dokument haben? Wo kann ich die hinlegen?

Ich glaube alle Doku zum Thema Typo3 wird dringend gebraucht! Ein guter Ort zum Ablegen solcher Dokumente waere z.B. www.typo3faq.net
Auf der Seite "Neues Eintragen" kannst Du da Deinen Artikel unterstellen  ;)

CU
  maxhb

### [#17](https://www.typo3.net/d/3009-extension-howto-ii/17) · Shinji · 2003-06-18

Hallo !

Ist aber ne OpenOffice Datei. ;-)
Ob di gut genig ist für typo3.org ?

Thorsten

### [#18](https://www.typo3.net/d/3009-extension-howto-ii/18) · Shinji · 2003-06-22

**Für alle die es interessiert:**

Ich habe meine Doku einmal auf einen Server geladen. Schaut mal drüber ob die verständlich ist und ob noch etwas wichtiges fehlt:

<http://shinji.de.ms/docs>

Gruß
  Thorsten

### [#19](https://www.typo3.net/d/3009-extension-howto-ii/19) · boonkerz · 2003-06-22

Hallo

Wirklich super danke.

Eine Frage hätte ich noch könntest du oben eine Selectbox einbauen wo ma eventuell nach anfangsbuchstaben sortieren kann also z.b.
alle
a
b
usw.

Das wäre super da man dann gleich sieht wie man sowas einbauen kann?

MFg

### [#20](https://www.typo3.net/d/3009-extension-howto-ii/20) · maxhb · 2003-06-23

Hi Thorsten!

> **Shinji schrieb:**
>
> Schaut mal drüber ob die verständlich ist und ob noch etwas wichtiges fehlt:

hab ich gemacht und muss sagen garnicht schlecht. Eine Kleinigkeit würde ich allerdings noch integrieren:

```php
function getItems(){
...
// Führe die Abfrage durch
    $query = "SELECT * FROM tx_mitglieder_liste WHERE pid IN (".$pid.")  " . $this->cObj->enableFields("tx_mitglieder_liste") . " ORDER BY sorting";
...
```

bzw.

```php
function getItems(){
...
    $query = "SELECT * FROM tx_mitglieder_liste WHERE pid IN (".$pid.")  " . $this->cObj->enableFields("tx_mitglieder_liste") . " ORDER BY sorting";
```

Mit $this->cObj->enableFields("tx_mitglieder_liste") werden nämlich "where"-Bedingungen eingefügt, die gelöschte und inaktive Einträge ausfiltern  und wir wollen doch sauber programmieren ... :o

CU
  maxhb

### [#21](https://www.typo3.net/d/3009-extension-howto-ii/21) · re787 · 2003-06-24

Wenn ich - wie auf Seite 3 beschrieben - "Type-field, if any" auf first_name setze, führt dies dazu, dass nach der Eingabe des Vornamens eine leere Maske angezeigt wird. D.h. "Type-field, if any" sollte auf [none] stehen bleiben.

Reinhard

### [#22](https://www.typo3.net/d/3009-extension-howto-ii/22) · Shinji · 2003-06-24

[​quote="maxhb"]
hab ich gemacht und muss sagen garnicht schlecht. Eine Kleinigkeit würde ich allerdings noch integrieren:

```plaintext
:-) Danke !

[quote]function getItems(){[/quote]

Ööööö, wo ist der Unterschied zwischen den beiden Codes?

[quote]
Mit $this->cObj->enableFields("tx_mitglieder_liste") werden nämlich "where"-Bedingungen eingefügt, die gelöschte und inaktive Einträge ausfiltern  und wir wollen doch sauber programmieren ... :o 
[/quote]

Ja? Wollen wir das? ;-)
Ok, ich bau es mal ein.

Gruß
  Thorsten
```

### [#23](https://www.typo3.net/d/3009-extension-howto-ii/23) · Shinji · 2003-06-24

> **re787 schrieb:**
>
> Wenn ich - wie auf Seite 3 beschrieben - "Type-field, if any" auf first_name setze, führt dies dazu, dass nach der Eingabe des Vornamens eine leere Maske angezeigt wird.

Mmm, ich habe das bei mir genauso gemacht.
Was meinst du denn genau mit "leerer Maske"?

Gruß
  Thorsten

### [#24](https://www.typo3.net/d/3009-extension-howto-ii/24) · re787 · 2003-06-24

> **Shinji schrieb:**
>
> Mmm, ich habe das bei mir genauso gemacht.
> Was meinst du denn genau mit "leerer Maske"?
>
> Gruß
>   Thorsten

OK, war vielleicht etwas verkürzt.
Wenn ich also den Vornamen eingegeben habe und dann zum Nachnamen wechsle, erscheint das Abfragefenster "Diese Änderung beeinflusst die zur Verfügung stehenden Eingabefelder. Wollen Sie gemachte Änderungen sichern und die Anzeige aktualisieren?".
Und nach einem Klick auf OK sind alle Felder weg!

Reinhard

### [#25](https://www.typo3.net/d/3009-extension-howto-ii/25) · Shinji · 2003-06-24

Oh, da stimmt dann wirklich was nicht.
Kannst du mal kurz posten was bei dir in der Datei "ext_tables.php" der Extension steht? Es geht um die Einträge für das Array

$TCA["tx_mitglieder_liste"] = Array (
	"ctrl" => Array (

Gruß
   Thorsten

### [#26](https://www.typo3.net/d/3009-extension-howto-ii/26) · re787 · 2003-06-25

> **Shinji schrieb:**
>
> Oh, da stimmt dann wirklich was nicht.
> Kannst du mal kurz posten was bei dir in der Datei "ext_tables.php" der Extension steht? Es geht um die Einträge für das Array
>
> $TCA["tx_mitglieder_liste"] = Array (
> 	"ctrl" => Array (

Das steht drin (mit 'Type-field' auf "first_name"):

```php
$TCA["tx_mitglieder_liste"] = Array (
	"ctrl" => Array (
		"title" => "LLL:EXT:mitglieder/locallang_db.php:tx_mitglieder_liste",		
		"label" => "first_name",	
		"tstamp" => "tstamp",
		"crdate" => "crdate",
		"cruser_id" => "cruser_id",
		"type" => "first_name",	
		"sortby" => "sorting",	
		"delete" => "deleted",	
		"enablecolumns" => Array (		
			"disabled" => "hidden",
		),
		"dynamicConfigFile" => t3lib_extMgm::extPath($_EXTKEY)."tca.php",
		"iconfile" => t3lib_extMgm::extRelPath($_EXTKEY)."icon_tx_mitglieder_liste.gif",
	),
	"feInterface" => Array (
		"fe_admin_fieldList" => "hidden, first_name, last_name, birthday, street, zip, city, email, homepage, phone, mobile, function, elected, privacy, keycard, photo",
	)
);
```

Reinhard

### [#27](https://www.typo3.net/d/3009-extension-howto-ii/27) · Shinji · 2003-06-25

Ohoh, bei mir ist kein Type drin.  ;-)
Da habe ich das wohl beim Scrollen unbemerkt mit dem Mausrad deaktiviert.

Werde das natürlich sofort aus der HowTo nehmen.

Aber das ist DIE Möglichkeit was auszuprobieren. :-)
Kann man einfach die Zeile

"type" => "first_name",

löschen?

Gruß
   Thorsten

### [#28](https://www.typo3.net/d/3009-extension-howto-ii/28) · Shinji · 2003-06-25

Neue Version ist online.
Der Type-Fehler wurde beseitgt und der Vorschlag von maxhb eingebaut. Habe aber nicht krontrolliert ob die geänderte mySQL Abfrage funktioniert !

Gruß
  Thorsten

### [#29](https://www.typo3.net/d/3009-extension-howto-ii/29) · maxhb · 2003-06-25

Hi!

> **Shinji schrieb:**
>
> Habe aber nicht krontrolliert ob die geänderte mySQL Abfrage funktioniert !

Ist "Shinji" das japanische Wort für "wagemutig"?  ;)

CU
 maxhb

### [#30](https://www.typo3.net/d/3009-extension-howto-ii/30) · Shinji · 2003-06-25

Ne, es bedeutet in etwa: **etwas, an etwas glauben**
Passt aber auch irgendwie. :-) :-) :-)

Aber müsste ich deinen Code denn noch kontrollieren?

Gruß
  Thorsten

### [#31](https://www.typo3.net/d/3009-extension-howto-ii/31) · escapedPrisoner · 2003-07-02

Hey,

ich kanns ja gar nicht glauben, dass an Deiner Vorlage noch niemand Interesse hatte. Klar - mich interessiert das sehr.

Poste den Code doch hier einfach mal ins Forum.  :)

OOOOooops. Gerade gemerkt, dass es noch zwei weitere Seiten zum Thema gibt  #paralyzed#

Thanx
Daniel

### [#32](https://www.typo3.net/d/3009-extension-howto-ii/32) · escapedPrisoner · 2003-07-02

> function getItems(){
> ...
>     $query = "SELECT * FROM tx_mitglieder_liste WHERE pid IN (".$pid.")  " . $this->cObj->enableFields("tx_mitglieder_liste") . " ORDER BY sorting";

Tja, man kann sich das Leben ja auch schwer machen.
Mehr Spaß machts so:

> $query = $this->pi_list_query("tx_NAME_DER_EXTENSION");

Kaspar hat ja schon an alles gedacht :)

### [#33](https://www.typo3.net/d/3009-extension-howto-ii/33) · Shinji · 2003-07-03

> **escapedPrisoner schrieb:**
>
> Tja, man kann sich das Leben ja auch schwer machen.
> Mehr Spaß machts so:
>
> $query = $this->pi_list_query("tx_NAME_DER_EXTENSION");

Danke !!

Woher bekommt man diese Funktionen?
Ich bin verzweifelt auf der Suche nach einer Übersicht aller verfügbaren Funktionen.  Man kann sich doch nicht für jede eventuell vorhandene Funktion durch Newsgroups und Foren wühlen.

Hat denn niemand eine Tabelle, schön geordnet nach verschiedenen Bereichen (Datenbankabfragen, Linkfunktionen, Navigationsfunktionen [SeitenID, letzteSeite usw] und andere).

Und was gibt die Funktion pi_list_query() zurück?
Das gleiche wie mein Code?

Gruß
  Thorsten

### [#34](https://www.typo3.net/d/3009-extension-howto-ii/34) · Stoneage · 2003-07-03

Super Arbeit! Muß ich mal bei Gelegenheit durchlesen. Vielen Dank Shinji, und alle anderen!

### [#35](https://www.typo3.net/d/3009-extension-howto-ii/35) · escapedPrisoner · 2003-07-03

Nicht verzweifeln!

Dank Doxygen können automatisch API-Docs erstellt werden. Nico Ueckermann hat genialerweise eine Typo3API-Doku online gestellt: <http://typo3doku.ueckermann.de/>

Die PHP-Klasse "tslib_pibase " kannst Du von jeder Extension aus verwenden. Hier sind gesammelte Schmankerl für Frontend-Zauberer drin.

```bash
// Makes a standard query for listing of records based on standard input vars from the "browser" and "searchbox"
// Set $count to 1 if you wish to get a count(*) query for selecting the number of results. 

tslib_pibase::pi_list_query  (  $  table,  
  $  count = 0,  
  $  addWhere = "",  
  $  mm_cat = "",  
  $  groupBy = "",  
  $  orderBy = "",  
  $  query = "" 
 )  

// Es reicht aus, den ersten Paramter anzugeben. Dann werden groupBy, deleted-Attribut, limit und so weiter automatisch erledigt :)
```

Du wirst feststellen, dass es noch Massenweise weitere sehr praktische Klassen gibt.

Ab und zu kannst Du auch immer mal hier hineinschauen:
<http://www.linuxwiki.de/Typo3Extension>

Viel Spaß weiterhin
Daniel

### [#36](https://www.typo3.net/d/3009-extension-howto-ii/36) · Shinji · 2003-08-01

> **escapedPrisoner schrieb:**
>
> Nicht verzweifeln!
>
> Die PHP-Klasse "tslib_pibase " kannst Du von jeder Extension aus verwenden.
> Es reicht aus, den ersten Paramter anzugeben. Dann werden groupBy, deleted-Attribut, limit und so weiter automatisch erledigt :)

Irgendwie funktioniert das bei mir nicht.
Ich habe für den Namen der tabelle alles ausprobiert. Aber entweder bekomme ich statt der Daten den folgenden PHP Fehler:

```plaintext
Warning: Supplied argument is not a valid MySQL result resource in /home/httpd/htdocs_typo3/typo3conf/ext/fsr_profile/pi1/class.tx_fsrprofile_pi1.php on line 175
```

Ab Zeile 175 steht folgender Code:

```php
while( $row = mysql_fetch_assoc($res) ){
      $out[]=$row;
    }
    return $out;
```

Die Variable $query enthält diesen String:

```sql
SELECT tx_fsrprofile_liste.* FROM tx_fsrprofile_liste WHERE pid IN (24) AND NOT tx_fsrprofile_liste.deleted AND NOT tx_fsrprofile_liste.hidden ORDER BY tx_fsrprofile_liste. LIMIT 0,20
```

Wo ist denn da der Fehler? Eventuell die Punkte hinter tx_fsrprofile_liste ?

Mit dem manuell erzeugten Query-String geht es.
Die Zeile

```php
$query = "SELECT * FROM tx_fsrprofile_liste WHERE pid IN (".$pid.")".$this->cObj->enableFields("tx_fsrprofile_liste")." ORDER BY sorting";
```

ergibt

```sql
SELECT * FROM tx_fsrprofile_liste WHERE pid IN (34) AND NOT tx_fsrprofile_liste.deleted AND NOT tx_fsrprofile_liste.hidden ORDER BY sorting
```

Wenn ich die Funktion folgendermaße aufrufe kommt zumindest keine Fehlermeldung mehr:

```php
$query = $this->pi_list_query("tx_fsrprofile_liste","" ,"" ,"" ,"" , $orderBy="ORDER BY tx_fsrprofile_liste.sorting","");
```

Es fehlt aber der Content. Scheinbar liegt das Problem jetzt an der PID. Über die pi_base Funktion wird nämlich  PID=24 ausgelesen. Die Variable $pid in der manuellen Abfrage ergibt jedoch eine PID von 34 !!

Gruß
  Thorsten

### [#37](https://www.typo3.net/d/3009-extension-howto-ii/37) · dj.​picasso · 2003-08-04

Hi Shinji,

```sql
SELECT tx_fsrprofile_liste.* FROM tx_fsrprofile_liste WHERE pid IN (24) AND NOT tx_fsrprofile_liste.deleted AND NOT tx_fsrprofile_liste.hidden ORDER BY tx_fsrprofile_liste. LIMIT 0,20
```

Keine Ahnung ob MySQL jetzt mittlerweile so aus der SQL-Syntax ausbricht aber aus meiner Sicht ist diese Query fehlerhaft.

Ersetze doch mal:
AND NOT tx_fsrprofile_liste.deleted  durch AND tx_fsrprofile_liste.deleted = '0'

respektive den hidden-Teil.
Dann ist auf jeden Fall die Query sauber!
Ciao
Der DJ

### [#38](https://www.typo3.net/d/3009-extension-howto-ii/38) · maxhb · 2003-08-04

Hi!

> **dj.picasso schrieb:**
>
> ```sql
> SELECT tx_fsrprofile_liste.* FROM tx_fsrprofile_liste WHERE pid IN (24) AND NOT tx_fsrprofile_liste.deleted AND NOT tx_fsrprofile_liste.hidden ORDER BY tx_fsrprofile_liste. LIMIT 0,20
> ```
>
> Keine Ahnung ob MySQL jetzt mittlerweile so aus der SQL-Syntax ausbricht aber aus meiner Sicht ist diese Query fehlerhaft.
>
> Ersetze doch mal:
> AND NOT tx_fsrprofile_liste.deleted  durch AND tx_fsrprofile_liste.deleted = '0'
>
> respektive den hidden-Teil.
> Dann ist auf jeden Fall die Query sauber!

Da wäre ichi mitr nicht so sicher, denn ich kann mir nicht vorstellen, dass

```plaintext
ORDER BY tx_fsrprofile_liste.
```

i.O. ist. Das kann eigentlich kein Tabellenfeld sein, da feht mit Sicherheit irgend etwas.

CU
 maxhb

### [#39](https://www.typo3.net/d/3009-extension-howto-ii/39) · ffr_dev · 2004-06-03

so, da komme ich. zwar ein jahr verspätet,
aber trotzdem guter hoffnung auf antwort. :p

Shinji hat in seiner doku folgendes geschrieben:

> // ID des SysOrdners mit den Daten
> //pid_list = 49

wie sehen diese daten aus?
muss ich da einfach ein neuer record erstellen,
members auswählen und die daten erfassen?

ich habe die doku durchgemacht, aber es funktioniert
nicht.(wie jede extension die ich selber ausprobieren möchte!)

liegt das an typo3.6??

ps: hoffentlich sieht das noch jemand ;)

### [#40](https://www.typo3.net/d/3009-extension-howto-ii/40) · Jo · 2006-01-18

Die aktuelle API-Dokumentation (3.8.0) ist zu finden unter <http://typo3.org/fileadmin/typo3api-3.8.0/>

Es wird dringend geraten, soweit vorhanden, die TYPO3-eigenen Methoden / Funktionen zu nutzen:

z.B. pi_exec_query() für SELECTs. Diese Funktion steht in der Klasse tslib_pibase, die in einer Extension automatisch zur Verfügung steht (tslib_pibase = TypoScriptLibrary_PlugInBase) und wird im einfachsten Fall wie folgt aufgerufen:

$res = $this->pi_exec_query($table)

Ausführliche Doku wie gesagt siehe API-Doku.

Beste Grüße
Jo Schneider

### [#41](https://www.typo3.net/d/3009-extension-howto-ii/41) · Spyker · 2006-01-18

das Thema war schon reichlich alt.... 3 Jahre!!....

Das wieder zu wecken, war vielleicht nicht grade sinnvoll weil vielleicht vieles dort drin nicht mehr stimmt....

Beste,
Tim

### [#42](https://www.typo3.net/d/3009-extension-howto-ii/42) · just2b · 2006-01-18

> **Spyker schrieb:**
>
> das Thema war schon reichlich alt.... 3 Jahre!!....
>
> Das wieder zu wecken, war vielleicht nicht grade sinnvoll weil vielleicht vieles dort drin nicht mehr stimmt....

Jo gräbt gern alte Thread aus.,... siehe seine History... ;)

---

Quelle: „Extension HowTo II“, typo3.net, https://www.typo3.net/d/3009-extension-howto-ii
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
