Kategorieliste als Dropdownfeld im Input

Gesperrt
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Kategorieliste als Dropdownfeld im Input

Beitrag 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!!
Zuletzt geändert von Benki am Do 26. Mär 2009, 14:33, insgesamt 2-mal geändert.
Benki
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Kategorieliste als Dropdownfeld im Input

Beitrag 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
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Re: Kategorieliste als Dropdownfeld im Input

Beitrag von Benki »

Super. Das wars schon. Danke!!!
Benki
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Re: Kategorieliste als Dropdownfeld im Input

Beitrag von Benki »

Wäre es auch ohne große Umstände möglich statt der 'normalen' Kategorien die Content Allocation Categorien auszulesen?
Benki
Gesperrt