Ergebnis 1 bis 11 von 11

Thema: Select Feld mit der Datenbakstruktur

  1. #1
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard Select Feld mit der Datenbakstruktur

    Hallo,

    Ich würd gern im DCA ein Select Feld anlegen in dem man erst die Datenbankstruktur angezeigt kriegt (tl_news, tl_calendar_events, tl_page usw usw). Dafür dacht ich mir einfach ein Array mit der Struktur zu befüllen und dass dann im Select Feld auszugeben. Finde aber keinen im Contao funktionierenden Ansatz.

    Wenn man dann eine Tabelle ausgewählt hat wird ein zweites Select Feld angezeigt mit den Feldern (id, date, headline usw) der ausgewählten tabelle.

    Wie setzt man sowas um? In MetaModels ist es realisiert aber ehrlich gesagt blick ich da noch überhaupt nicht durch wie das da gemacht wurde und ich denke es geht viel einfacher.

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    das was du suchst nennt sich foreignKey

    Findest du hier: https://docs.contao.org/books/manual...nz.html#felder
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    @Nacht89: Du könntest über den Options-Hook eine Liste aller Datenbank-Tabellen zurückgeben. In der Datenbankklasse gibt es dafür die Funktion listTables. Du kannst es dir z.B. im Core-Module ModuleListing abgucken (system/modules/listing/dca/tl_module.php:121)

  4. #4
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von zinky Beitrag anzeigen
    @Nacht89: Du könntest über den Options-Hook eine Liste aller Datenbank-Tabellen zurückgeben. In der Datenbankklasse gibt es dafür die Funktion listTables. Du kannst es dir z.B. im Core-Module ModuleListing abgucken (system/modules/listing/dca/tl_module.php:121)

    Vielen Dank!
    wenn ich das kopiere oder in mein select feld einfüge kommt folgender fehler:

    Code:
    Warning: in_array() expects parameter 2 to be array, null given in system/modules/core/library/Contao/System.php on line 160
    
    #0 [internal function]: __error(2, 'in_array() expe...', '/homepages/7/d2...', 160, Array)
    #1 system/modules/core/library/Contao/System.php(160): in_array('getInstance', NULL)
    #2 system/modules/core/library/Contao/Widget.php(1388): Contao\System::importStatic('tl_module_listi...')
    #3 system/modules/core/classes/DataContainer.php(265): Contao\Widget::getAttributesFromDca(Array, 'tabelle2', NULL, 'tabelle2', 'tl_auswertung', Object(Contao\DC_Table))
    #4 system/modules/core/drivers/DC_Table.php(1907): Contao\DataContainer->row('{Admin_control}...')
    #5 system/modules/core/classes/Backend.php(639): Contao\DC_Table->edit()
    #6 system/modules/core/controllers/BackendMain.php(131): Contao\Backend->getBackendModule('auswertung')
    #7 contao/main.php(20): Contao\BackendMain->run()
    #8 {main}
    
    
    Fatal error: Class 'tl_module_listing' not found in /homepages/7/d283237047/htdocs/moduledev/system/modules/core/library/Contao/System.php on line 160

    Code:
    	'tabelle' => array
    		(
    			'label'                   => &$GLOBALS['TL_LANG']['tl_auswertung']['tabelle'],
    			'inputType'               => 'select',
    			'exclude'                 => true,
    			'sorting'                 => true,
    			'flag'                    => 1,
    	       'options_callback'         => array('tl_module_listing', 'getAllTables'),
    			'eval'                    => array(
    										
    										'submitOnChange'=>true,										
    										
    										'decodeEntities'=>true, 
    										'maxlength'=>128, 
    										'tl_class'=>'clr'
    										
    										),

  5. #5
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    ja wie soll das denn funktionieren? Du sprichst eine Klasse an, die es dort garnicht gibt

    Fatal error: Class 'tl_module_listing' not found
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  6. #6
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    ja wie soll das denn funktionieren? Du sprichst eine Klasse an, die es dort garnicht gibt

    Fatal error: Class 'tl_module_listing' not found
    ... jetzt funktioniert es! danke!

  7. #7
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Den zweiten Schritt konnte ich immer noch nicht lösen. Wär sehr dankbar über weitere Hilfe.

    Ich brauche alle Spaltennamen der ausgewählten Tabelle.

    Mit einer einfachen Datenbank abfrage kam ich noch nicht zum Ziel.

    Code:
    $result = $this->Database->prepare("SELECT * FROM $tabelle")->execute();
    
    while($result->next())
    {
      print_r($result);
    }
    hier finde ich zwar im Array die Namen kann sie jedoch nicht ausgeben

    Code:
    Contao\Database\Mysqli\Result Object
    (
        [resResult:protected] => mysqli_result Object
            (
                [current_field] => 0
                [field_count] => 32
                [lengths] => Array
                    (
                        [0] => 1
                        [1] => 1
                        [2] => 10
                        [3] => 5
                        [4] => 8
                        [5] => 1
                        [6] => 10
                        [7] => 10
                        [8] => 0
                        [9] => 0
                        [10] => 0
                        [11] => 0
                        [12] => 0
                        [13] => 0
                        [14] => 0
                        [15] => 0
                        [16] => 0
                        [17] => 0
                        [18] => 5
                        [19] => 0
                        [20] => 0
                        [21] => 7
                        [22] => 1
                        [23] => 1
                        [24] => 0
                        [25] => 0
                        [26] => 0
                        [27] => 0
                        [28] => 0
                        [29] => 1
                        [30] => 0
                        [31] => 0
                    )
    
                [num_rows] => 6
                [type] => 0
            )
    
        [strQuery:protected] => SELECT * FROM tl_news
        [intIndex:Contao\Database\Result:private] => 0
        [blnDone:Contao\Database\Result:private] => 
        [blnModified:Contao\Database\Result:private] => 
        [arrCache:protected] => Array
            (
                [id] => 1
                [pid] => 1
                [tstamp] => 1438592443
                [headline] => 01.07
                [alias] => id-01-07
                [author] => 1
                [date] => 1435741200
                [time] => 1435741200
                [subheadline] => 
                [teaser] => 
                [addImage] => 
                [singleSRC] => 
                [alt] => 
                [size] => 
                [imagemargin] => 
                [imageUrl] => 
                [fullsize] => 
                [caption] => 
                [floating] => above
                [addEnclosure] => 
                [enclosure] => 
                [source] => default
                [jumpTo] => 0
                [articleId] => 0
                [url] => 
                [target] => 
                [cssClass] => 
                [noComments] => 
                [featured] => 
                [published] => 1
                [start] => 
                [stop] => 
            )
    Wie krieg ich die da raus? oder gibt es einen anderen, einfacheren weg?

  8. #8
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    schau dir die Result-Klasse an.

    https://github.com/contao/core/blob/...esult.php#L275

    Damit bekommst du die Spaltennamen


    Einfach weiterscrollen ;-)
    Geändert von the_scrat (04.08.2015 um 07:17 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.947

    Standard

    Du meinst https://github.com/contao/core/blob/...base.php#L293?

    Bei einer beliebigen Tabelle weiss ich ja gar nicht, wie die Spalten heißen ...

  10. #10
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Stimmt, du hast recht, ->listFields() bringt die Tabellenspalten zurück nicht fetchField.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  11. #11
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Vielen Dank!

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
  •