Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дерево, Что мне нужно не нашел 
V
    Опции темы
NEZ
Дата 25.12.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Знач так, мне нужно загнать в <select> все дерево ... 
т.е. скажем
* Компания1 
* Компания1 -- Отдел1
* Компания1 -- Отдел1 -- Группа1  

я пока вел только одну компанию, один отдел, и одну группу  

Скрипт дерева вроди рабочий, использовал то что я нашел тут ... (см. в функцию) .. 
добавил от себя несколько изменений... слегка коса но пашет. .. 
только вот трабл терь .... 
В <select> мне выходит следующее :
* Компания1 
* Компания1 -- Отдел1
* Компания1 -- Отдел1 -- Группа1 
* Компания1 -- Отдел1
* Компания1 -- Отдел1 -- Группа1 
* Компания1 -- Отдел1
* Отдел1
* Отдел1 - Группа1
* Отдел1 - Группа1
* Группа1

.. Как исправить ? 
ПОмогитеее ... очень нужно ... 

Код

///////////////////////////////////////////////////////

function ShowTree($ParentID, $lvl, $Parentname, $options, $nachalo) { 
 include("../../config.php");
global $lvl; 
$count = 1;
$lvl++; 
$sSQL="SELECT * FROM $ou WHERE IDParentOU=".$ParentID." ORDER BY `IDOU`";
$result=mysql_query($sSQL);
if (mysql_num_rows($result) > 0) {
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["IDOU"];
$Parentname = $Parentname . '<b>- -</b> ' . $row['OUName'];
    $options = $options . "<option value=\"$ID1\">$nachalo $Parentname </option> ";

ShowTree($ID1, $lvl, $Parentname, $options, $nachalo); 
$lvl--;

$count++;
}
}
print($options);

}
////////////////////////////////////////////////////////////




Код

    <select name="parou">
<?
/////////////////////////////////////////
$Query = "SELECT * from $ou ORDER BY `IDOU` ASC";
$Result = mysql_query($Query);
while ($Row = mysql_fetch_array($Result)) {
$nachalo = $Row['OUName'];
$Parentname = '';
$options = '';
print("<option value=\"$Row[IDOU]\">$nachalo</option> ");

ShowTree($Row['IDOU'], 0, $Parentname, $options, $nachalo); 
//////////////////////////////////////////

}

}
?>     
    
</select>     </td>



Добавлено @ 11:05 
Это вырезка из большого скрипта.... т.ч. глобальных ошибок искать не надо.... 

Мне надо просто предотворитить клонирование 

Это сообщение отредактировал(а) NEZ - 25.12.2006, 11:03
PM MAIL   Вверх
PARROT
Дата 25.12.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50





--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
NEZ
Дата 25.12.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Уже глядел на это ...... не подходит ........... 
и плюс.... придется переписывать весь скрипт .... что не выгодно ... (сроки поджимают....а я уже много времени на этот скрипт потратил) .... 

Мне нужен именно этот скрипт (что выложен в моем посте ввыше) .... просто как можно не допустить дублирования такого рода я не знаю .. 


но спасибо за отзыв ... 
PM MAIL   Вверх
-=Ustas=-
Дата 25.12.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Покажи базу


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
NEZ
Дата 25.12.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Фота ... 

Извините, названия не поменял .....

И за то что я показываю фоту..особо тож не ругайте..... у меа ща просто открыт PHPMYADMIN ))
Ну -> Компания  - Geray
Отдел - SubGeray1
Группа - BUgaga

Это сообщение отредактировал(а) NEZ - 25.12.2006, 11:42

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  baza.jpg 30,71 Kb
PM MAIL   Вверх
NEZ
Дата 25.12.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



В общей сложности все выглядит так (см. фото


Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  select.jpg 45,56 Kb
PM MAIL   Вверх
-=Ustas=-
Дата 25.12.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



дай дамп этой таблички

Добавлено @ 12:16 
хотя уже не надо


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
NEZ
Дата 25.12.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Я вот решил использовать strpos (как я прочитал это поиск слов в строке) 
Если данный ID присутствует в списке.. то он его не принтует ... 
но че т.... переменная $all сбивается под конец 

т.е. сначало у нее значение 2 потом 2 3 .. а потом почему то только 3 

Код

$Parentname = $Parentname . '<b>- -</b> ' . $row['OUName'];
$search = strpos($all , $ID1); 
if ($search !== true)
{
$all = $all . ' ' . $ID1;

    $options = $options . "<option value=\"$ID1\">$ID1 $nachalo $Parentname </option> ";
}


PM MAIL   Вверх
-=Ustas=-
Дата 25.12.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



NEZ, Открыто тебе скажу, что ты фигню лепишь! То что тебе нужно, можно реализовать гораздо проще твоего непонятного (плюс нечитабельного) кода:
Код

<?php

function ShowTree( $ParentID, $lvl ) 
{
    static $parent = array();
    
    $sql = "SELECT * FROM `your_table` WHERE IDParentOU = ".$ParentID." ORDER BY `IDOU`";
    $res = mysql_query( $sql );
    
    if ( mysql_num_rows( $res) > 0 ) {
        $lvl++;
        while ( $obj = mysql_fetch_object( $res ) ) {
            $sep = ( sizeof( $parent ) > 0 ) ? ' --- ' : '';
            echo '<option value="'.$obj->IDOU.'">'.implode( ' --- ', $parent ).$sep.' '.$obj->OUName.'</option> ';
            array_push( $parent, $obj->OUName);
            ShowTree( $obj->IDOU, $lvl ); 
            $lvl--;
            unset( $parent[ ( sizeof( $parent ) - 1 ) ] );
        }
    }
}

?>

<select name="parou">

<?

ShowTree(0, 0); 

?>     
    
</select>


Добавлено @ 12:58 
И еще, корневые родители должны иметь у себя в parent-е - 0, при чем обязательно!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
NEZ
Дата 25.12.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Спасибо ... 
Трабл почти исправился
Терь выходит
* Компания
* Отдел ... (а не Компания - Отдел) ( куда тут вписать в начало переменную $nachalo .. я не знаю =(( 
Код

echo '<option value="'.$obj->IDOU.'">'.implode( ' --- ', $parent ).$sep.' '.$obj->OUName.'</option> ';
 

потом
* Отдел - Группа
* Отдел
* Группа
* Группа



Насчет того, что родитель должен быть 0  .. я в обращении прописал    
Код

$sql = "SELECT * FROM $ou WHERE IDParentOU = ".$ParentID." and IDOU!=IDParentOU ORDER BY `IDOU`";

 


тогда скрипт проходит

Это сообщение отредактировал(а) NEZ - 25.12.2006, 13:13
PM MAIL   Вверх
NEZ
Дата 25.12.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Млин!! ... Сорри ребя... самсделал ошибку ..

Спасибо огромное!! 
С меа пиво при случае )) 




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.