Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie zeige ich Kategorien, Unterkategorien, Unter-Unterkategorien in der Auswahlliste an - php/mysql?

Angenommen, Ihr angegebenes Array befindet sich in $array, können Sie dies verwenden. Aber wie ich Ihnen bereits sagte, sollten Sie die IDs auswählen, um Kategorien mit demselben Namen zu behandeln und sie als Optionswerte in Ihrer Auswahlbox zu verwenden:

  $options = get_options($array);
  echo "<select>";
  foreach($options as $val) {
    echo "<option>".$val."</option>";
  }
  echo "</select>";

  function get_options($array, $parent="", $indent="") {
    $return = array();
    foreach($array as $key => $val) {
      if($val["parent category"] == $parent) {
        $return[] = $indent.$val["category name"];
        $return = array_merge($return, get_options($array, $val["category name"], $indent."&nbsp;&nbsp;&nbsp;"));
      }
    }
    return $return;
  }

Angenommen, Sie haben jetzt die IDs in Ihrem Array als "category_id" und "parent_category_id", können Sie dies verwenden. Das "x" vor dem Schlüssel in $return soll nur verhindern, dass php Ihre Schlüssel ändert, weil sie numerisch sind.

  $options = get_options($array);
  echo "<select>";
  foreach($options as $key => $val) {
    echo "<option value='".substr($key,1)."'>".$val."</option>";
  }
  echo "</select>";

  function get_options($array, $parent=0, $indent="") {
    $return = array();
    foreach($array as $key => $val) {
      if($val["parent_category_id"] == $parent) {
        $return["x".$val["category_id"]] = $indent.$val["category name"];
        $return = array_merge($return, get_options($array, $val["category_id"], $indent."&nbsp;&nbsp;&nbsp;"));
      }
    }
    return $return;
  }