Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como exibir categorias, subcategorias, sub-subcategorias na lista de seleção - php/mysql?


Supondo que seu array fornecido esteja em $array, você pode usar isso. Mas como eu já disse você deve selecionar os ids para lidar com categorias com o mesmo nome e usá-los como valores de opção em sua caixa de seleção:
  $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;
  }

Supondo que agora você tenha os ids em sua matriz como "category_id" e "parent_category_id", você pode usar isso. O "x" antes da chave em $return é apenas para evitar que o php altere suas chaves, pois elas são numéricas.
  $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;
  }