Catalog-Berechnung mittels MyQSL-Trigger?!

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • olivgruen
    Contao-Nutzer
    • 26.07.2009
    • 64

    #1

    Catalog-Berechnung mittels MyQSL-Trigger?!

    Hallo zusammen,

    ich bin grad recht ratlos. Da das Berechnen nur innerhalb einer Tabelle funktioniert und nicht in der Datenbank landet, versuche ich, einen Trigger zum Laufen zu kriegen, der mir einfachste Berechnungen durchführt. Aber denkste, Puppe, läuft nicht.

    Hat das schonmal jemand gemacht und kann mir auf die Sprünge helfen?

    Code:
    DROP TRIGGER IF EXISTS neuer_spieler;
    DELIMITER $$
    CREATE TRIGGER neuer_spieler
    BEFORE INSERT ON cat_spieler
    FOR EACH ROW BEGIN
    	SET NEW.name_vorname = concat(NEW.name,', ',NEW.vorname);
    	END$$
    DELIMITER ;
    NEW.name und NEW.vorname kommen einfach nicht an. Funktioniert ein Trigger vielleicht nur auf andere Tabellen, nicht auf sich selbst?

    Langsam macht's keinen Spaß mehr mit'm Catalog...
    Zuletzt geändert von olivgruen; 17.05.2012, 22:57.
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo olivgruen,
    es tut mir leid, das dir der Catalog gerade nicht mehr so viel Spaß macht...
    Ich weiß aber auch nicht wirklich wie man dir da jetzt helfen kann. Wir wissen ja nicht was du vor hast.
    Ich habe das Berechnungsfeld vom Catalog auch schon für so manche Anwendung benutzt...
    Auch wenn da kein Wert gespeichert wird, bekommt man da eigentlich schon relativ viel hin.

    Beispiel:
    - Ein Feld was 7% MwST. berechnet und ausgibt (Frontend und Backend)
    - Ein Feld was 19% MwSt. berechnet und ausgibt (FE und BE)
    - Beide Felder zusammenrechnen geht ja an sich nicht, deswegen beide Berechnungen noch einmal Berechnen und dann Summieren.

    Schon hat man alle 3 Werte, die immer neu berechnet werden und deswegen immer aktuell sind.

    Wenn dir das nicht reicht, was willst du dann genau erreichen?
    Ich meine hier im Forum gibt es auch einen Thread wo es darum geht, die Werte in der DB abzulegen (kann sogar sein, das dazu eine kleine Erweiterung existiert, ich weiß das gerade nicht mehr genau).

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • olivgruen
      Contao-Nutzer
      • 26.07.2009
      • 64

      #3
      Hallo MacKP,

      die Frage nach dem Trigger hat sich glücklicherweise erledigt.

      Solch einfache Berechnungen wie x*1.19 sind kein Ding. Das Berechnungen nur mit nicht-berechneten Feldern funktionieren, hatte ich auch schon rausgefunden

      Bei mir sieht es dann am Ende z.B. so aus (im Wortlaut 'Gesamtbetrag aller zum Team gehöriger Spieler - Zahlungseingänge des Team =Noch offener Teilbetrag):
      Code:
      (select ifnull((select sum(brunch*gebuehr_brunch + schlafplatz*gebuehr_schlafplatz + gebuehr_basis + typ*gebuehr_spieler + (shirt_s + shirt_m + shirt_l + shirt_xl)*shirt_preis) from cat_spieler where cat_spieler.userid = cat_team.userid),0) - 
      ifnull((select sum(cat_finanz.betrag) from cat_finanz where cat_finanz.userid = cat_team.userid),0))
      Man muss sich halt schon ganz schön verbiegen, um die Infos zusammenzukriegen, die man braucht. Ich habe auf diese Weise auch Daten, die zum Team gehören, beim Spieler berechnen lassen, z.B. Status, um so das Hinzufügen und Bearbeiten der Spielerdaten vom Team-Status abhängig machen zu können.

      ich werde mal zusehen, dass ich ein kleines Tutorial dazu erstelle. Mich hat das nämlich schon einige Stunden gekostet und vielleicht hilft's dem einen oder anderen Anfänger

      Die Erweiterung zum Speichern der Werte habe ich auch - nur irgendwie bleibt die DB trotzdem leer.

      Das Anzeigen der berechneten Werte in BE und FE funktioniert, auch werden sie aktualisiert, wenn sich etwas in den referenzierten Daten ändert, oben im Teilbetrag z.B. wenn ein neuer Zahlungseingang vorliegt - da muss ich nicht nochmal zum Team und speichern.

      Kommentar

      • tognit
        Contao-Fan
        • 28.06.2009
        • 480

        #4
        Erweiterung?

        Wo findet man den diese Erweiterung?
        Wäre was schönes, wenn man den Wert im Feld "Berechnen" in der DB speichern könnte!

        Kommentar

        Lädt...