dynamische tabelle erstellen
am 04.02.2009 - 22:38 Uhr in
Hallo Forum,
bin neu hier, vorher habe ich einiges mit Joomla gemacht. Besonders gut an Drupal
gefallen mir bis jetzt Module wie CCK & Views. Z.B. kann ich Inhaltstypen anlegen
und muss nicht irgendwas anderes ausser Text (Strukturen oder Bilder) in die Editoren
"reinfrickeln". Sowas kannte ich von Joomla nicht.
Jetzt moechte ich z.B. eine Art Preistabelle zu verschiedenen Produkten erstellen.
Da die Produkte verschieden sind wuerde ich die Tabelle gern moeglichst abstrakt
halten und erst in dem Eingabeformular des Produktes bestimmen wieviele Spalten / Zeilen usw
die Tabelle haben soll. Ist das machbar?
Mit meinen jetztigen Kenntnissen wuerde ich es ueber CCK versuchen aber hier muesste
ich ja eine vordefinierte Anzahl an Eingabefeldern festlegen die ich dann spaeter
in die Tabelle rendere, oder? Hier wuerde mir Flexibilitaet verloren gehen. Ich moechte
vermeiden eine hohe Anzahl an vordefinierten Tabellen zu erzeugen.
Evtl. koennte man was mit reference node machen und einen Datentyp Spalte, Zeile, Tabelle
anlegen, aber hierzu fehlt mir noch der Durchblick.
Kann mir jemand helfen?
Vielen Dank.
Gruss
Stiff
- Anmelden oder Registrieren um Kommentare zu schreiben

mhhh...kann mir keiner
am 06.02.2009 - 00:35 Uhr
mhhh...kann mir keiner helfen? Eine Antwort wie "Nein, geht nicht." wuerde mir auch
schon weiterhelfen.
Vielen Dank.
Inwiefern sind denn die
am 06.02.2009 - 09:50 Uhr
Inwiefern sind denn die Produkte unterschiedlich, dass Du die Tabelle derart dynamisch brauchst?
Kannst Du vielleicht ein Beispiel geben?
Falls das in Richtung Preisstaffelung geht, dann könnte ich mir die Lösung über zwei Node-Typen vorstellen: mit 1:n Relation verknüpfen (über node-reference).
lg leda
"Geht nicht" gibts nicht!
am 06.02.2009 - 09:56 Uhr
(Um einen nicht unbekannten Baumarkt zu zitieren)
Ich bin mir sicher, dass es dafür ein Lösung gibt, im Moment weiss villeicht einfach gerade keine(r) gute Lösung. Ich würde mal behaupten, um das wirklich flexibel zu halten und dynamisch abzufangen, wirst Du wohl nicht drumrum kommen ein wenig PHP zu coden.
Ich kann zwar nicht verstehen, warum auf einer Preisliste (oder änliches) plötzlich deutlich mehr Spalten zur Verfügung stehen smüssen, da müsste man wohl nochmal über das Datenmodel nachdenken, welches deinen Produkten zu Grunde liegt.
Gruss Roger
Ersteinmal danke fuer eure
am 06.02.2009 - 11:59 Uhr
Ersteinmal danke fuer eure Antworten.
Das Problem mit den mehreren Spalten koennte ich ja zur Not loesen indem ich in der CCK Inputform generell
alle Spalten darstelle und dann in der node.tpl.php abfrage ob wirklich Daten eingefuellt wurden sind
wenn ich die Tabelle rendere.
Was aber auf jeden Fall gehen muss ist X-Zeilen zu der Tabelle hinzuzufuegen. Das wuerde ueber Nodereference
gehen, oder?
Danke nocheinmal.
Hallo, Leider bin ich auch
am 06.02.2009 - 13:51 Uhr
Hallo,
Leider bin ich auch ein Drupal-Anfänger und kann Dir konkret nur wenig Auskunft geben.
Aber: Mit relationalen Datenbanken und Auftragsbearbeitung habe ich täglich zu tun, und aufgrund Deiner Informationen kann ich mir Dein Datenmodell immer noch nicht vorstellen, und damit wird Dir hier wahrscheinlich auch sonst niemand gezielt Antwort geben können.
Also nochmals: Versuch doch bitte ein konkretes Beispiel zu geben, was Du "versorgen" möchtest.
lg leda
Ok, ein konkretes
am 06.02.2009 - 15:08 Uhr
Ok, ein konkretes Beispiel:
Zum Beispiel:
A)
Der Service "Transfer zum Bahnhof" gibt es einmal in der "Normalausfuehrung" und einmal
in der "Luxusvariante". Das waeren 2 Zeilen in der Tabelle (Normal, Luxus).
Dann hat die Tabelle nur eine einzige Spalte "Preis".
B)
Ein andere Service "Transfer zum Flughafen" gibt es jetzt in 3 Varianten: "Guenstig", "Standard", "Premium"
Also brauche ich in dem Fall 3 Zeilen.
Der Transfer zum Flughafen hat 2 Spalten (Preis, Zeit)
Es gibt also verschiedene Services die in der Beschreibung relativ gleich sind (der selbe Datentyp) aber eben
bei den Preisuebersichten flexibel sein muessen. D.h. ich muss Spalten und Zeilen hinzufuegen koennen.
Hoffe es wird etwas klarer.
Gruss
Jetzt ist es klar
am 06.02.2009 - 15:21 Uhr
Eigentlich hast Du alles schon richtig gemacht, aber die verschiedenen Optionen der Services sind eben Datenbank-technischnicht Spalten sondern Zeilen. ich glaube dieser Hinweis sollte dich ein Stück weiterbringen. Noch ein kleiner Tip es wäre wohl übersichtlicher, wenn die Optionen nicht für verschiedene Services verschiedene Bezeichnungen hätte:
Gruss Roger
Sehe ich wie Roger. Du hast
am 06.02.2009 - 15:25 Uhr
Sehe ich wie Roger.
Du hast einen Node-Typ "Service" und dann kannst Du wählen:
Entweder Du machst einen weiteren Node-Typ "Preise" mit beiden Feldern Zeit und Preis, und lässt Zeit im ersten Fall einfach leer (=nicht required).
Oder Du machst zwei weiter Node-Typen je Preis-Art...ich würde aber mit der ersten Variante auskommen wollen.
Und dann im Node-Typ "Preise" eine Node-Referenc auf "Service".
lg leda
Ok, ich verstehe. Die Sache
am 06.02.2009 - 16:47 Uhr
Ok, ich verstehe. Die Sache ist aber die das ich nicht nur Zeit und Preise habe, sondern im schlimmsten
Fall < 20 verschiedene Spalten, bzw. Zeilen. Natuerlich koennte ich die jetzt vorher alle fest definieren
und beim Namen nennen, aber das wollte ich vermeiden. Ich wollte die Anzahl + Benennung der Spalten & Zeilen
dem Nodeauthor ueberlassen.
Ich werde es mal so versuchen:
Einen CCK Typ "Table Header" anlegen + einen CCK Typ "Table Row"
In beiden Typen kann man beliebig viele Datenfelder (Integer, Text, Date) hinzufuegen.
Ausserdem bekommen beide Typen eine Nodereference auf "Service".
Somit koennte man doch (wenn ich das richtig verstehe) Spalten mit frei definierbaren Namen anlegen (Table Row) und die Anzahl ist auch nicht festgelegt. Braucht man mehr Zeilen kann man nach belieben "Table Row" Datentypen hinzufuegen und auf den Service referenzieren.
Die Felder hole ich dann als Tabelle mit Views raus und gebe diese in dem Service node aus.
Koennte natuerlich etwas unuebersichtlich werden das ganze fuer die Authoren.
Ausserdem ist es fehleranfaellig.
Gruss
Unübersichtlich,
am 06.02.2009 - 19:34 Uhr
Unübersichtlich, fehleranfällig und (aus meiner Sicht) nicht auswertbar...
_Falls_ Du da drüber eine Kalkulation stülpen möchtest (Menge x Preis ist ja noch das simpelste), dann möchte ich das nicht ausprogrammieren müssen, ein Total dann erst recht nicht.
Solange das also nur eine "Datenhalde" ist, dann gehts.
Am besten, Du probierst halt einfach mal :-)
Viel Erfolg und lg
leda
Ich denke es wuerde in einer
am 06.02.2009 - 21:17 Uhr
Ich denke es wuerde in einer Datenhalde enden :-/
Danke fuer eure Hilfe, bin auf jeden Fall schlauer als vorher.