Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Ajax php - формирование древовидной структуры. Как корректно
цитата
23/09/11 в 10:57
 Lamagro
Нужна помощь по аяксу.
Есть база данных с фильмами, нужно вывести в древовидной структуре сначала категории, потом даты по данной категории и потом фильмы.
На первый взгляд вроде сделал. Проблема в том что не могу догнать как теперь подняться по раскрытому дереву убирая за собой потомков icon_sad.gif
Может кто чего подскажет?
index.php
<html>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251"?>

<script>
function create_object()
{
   var http_request = false;
   // Mozila, Safari etc.
   if(window.XMLHttpRequest)
   {
       http_request = new XMLHttpRequest();
       if (http_request.overrideMimeType)
      {
      http_request.overrideMimeType('text/html; charset=windows-1251');
           }
   }
   // IE
   else if(window.ActiveXObject) {
       try {
           http_request = new ActiveXObject("Msxml2.XMLHTTP");
           }
       catch(e) {
           try {
                   http_request = new ActiveXObject("Microsoft.XMLHTTP");
               }
               catch(e) {}
           }
       }
       // Error
       if(!http_request) {
           alert('Failed to create object of class XMLHTTP');
           return false;
       }
       else { return http_request; }
}

   function make_request(url, id) {
       http_request = create_object();
       http_request.onreadystatechange = function() { paste_response(http_request, id); };
       http_request.open('GET', url, true);
       http_request.send(null);
   }

   function paste_response(http_request, id) {
       if (http_request.readyState == 4) {
           if (http_request.status == 200) {
               document.getElementById(id).innerHTML += http_request.responseText;
           } else {
               alert('No response from server or another error accured.');
           }
       }
   }
</script>


<body onLoad="make_request('http://site.ru/catalog/work.php', 'global');">

<div id="global">Фильмотека:<br /></div>
</body>
</html>

собственно обработчик work.php
<?
#############################################################
# установка соединения с мускулем
Error_Reporting(E_ALL & ~E_NOTICE);
$dblocation = "localhost";
$dbname = "test1";
$dbuser = "root";
$dbpass = "";
$ident=mysql_connect ($dblocation,$dbuser,$dbpass);
if ($ident == false) echo ("MSQL CONNECT ERROR <br>");
//else echo ("Soedinenie s MySQL ustanovleno! <br>");

# установка соединения с базой
$succ = mysql_select_db($dbname,$ident);
if ($succ == false) echo ("MSQL BASE SELECT ERROR <br>");
//else echo ("Soedinenie s basoy ".$dbname." ustanovleno! <br>");
#############################################################
if($_GET[a])
{
switch($_GET[a])
{
   case "date": getDates(); break;
   case "film": getFilms(); break;
   default: getCategories(); break;
}
}else{
   getCategories();
}

function getCategories()
{
   $sql="SELECT * FROM `tblCategories`";
   $result = mysql_query($sql);
   while($row = mysql_fetch_array($result))
   {
                $divId = "cat".$row['id'];
      $url = "http://site.ru/catalog/work.php?a=date&cat=".$row['id'];

      echo "<div id='$divId'>";
      echo "<a href=\"#\" onClick=\"make_request('$url','$divId');\"\">".$row['id'].": ".$row['fldTitle']."</a>";
      echo "</div>";
   }
}

function getDates()
{
   $sql="SELECT DISTINCT `fldDate` FROM `tblFilms` WHERE `id` IN (SELECT `fldFilm` FROM `tblLinks` WHERE `fldCategory`='".$_GET[cat]."')";
   $result = mysql_query($sql);
   while($row = mysql_fetch_array($result))
   {
      $divId = $_GET[cat]."date". rand();
      $url = "http://site.ru/catalog/work.php?a=film&cat=".$_GET['cat']."&date=". $row['fldDate'];

      echo "<div id='$divId' style=\"text-indent:20px\">";
      echo "|----<a href=\"#\" onClick=\"make_request('$url','$divId');\"\">".$row['fldDate']."</a>";
      echo "</div>";
   }
}

function getFilms()
{
   $sql="SELECT `fldTitle` FROM `tblFilms` WHERE `id` IN (SELECT `fldFilm` FROM `tblLinks` WHERE `fldCategory`='".$_GET[cat]."') AND `fldDate`='".$_GET[date]."'";
   $result = mysql_query($sql);
   while($row = mysql_fetch_array($result))
   {
      echo "<div style=\"text-indent:40px\">|----".$row['fldTitle']."</div>";
   }
}
mysql_close($ident);
?>


Эта страница в полной версии