Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment afficher les catégories, sous-catégories, sous-sous-catégories dans la liste de sélection - php/mysql ?

En supposant que votre tableau donné est dans $array, vous pouvez l'utiliser. Mais comme je vous l'ai déjà dit, vous devez sélectionner les identifiants pour gérer les catégories portant le même nom et les utiliser comme valeurs d'option dans votre boîte de sélection :

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

En supposant que vous ayez maintenant les identifiants dans votre tableau en tant que "category_id" et "parent_category_id", vous pouvez l'utiliser. Le "x" avant la clé dans $return est juste pour éviter que php ne modifie vos clés, car elles sont numériques.

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