древовидная структура списка в php и mysql - PullRequest
0 голосов
/ 26 июня 2010

Кто-нибудь знает, как отобразить иерархические данные БД MySQL (Модель Nested Set (http://www.phpro.org/tutorials/Managing-Hierarchical-Data-with-PHP-and-MySQL.html))) в поле со списком, как показано здесь под полем поля «Категория:»: http://dir.globetourism.biz/submit.php

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2010
<?PHP
function GetCats($id='0',$sublev='0',$vname='C_Parent')
{
 $DQ = new MySQLTable;
 $DQ -> TblName = 'cat_categories';
 $WHERE[$vname]['=']=$id;
 $res = $DQ -> Select('C_ID,C_Name',$WHERE,'C_ID');
 if (mysql_num_rows($res)>0)
 {
  while($row = mysql_fetch_assoc($res))
  {
    $ss='';
   if($sublev!=='0')
   {
    for($i=0;$i<=$sublev*10;$i++)
    {
     $ss.='&nbsp;';
    }
    $ss.='|';
    for($i=0;$i<=$sublev;$i++)
    {
     $ss.='-';
    }
     $ss.='&gt;&gt;';
   }
   $sel_s = '';
   if(IsSet($_POST['C_Parent']))
   {
    if($row['C_ID']==$_POST['C_Parent'])
    {
     $sel_s = ' selected';
    }
   } elseif (IsSet($_POST['I_Parent'])) {
    if($row['C_ID']==$_POST['I_Parent'])
    {
     $sel_s = ' selected';
    }
   } else {
    $sel_s = '';
   }
   Echo "<option value=\"".$row['C_ID']."\" ".$sel_s.">".$ss.$row['C_Name']."</option>\r\n";
   GetCats($row['C_ID'],$sublev+1);
  }
 }
}


     Echo "<select name=\"C_Parent\">\r\n";
     Echo "<option value=\"0\">...</option>\r\n";
     GetCats();
     Echo "</select>";
     ?>

Примерно так.
Но здесь был мой собственный класс MySQL.Запрос выглядит так: SELECT C_ID,C_Name WHERE C_Parent=$id ORDER BY C_ID где $ id - переменная php (текущий родительский кот).
И если переменная $ _POST отправляется в хранилище, есть переменные $ _POST.
Это не самый эффективный способ сделать это, потому что многиезапросы.Более эффективно - заставить все данные в массив работать.

0 голосов
/ 26 июня 2010

Что вам нужно сделать, это когда вы печатаете свои <option> теги для вашего поля со списком, вы должны проверить depth (как узнать глубину в статье, которая связана с вашим вопросом) каждого элемента и распечатать столько строк "|" и еще два подчеркивания (__), чтобы придать ему красивый древовидный вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...