Hallo zusammen,
ich bin mittlerweile durch alle Dokus und Filmchen auf der Typo3-Seite durch und versuche nun meine eigene Extension zu bauen. Die Grundlagen mit dem Kickstarter haben prächtig funktioniert. Allerdings stehe ich jetzt vor einigen Problemen.
Zunächst erläutere ich Euch am besten meine Absicht:
Das Ganze soll eine Mitarbeiterdatenbank werden. Einerseits werden Mitarbeiter mit sämtlichen Daten in einer Tabelle gespeichert und andererseits werden Verträge (der Mitarbeiter) in einer weiteren Datenbank abgelegt.
Nun möchte ich bei der Ausgabe der Mitarbeiter über pi im Fronend die Option haben, dass für einen Mitarbeiterdatensatz die passenden Verträge (er kann mehrere haben) automatisch angezeigt werden (mit dem passenden Link direkt zum jeweiligen Vertrag). Wie bekomme ich das unter Verwendung der existeirenden Api in den Griff? Ich blicke nicht mehr ganz durch.
Der Kickstarter richtet alle Schnittstellen zur API ein. Den Rest musst Du ausprogrammieren innerhalb des Extension Gerüstes das der Kickstarter erstellt hat. In Deinem Fall wirst Du wohl einen eigenen Datenbabnkbereich haben, den Du mit SQL beackern musst. Die gewünschte Ausgabe baust Du in einer Variablen zusammen und übergibst diese der API. Den Rest erledigt T3.
Schau Dir mal ein paar Extensions an, z.B. den Photo Marathon (oder auch die News). Dort kannst Du sehr schön sehen, wie eine Extension funktioniert mit DB Anbindung funktioniert.
Gruss
Thomas
Weiss einer von euch, wie man die Daten aus der DB mit den Werten ausliest, die man auch in der localconf hinterlegt hat?
ciao, Morden
tmallee schriebIn Deinem Fall wirst Du wohl einen eigenen Datenbabnkbereich haben, den Du mit SQL beackern musst. Die gewünschte Ausgabe baust Du in einer Variablen zusammen und übergibst diese der API. Den Rest erledigt T3.
Erstmal danke. Ich habe noch eine spezifische Frage:
Im backend kann man beim Anlegen eines neuen Vertrages den Mitarbeiter aus einem DropDownMenü auswählen. Hier ist es mir gelungen die Namen der Mitarbeiter statt der ID zumindest anzeigen zu lassen.
Aber wie kann ich es realisieren, dass dann auch der Mitarbeitername in der Vertragsdatenbank gespeichert wird und nicht wie jetzt die UID des Mitarbeiters? Das Feld in der Vertrags-Datenbank ist bereits als Textfeld deklariert. Im Kickstarter habe ich eine Relationzwischen den Datenbanken angegeben.
Ist das in der tca.php zu finden und zu ändern?
Bin mir nicht ganz sicher, ob ich dich richtig verstehe. Aber die Relation auf die id des Datensatzes ist schon ok. Nur so kann ein MA mehrere Verträge bearbeiten. Würdest Du die Relation auf den Namen setzen, wäre bei zwei "Müllers" (unterschiedliche Personen gleichen Namens) der Ofen bereits aus.
Den Namen des Mitarbeiters aus der zweiten Tabelle erhälst Du über eine verknüpfte Abfrage. Etwa so (alle Verträge des MA Herrmann):
SELECT t1.name, t2.vertragsnummer FROM mitarbeiter AS t1, vertraege AS t2 WHERE t1.id=t2.id AND t1.name="Herrmann";
Das doppelte Abspeichern des Nachnamens im zwei Tabellen würde dagegen ein paar Regeln des guten Datenbankdesigns über den Haufen werfen (Stichwort Normalisierung).
Gruss
Thomas
tmallee schriebBin mir nicht ganz sicher, ob ich dich richtig verstehe. Aber die Relation auf die id des Datensatzes ist schon ok. Nur so kann ein MA mehrere Verträge bearbeiten. Würdest Du die Relation auf den Namen setzen, wäre bei zwei "Müllers" (unterschiedliche Personen gleichen Namens) der Ofen bereits aus.
Das ist richtig. Daran habe ich eben gar nicht gedacht... Mein Problem ist allerdings weniger SQL, als vielmher die Umsetzung in Typo3.
Ich schaffe es problemlos im Frontend (class.tx_xy_pi.php) bei der Ausgabe statt der ID den Namen anzuzeigen. Aber wie mache ich das im Backend? Und vor allem wie schaffe ich es im Frontend dann nach den namen zu sortieren (durch Klick auf den header) statt nach der ID. Es wird zwar der Name angezeigt, aber nach der ID sortiert.
Das Sortieren ist nicht so schwer. Du übergibst über den Link einfach einen Parameter. Etwa so:
index.php?id=4711&sort=name
Diesen Parameter wertest Du in der pi Klasse aus und modifizierts das SQL Statement entsprechend.
Zu Deinem Backend Problem: Das hatte ich auch mal. Wusste nur eine Lösung: habe ein komplettes Backendmodul geschrieben (mod), welches wiederum die Anzeigen korrekt aufbereitet hat. Riskier einfach mal einen Blick in die Extension "Photomarathon". Da wird einiges klarer.
Gruss
Thomas
Vielen Dank zunächst mal für die Hilfe.
Aber wo finde ich denn die Extension Photomarathon? Im Online Repository steht sie nicht zur Auswahl
Ja, verflixt! Die war dereinst direkt in meinem T3 Paket (testsite glaube ich). Ich habe die Ext. mal als t3x File exportiert. Schreib mir eine PM mit Deiner eMailadresse und ich sende Dir das File zu.
Viele Grüsse
Thomas