robot
robot
04 Eylül 2020

Sonsuz Kategori Yapısında Combo Box ile Listeleme Php/Mysql

Aşağıdaki tablo yapısındaki kategorilerimi hiyerarşiye uygun olarak combo boxta listeleyebileceğim hazır bir fonksiyon var mı?

idustIDkategoriAdi
10Kitap
21Edebiyat
32Roman




Emre
Emre
04 Eylül 2020

Fonksiyonumuz:

function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') 
{
  if (!is_array($user_tree_array))
    $user_tree_array = array();

  $sql = "SELECT * FROM tblkategori WHERE 1 AND ustID = $parent ORDER BY id ASC";
  $query = mysql_query($sql);
  if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_object($query)) {
      $user_tree_array[] = array("id" => $row->ustID, "name" => $spacing . $row->kategoriAdi);
      $user_tree_array = fetchCategoryTree($row->id, $spacing . '  ', $user_tree_array);
    }
  }
  return $user_tree_array;
}



Fonksiyonu Çağırmak İçin:

$categoryList = fetchCategoryTree();
echo ('<select>'."\n");
foreach($categoryList as $cl) {
echo ('<option value="'.$cl["id"].'">'.$cl["name"].'</option>'."\n");
}
echo ('</select>'."\n");



Emre
Emre
05 Eylül 2020

Farklı bir yöntem


$request=mysql_query('SELECT id,kategoriAdi,ustID FROM tblkategori ORDER BY kategoriAdi ASC');

$list=array();
while($row=mysql_fetch_assoc($request)){
    $list[$row['id']]=$row;
}

mysql_free_result($request);


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

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





Cevap Yaz

Cevap yazabilmeniz için Giriş yapmanız gerekiyor.