Seite 1 von 1

Kategorieliste als Dropdownfeld im Input

Verfasst: Mi 25. Mär 2009, 17:30
von Benki
Ich brauche mal kurz Hilfe von den Profis.

Ich möchte mit einem kleinen Modul in einem Textfeld einen Kategorienamen und einen Unterkategorienamen ausgeben.
Dazu möchte ich in der Moduleingabe die Kategorie per Dropdownfeld auswählen und dann an die Ausgabe übergeben. Da die Artikel, in denen das Textfeld steht per Content Allocation in verschiedenen Kategorien stehen können, kann man nicht automatisch auf den Kategorienamen schließen lassen. Daher denke ich mir, wäre eine manuelle AUswahl sinnvoll. Als Basis habe ich das Hilfsnavigations-Modul von Andreas Lindner genommen:

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[0]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
      </table>";
Die Auswahl funktioniert auch, allerdings gibt er mir dann in der Ausgabe nur die Kategorienummer und nicht den dazugehörigen Text aus. Wie komme ich nun an den Namen der Kategorie? Von dem Unterkategorienamen ließe sich natürlich auf die dazugehörige überlagerte Kategorie schließen. Wenn mir jemand sagen könnte, wie ich auch das noch umsetzen könnte, wär es ein Traum :-)

Vielen Dank vorab!!

Re: Kategorieliste als Dropdownfeld im Input

Verfasst: Mi 25. Mär 2009, 17:39
von idea-tec
so funktionierts dann auch mit der Nachbarin! ;-)

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[0]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("name")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("name") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("name") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
      </table>";
in den Zeilen 42, 44 und 48:
$db->f("idcat") in $db->f("name") geändert

Re: Kategorieliste als Dropdownfeld im Input

Verfasst: Do 26. Mär 2009, 11:15
von Benki
Super. Das wars schon. Danke!!!

Re: Kategorieliste als Dropdownfeld im Input

Verfasst: Do 26. Mär 2009, 14:33
von Benki
Wäre es auch ohne große Umstände möglich statt der 'normalen' Kategorien die Content Allocation Categorien auszulesen?