Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Построение дерева иеархии из даных Mysql
 
 автор: alex_fear   (24.02.2011 в 18:05)   письмо автору
452.8 Кб
 
 

Подскажите где проблема почему не могу построить дерево иеархии
вот код

<?php
include("db.php");

?>
<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
<div class="dtree">

    <p><a href="javascript: d.openAll();">Открыть все</a> | <a href="javascript: d.closeAll();">Закрыть все</a></p>

<script type="text/javascript">
        <!--

        d = new dTree('d');

        d.add(0,-1,'Классы запчастей');    

<?
                                   
                                  $typ
=$_GET['id'];


$query "select * from kat_tg WHERE TYP=$typ"
  
$result=mysql_query($query);  
  if(!
$result) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result)) 
  { 
    while(
$data=mysql_fetch_array($result)) 
    {  
$gen=$data['GEN'];
    
  

$query1 "select * from kat_gen WHERE GEN=$gen"
  
$result1=mysql_query($query1);  
  if(!
$result1) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result1)) 
  { 
    while(
$data1=mysql_fetch_array($result1)) 
    {  
$gru=$data1['GRU'];
    


$query2 "select * from kat_gruc WHERE GRUC1=$gru and GRU=$gru"
  
$result2=mysql_query($query2);  
  if(!
$result2) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result2)) 
  { 
    while(
$data2=mysql_fetch_array($result2)) 
    {  
     
$gru_gru2=$data2['GRU_GRU'];
     
$nazva2=$data2['GRUNAZWA'];

  } 
  
if(
$gru_gru2>0){

$query3 "select * from kat_gruc WHERE GRUC1=$gru and GRU=$gru_gru2"
  
$result3=mysql_query($query3);  
  if(!
$result3) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result3)) 
  { 
    while(
$data3=mysql_fetch_array($result3)) 
    {  
     
$gru_gru3=$data3['GRU_GRU'];
     
$nazva3=$data3['GRUNAZWA'];

if(
$gru_gru3>0){
$gru_gru3_3=$gru_gru3;
}else{
$gru_gru3_3=$gru_gru2;}


  } 
  

}else{
$nazva3=$nazva2;
$gru_gru3_3=0;}

if(
$gru_gru3_3>0){

$query4 "select * from kat_gruc WHERE GRUC1=$gru and GRU=$gru_gru3_3"
  
$result4=mysql_query($query4);  
  if(!
$result4) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result4)) 
  { 
    while(
$data4=mysql_fetch_array($result4)) 
    {  
     
$gru_gru4=$data4['GRU_GRU'];
     
$nazva4=$data4['GRUNAZWA'];

if(
$gru_gru4>0){
$gru_gru4_4=$gru_gru4;
}else{
$gru_gru4_4=$gru_gru3_3;}
  } 
  
}else{
$nazva4=$nazva3;
$gru_gru4_4+=0;}

if(
$gru_gru4_4>0){

$query5 "select * from kat_gruc WHERE GRUC1=$gru and GRU=$gru_gru4_4 "
  
$result5=mysql_query($query5);  
  if(!
$result5) exit("Ошибка - ".mysql_error()); 
  if(
mysql_num_rows($result5)) 
  { 
    while(
$data5=mysql_fetch_array($result5)) 
    {  
     
$gru_gru5=$data5['GRU_GRU'];
     
$nazva5=$data5['GRUNAZWA'];
if(
$gru_gru5>0){
$gru_gru5_5=$gru_gru5;
}else{
$gru_gru5_5=0;}
  } 
  


}else{
$nazva5=$nazva4;
$gru_gru5_5=0;}


?>


                   d.add(<?=$gru_gru4_4?>,<?=$gru_gru5_5?>,'<?=$nazva4?>','example01.html');
    //d.add(<?=$gru_gru3_3?>,<?=$gru_gru4_4?>,'<?=$nazva4?>','example01.html');
               // d.add(<?=$gru_gru2?>,<?=$gru_gru3_3?>,'<?=$nazva3?>','example01.html');
                  d.add(<?=$gru?>,<?=$gru_gru2?>,'<?=$nazva2?>','example01.html');
                
 
<?


}

}
}
}
}
}

?>
document.write(d);
//-->
    </script>

</div>
<?



Пример даных прикрепил в виде графического файла!!

  Ответить  
 
 автор: psychomc   (24.02.2011 в 18:12)   письмо автору
 
   для: alex_fear   (24.02.2011 в 18:05)
 

что-то страшное...не нужно столько запросов. нужен 1 запрос к базе данных на выборку всех записей из таблицы. складываете это все дело в массив а потом уже работаете с массивом, и строите свою иерархию в зависимости от значений элементов массива

  Ответить  
 
 автор: alex_fear   (24.02.2011 в 18:21)   письмо автору
 
   для: psychomc   (24.02.2011 в 18:12)
 

а как сделать 1 запрос? И поместить это в масив?

  Ответить  
 
 автор: ONYX   (25.02.2011 в 02:25)   письмо автору
 
   для: alex_fear   (24.02.2011 в 18:05)
 

В целом смысл простой собираем список родительских элементов, а потом уже собираем все дочерние элементы.

Варианта два, либо рекурсией, либо собирать все по очереди в массив.

И еще зачем вам три последних столбца? в 9-м и 11-м столбце записи вообще идентичные

  Ответить  
 
 автор: alex_fear   (25.02.2011 в 10:19)   письмо автору
 
   для: ONYX   (25.02.2011 в 02:25)
 

Такой вопрос как отфильтровать в масиве одинаковые данные?
Тоесть в масив записывается :
1-кот
2-собака
3-лошадь
1-кот
3-лошадь
цифры и текст это все переменные
нужно получать с мпсива всего
1-кот
2-собака
3-лошадь и отсортировать это по первой переменной!

  Ответить  
 
 автор: ONYX   (25.02.2011 в 11:13)   письмо автору
 
   для: alex_fear   (25.02.2011 в 10:19)
 

Убрать из массива повторяющиеся значения

И вообще php.ru полно полезной документации

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования