+ Antworten
Ergebnis 1 bis 3 von 3

Thema: combobox im Formular

  1. #1
    Neu an Board Avatar von el_kekso
    Registriert seit
    19.02.2008
    Beiträge
    19
    Bedankte sich
    1
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Frage combobox im Formular

    Hallo zusammen,

    ich mache grade meine ersten Gehversuche in der Joomla1.5 API
    und stehe nun vor dem Problem Comboboxen im Backend zu erstellen.
    Meine bisherigen Recherchen zu diesem Thema brachten leider nur so
    sinnvolle Hinweise wie "sieh dir an wie das in anderen komponenten gemacht wird".
    Auf diese Idee war ich auch schon gekommen musste aber feststellen dass Komponenten
    nicht unbedingt auf Anfängerlesbarkeit optimiert sind.

    Aus diesem Grunde suche ich jetzt nach einem Hinweis zur Lösung des
    unten beschriebenen Problems, oder einem tutorial das sich ausreichend ausführlich
    mit Comboboxen, Listen, etc. im backend befasst.
    Code:
    <form action="index.php" method="post" name="adminForm" id="adminForm">
        <div class="col100">
            <fieldset class="adminform">
                <legend><?php echo JText::_( 'Details' ); ?></legend>
                <table class="admintable">
                    <!-- jcb code -->
                    <tr>
                        <td width="100" align="right" class="key">
                            <label for="name">
                                <?php echo JText::_( 'name' ); ?>:
                            </label>
                        </td>
                        <td>
                            <input class="text_area" type="text" name="name" id="name" size="32" maxlength="40" value="<?php echo $this->data->name;?>" />
                        </td>
                    </tr>
    ...
    soweit klar, eine Textarea in der wert eingetragen werden soll. An einigen Stellen
    wäre eine Combobox mit einer Auswahl erlaubter Parameter aber erheblich sinnvoller.
    In meiner Not bastelte ich mir also eine Klasse deren Methode combobox($query) den
    Code einer Combobox zu der übergebenen query zurück liefert.
    PHP-Code:
    <?php defined('_JEXEC') or die('Restricted access');
    jimport'joomla.database.database' );?>
    <?php
    class sql2menu {

        private 
    $query='select * from dual';
        private 
    $selected="";
        private 
    $db null;
        private 
    $results=null;

        function 
    __construct() {
            
    $this->db JFactory::getDBO();
        }

        function 
    statement() {
            echo 
    $this->query;
        }

        function 
    query() {
            
    $this->db->setQuery($this->query010);
            
    $this->results=$this->db->loadObjectList();

        }

       function 
    combobox($input) {
            
    $this->query$input;
            
    $this->query();
            
    $rValue="<input type=\"text\" name=\"beispiel\" id=\"beispiel\" class=\"combobox\"     value=\"".$this->selected."\" />";
            
    $rValue.="    <ul id=\"combobox-beispiel\" style=\"display:none;\">";
            foreach (
    $this->results as $resultitem) {
            
    $rValue.="<li>".$resultitem->name."</li>";
     }


            
    $rValue.="    </ul>";
            return 
    $rValue;
        }

    }
    ?>
    erweitere ich mein formular also um
    Code:
    ...
                 <tr>
                        <td width="100" align="right" class="key">
                            <label for="ligaID">
                                <?php echo JText::_( 'Wert2' ); ?>:
                            </label>
                        </td>
                        <td>
                            <?php
                            $comboClass = new sql2menu;
                            $combo=$comboClass->combobox("select * from #__Tabelle2");
                            JHtml::_('behavior.combobox');
                            echo $combo;
                            ?>
                        </td>
                    </tr>
    ...
    erhalte ich tatsächlich eine Combobox mit sinnvollen Werten.
    Nun gibt es aber Fälle in denen mehrer Comboboxen im gleichen Formular benötigt werden.
    Wenn ich aber mehrere Instanzen der Combobox im gleichen formular habe
    (jede mit anderen Variablennamen und anderen queries) enthalten alle boxen die gleichen Werte. Vermutlich benutze ich das JHtml nicht richtig, aber dieser Gedanke hat mir bei der Lösung des Problems bisher nicht weiter geholfen.

    Für sachdienliche Hinweise wäre ich hochgradig dankbar
    Geändert von el_kekso (27.05.2010 um 10:26 Uhr) Grund: gelöst

  2. #2
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Hier gibt es ein Beispiel, wie so eine Combobox aufgebaut sein muss. Wichtig ist, dass jedes input Feld seine eigene ID hat (hier "beispiel") und dazu passend dann die Liste als ID die ID des input Feldes bekommt, mit dem Präfix"combobox-" (hier "combobox-beispiel"). Last but not least braucht das input Feld noch die Klasse "combobox".

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board Avatar von el_kekso
    Registriert seit
    19.02.2008
    Beiträge
    19
    Bedankte sich
    1
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    besten Dank.

    auf diesem Beispiel hatte ich meine combobox-methode aufgebaut, mir war nur die bedeutung von name und ID nicht klar genug (hätte ich aber auch drauf kommen können).

    die funktionierende mehtode sieht jetzt so aus
    PHP-Code:
       function combobox($input,$comboname) {
            
    $this->query$input;
            
    $this->query();
            
    $Rvalue="<input type=\"text\" name=\"".$comboname."\" id=\"".$comboname."\" class=\"combobox\"     value=\"".$this->selected."\" />";
            
    $Rvalue.="    <ul id=\"combobox-".$comboname."\" style=\"display:none;\">";
     foreach (
    $this->results as $resultitem) {
     
    $Rvalue.="<li>".$resultitem->name."</li>";
     }


            
    $Rvalue.="    </ul>";
            return 
    $Rvalue

+ Antworten

Lesezeichen

Berechtigungen

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