sql >> Databasteknik >  >> RDS >> Mysql

Hur visar man kategorier, underkategorier, underkategorier i vald lista - php/mysql?

Förutsatt att din givna array är i $array kan du använda detta. Men som jag redan sa till dig bör du välja ID för att hantera kategorier med samma namn och använda dem som alternativvärden i din selectbox:

  $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;
  }

Förutsatt att du nu har ID:n i din array som "category_id" och "parent_category_id" kan du använda detta. "X" före nyckeln i $return är bara för att undvika att php ändrar dina nycklar, eftersom de är numeriska.

  $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;
  }


  1. Hitta två kolumner i laravel som har lika värden via Eloquent?

  2. När ska man välja Oracle framför MySQL?

  3. Hur använder man GROUP BY för att sammanfoga strängar i MySQL?

  4. Så här avslutar du PostgreSQL kommandoradsverktyg:psql