Zum Inhalt springen

Extension HowTo II

Erstellt am 21. Mai 2003 · 41 Antworten · letzte Antwort am 18. Januar 2006 · Seite 2 von 3

Tags: Frage

re787 ·
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"):

$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

Shinji ·

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

Shinji ·

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

maxhb ·

Hi!

Shinji schrieb

Habe aber nicht krontrolliert ob die geänderte mySQL Abfrage funktioniert !

Ist "Shinji" das japanische Wort für "wagemutig"? 😉

CU
maxhb

Shinji ·

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

Aber müsste ich deinen Code denn noch kontrollieren?

Gruß
Thorsten

escapedPrisoner ·

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

escapedPrisoner ·

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 🙂

Shinji ·
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

escapedPrisoner ·

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.

// 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

Shinji ·
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:

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:

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

Die Variable $query enthält diesen String:

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

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

ergibt

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:

$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

dj.​picasso ·

Hi Shinji,

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

maxhb ·

Hi!

dj.picasso schrieb
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

ORDER BY tx_fsrprofile_liste.

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

CU
maxhb

ffr_dev ·

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 😉

Jo ·

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

Spyker ·

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

just2b ·
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... 😉