Ergebnis 1 bis 6 von 6

Thema: Fortlaufende Nummer (nicht id) in einem catalog Feld?

  1. #1
    Contao-Nutzer
    Registriert seit
    14.01.2010.
    Beiträge
    44

    Frage Fortlaufende Nummer (nicht id) in einem catalog Feld?

    Hallo,

    ich suche nach einer Möglichkeit, wie ich ein catalog Feld vom Typ "Nummer" mit einemWert vorbelegen kann, der aus einer anderen Tabelle kommt.
    Hintergrund: es gibt eine Tabelle (unabhängig vom catalog), die fortlaufende Nummernkreise enthält. Sobald ein neuer catalog Eintrag erstellt wird, soll die Tabelle mit den Nummern um einen neuen Eintrag ergänzt werden, und die soeben ergänzte Nummer dann aus der Tabelle geholt werden und in das catalog Feld integriert werden.

    Ablauf:
    1. Tabelle "Nummer" vor dem hinzufügen eines neuen catalog Eintrages:

    1234567

    2. Jetzt wird im Backend ein neuer catalog Eintrag erstellt.
    3. Tabelle "Nummer" wird nun um einen neuen Eintrag ergänzt und enthält damit zwei Werte:

    1234567
    3456789

    4. Im catalog Eintrag wird der letzte Wert der Tabelle "Nummer" nun in das entsprechende Feld eingesetzt. Dieses hat nun den Wert "3456789".


    Ich habe es über eine simple DCA Konfiguration zum testen versucht, allerdings habe ich da das Problem, dass der Insert-Befehl mehrmals ausgeführt wird, da es an dieser Stelle ja keinen Hook gibt, den Befehl nur einmal auszuführen (die inserts in folgendem Code sind nur zum testen und stellen nicht die späteren tatsächlichen Werte da):

    dcaconfig.php
    Code:
    $objKAnr2 = $this->Database->prepare("INSERT INTO KANummer (datum) VALUES (".date('Y-m-d').")")
                                  ->execute();
    							  
    $objKAnr = $this->Database->prepare("SELECT * FROM KANummer ORDER BY id DESC")
                                  ->limit(1)
                                  ->executeUncached();
    
    $GLOBALS['TL_DCA']['KA']['fields']['anzeigennummer']['default'] = $objKZnr->id;
    Als nächstes hatte ich es über ein Modul versucht. Allerdings war mir hier auch nicht klar, welcher Hook der passende ist, da es ja für den catalog nur Frontend-Hooks gibt. Zudem kann ich in dem Modul dann ja nicht mehr automatisch ein catalog-Feld mit dem gewünschten Wert befüllen.

    Irgendwie stehe ich gerade auf dem Schlauch. Hat von euch jemand eine Idee oder einen Lösungsansatz?

    :-(

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Hi,
    ein eigener Catalog-Feldtyp.

    Obwohl ich den Weg über die dcaconfig nicht schlecht finde.
    Kannst du nicht vorher abfragen ob der Wert schon gesetzt ist, damit der Befehl nicht mehrmals ausgeführt wird.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer
    Registriert seit
    14.01.2010.
    Beiträge
    44

    Standard

    Hallo Tim,

    das mit dem eigenen Feldtypen hatte ich mir auch schon überlegt, aber in der Doku vom catalog konnte ich diesbezüglich leider nichts finden. Deshalb habe ich eine Lösung per DCA versucht. Wie würdest du denn prüfen ob der Wert schon gesetzt ist damit der SQL Befehl nur einmal ausgeführt wird? Ich habe es über den Default-Wert probiert, allerdings wird da der SQL Befehlt bei jedem Aufruf des Kataloges im Backend ca. 10 Mal ausgeführt.

    Code:
    if(!isset($GLOBALS['TL_DCA']['TEST']['fields']['Nummer']['default'])) {
    ...
    }
    Hast du da noch eine Idee?
    Danke!

  4. #4
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Teste doch mit der SQL Abfrage.

    Hier dein Aufruf:

    PHP-Code:
    $myDate date('Y-m-d');

    $objTest $this->Database->execute("SELECT * FROM KANummer WHERE datum=$myDate");
    if(!
    $objTest->numRows// wenn nichts zurückgegeben wird, existiert kein Feld 'datum' mit dem Wert auf $myDate
    {
    $objKAnr2 $this->Database->prepare("INSERT INTO KANummer (datum) VALUES (".$myDate.")")
                                  ->
    execute();
                                  
    $objKAnr $this->Database->prepare("SELECT * FROM KANummer ORDER BY id DESC")
                                  ->
    limit(1)
                                  ->
    executeUncached();

    $GLOBALS['TL_DCA']['KA']['fields']['anzeigennummer']['default'] = $objKZnr->id;

    Mal so in Blaue
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  5. #5
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Frage Fortlaufende Nummerierung (mit Jahreszahl)

    Hallo zusammen,

    Wie kriegt man in ein Catalog-Feld, eine Fortlaufende Nummerierung (mit Jahreszahl) hin, die so wie unten aussehen sollte?

    Im 2012:
    12001
    12002

    Im 2013:
    13001
    13002

  6. #6
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo tognit,
    wenn das so überschaubar ist, dann würde ich das doch per taxonomie lösen.
    Ansonsten eventuell besser mit einem eigenen Feldtyp den du dafür anlegst?

    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."

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •