+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Zugriff auf Datenbank

  1. #1
    Neu an Board
    Registriert seit
    23.04.2008
    Beiträge
    28
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Zugriff auf Datenbank

    Hallo!

    Ich habe mir folgendes Tutorial durchgelesen und mir die Dateien heruntergeladen:
    http://docs.joomla.org/Developing_a_...ator_Interface

    Mir ist es auch bereits gelungen die Komponente nach meinen Wünschen umzukonfigurieren:
    - Ich habe die Tabelle um einige Spalten erweitert
    - Anstatt von einem, habe ich bereits 7 Eingabefelder

    Ich kann sogar schon alle Eingabefelder in die Datenbank schreiben, lesen, editieren und löschen.

    Zu meinem Problem:
    Ich möchte nun aber ein Dropdownfeld machen, dessen Auswahlmöglichkeiten in einer anderen Tabelle der Datenbank stehen. Leider finde ich nirgens jenen Code bzw. verstehe ihn nicht, mit dem die Datenbank abgefragt bzw. geschrieben wird. Natürlich wäre das einfachste, hier:
    PHP-Code:
    <td>
      <
    select class="text_area" name="name" id="name" size="1"/>
      
    Hier die SQL Abfrage
    </td
    eine SQL Abfrage zu machen.
    Allerdings finde ich das nicht sehr elegant.
    Ich kann ja sonst auch überall mit $this->hello->name; auf meine eingelesenen Daten zugreifen. Wie kann ich das für eine andere Tabelle ebenfalls realisieren?

    Vielen Dank für die Hilfe
    pioneer

  2. #2
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    in deinem model bastelst du dir ne methode, die dir die wichtigen werten zurückliefern

    zb
    PHP-Code:
    function getDropDownInfos()
    {
        
    $db =& JFactory::getDBO();
        
        
    $query =     "SELECT
                        feld1 AS value,
                        feld2 AS text
                    FROM
                        #__deinetabelle"
    ;
                        
        
    //value ist der wert der später in der drop down liste, beim senden des formulars übergeben wird
        //text ist der wert der in der drop down liste ausgegeben wird
        
        
    $db->setQuery($query);
            
        
    $dropdown $db->loadObjectList();

        return 
    $dropdown;


    in deiner view.html.php holst du dir die infos für die drop down liste mittels

    PHP-Code:
    $dropdown = & $this->get'DropDownInfos'); 
    dann erstellst du dir die drop down liste mittels joomla api, ebenfalls in der view.html.php
    PHP-Code:
    $dropdown_list             = array();
    $dropdown_list[]         = JHTML::_('select.option''0'JText::_'Bitte Auswaehlen' ) );
    $dropdown_list             array_merge$dropdown_list$dropdown);
    $lists['dropdown']     = JHTML::_('select.genericlist'$dropdown_list'DROPDOWNLISTE_NAME''size="1" class="inputbox"''value''text''' ); 
    und letztendlich übergibst du die an deinen view mittels
    PHP-Code:
    $this->assignRef('lists'$lists); 
    in deinem view steht dir das dann zur verfügung und du kannst dir das mit einem echo ausgeben...

    PHP-Code:
    echo $this->lists['dropdown']; 

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board
    Registriert seit
    23.04.2008
    Beiträge
    28
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Wow, danke für deine schnelle Antwort.
    Da ich auch verstehen möchte, was ich da mache, würde mich interessieren, was diese get() Methode macht. Holt sie den Rückgabewert jener Methode, die so heißt wie ihr Übergabeparameter nur mit "get" davor?
    Nun würde mich nur noch interessieren, wie ich werte ihn eine bestimmte Tabelle schreiben kann, da ich das select gefunden habe, nirgens jedoch ein insert oder update.
    Nochmals danke für die schnelle Antwort

    mfg
    pioneer

  5. #4
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    würde mich interessieren, was diese get() Methode macht. Holt sie den Rückgabewert jener Methode, die so heißt wie ihr Übergabeparameter nur mit "get" davor?
    ja. so ähnlich, die methode ruft halt die dazugehörige methode im model auf.
    dadurch das die methode einen rückgabe wert hat bekommst du ihn automatisch zurück geliefert...
    du könntest es auch anders schreiben, zb.
    PHP-Code:
    $model $this->getModel();
    $dropdown = & model->getDropDownInfos
    Nun würde mich nur noch interessieren, wie ich werte ihn eine bestimmte Tabelle schreiben kann, da ich das select gefunden habe, nirgens jedoch ein insert oder update.
    das select steht nicht für eine datenbank abfrage, sondern für eine selectbox.
    die klasse/methode erstellt dir einfach eine selectbox, die du ansonsten selber mit einer schleife zusammen stellen müsstest.

    das formular musst du dann wie ein normales formular behandeln und speichern...

  6. #5
    Neu an Board
    Registriert seit
    23.04.2008
    Beiträge
    28
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Habe es jetze eingebaut, aber leider funktioniert es nicht ganz.
    Meine Komponente soll ein Mitgliederverzeichnis für unsere freiwillige Feuerwehr werden, und sie soll, wenn ich ein neues Mitglied anlege, die Dienstgrade von der Tabelle ranks abfragen. In der Tabelle steht die id, der value (ranks_short für alle Dienstgrade gleich), die Kurzbeichnunung für den Dienstgrad (BM) der Dienstgrad (Brandmeister) und der dazugehörige Pfad zur Grafik (images/bm.jpg).

    Ich habe in die die Datei admin\models\personnels.php
    folgende eingefügt:
    PHP-Code:
    function getDropDownInfos() 

      
    $db =& JFactory::getDBO(); 
             
      
    $query =     "SELECT value AS value, rank_short AS text FROM #__ranks"
                             
      
    //value ist der wert der später in der drop down liste, beim senden des formulars übergeben wird 
      //text ist der wert der in der drop down liste ausgegeben wird 
             
      
    $db->setQuery($query); 
                 
      
    $dropdown $db->loadObjectList(); 

      return 
    $dropdown

    in die Datei admin\views\personnel\view.html.php
    PHP-Code:
    //get the ranks
    $dropdown = & $this->get'DropDownInfos'); 
            
    //make a dropdown menue
    $dropdown_list     = array(); 
    $dropdown_list[]   = JHTML::_('select.option''0'JText::_'Bitte Ausw&auml;hlen' ) ); 
    $dropdown_list[]   = array_push$dropdown_list$dropdown); 
    $lists['dropdown'] = JHTML::_('select.genericlist'$dropdown_list'DROPDOWNLISTE_NAME''size="1" class="inputbox"''value''text''' );
            
    //assign dropdown menue
    $this->assignRef('lists'$lists); 
    Hier habe ich array_push() nehmen da bei array_merge() ein Fehler gekommen ist, da man es nur für zwei Arrays nehmen kann.

    und schließlich in die admin\views\personnel\tmpl\form.php
    PHP-Code:
    <td>
      <?php echo $this->lists['dropdown']; ?>
    </td>
    Resultat:
    Es wird ein Dropdownmenü mit "Bitte Auswählen" als einzigem Eintrag ausgegeben. Ich hoffe, dass ich die richtgen Dateien verwendet habe, leider blicke ich bei dem System noch nicht ganz durch und weiß nicht, was welche Datei genau macht.

    mfg
    pioneer

  7. #6
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    gib dir mal die zwischenschritte aus, irgendwo hakt es...
    zb. mit var_dump();
    PHP-Code:
    $dropdown = & $this->get'DropDownInfos');  
    var_dump($dropdown ); 

  8. #7
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.939
    Bedankte sich
    13
    Erhielt 639 Danksagungen
    in 576 Beiträgen

    Standard

    Hier ist eine Methode beschrieben, die das Template-System verwendet
    http://help.joomla.org/content/view/130/75/
    Dabei wird aber ebenfalls die Abfrage selbst durchgeführt und ich denke, JHTML zu benutzen ist besser

  9. #8
    Neu an Board
    Registriert seit
    23.04.2008
    Beiträge
    28
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Also wenn ich
    PHP-Code:
    $dropdown = & $this->get'DropDownInfos'); 
    var_dump($dropdown); 
    in der admin\views\personnel\view.html.php
    mache, dann steht NULL über den Eingabefeldern, was ja nicht gut ist, da somit nichts übergeben bzw. geholt wurde, wenn ich das richtig verstehe.

    Kann es sein, dass ich die falschen Dateienverwende?
    com_personnel\admin\models\personnels.php
    com_personnel\admin\views\personnel\view.html.php
    com_personnel\admin\views\personnel\tmpl\form.php

    Oder kann es sein, dass ich die dropdown variable erst irgendwo initialisieren muss?

    mfg
    pioneer

  10. #9
    Neu an Board
    Registriert seit
    23.04.2008
    Beiträge
    28
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Ich habs nun sowweit hin bekommen, dass ich mit
    PHP-Code:
    $dropdown = & $this->get'DropDownInfos'); 
    var_dump($dropdown[0]); 
    eine Ausgabe bekommen.
    Aber die sieht folgendermaßen aus:
    object(stdClass)#89 (1) { ["rank_short"]=> string(2) "BM" }

    Muss ich mein array jetz noch irgendwie bearbeiten?

    mfg
    pioneer

  11. #10
    Verbringt hier viel Zeit
    Registriert seit
    31.05.2008
    Beiträge
    801
    Bedankte sich
    0
    Erhielt 268 Danksagungen
    in 214 Beiträgen

    Standard

    Zitat Zitat von pioneer01 Beitrag anzeigen
    Da ich auch verstehen möchte, was ich da mache, würde mich interessieren, was diese get() Methode macht.
    Das beste in so einem Fall ist es, wenn du einfach im Framework nachschaust, was diese Methode macht Da lernst du dann am meisten.

    Zitat Zitat von JoomlaHatesMe Beitrag anzeigen
    PHP-Code:
    $db =& JFactory::getDBO(); 
    Im Model gibt es schon vorbelegt mit der DBO Referenz:
    PHP-Code:
    $this->_db
    Zitat Zitat von JoomlaHatesMe Beitrag anzeigen
    PHP-Code:
        $db->setQuery($query);
            
        
    $dropdown $db->loadObjectList(); 
    PHP-Code:
    $dropdown $this->_getList($query); 
    *duck*

    Zum letzten Problem: Das ist kein Array, sondern ein StdClass Objekt, schau doch einfach mal in /libraries/joomla/html/html /select.php wie du die Methode füttern musst.
    lg Måria

  12. Erhielt Danksagungen von:


+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Lesezeichen

Berechtigungen

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