Форум → Программирование → PHP для идиотов → PHP, рекурсия, дерево
PHP, рекурсия, дерево
Страницы: ← Предыдущая страница • Следующая страница →
-
Март 23, 2010, 1:57 д.п., спустя 28 минут 11 секунд
Подскажите кто нибудь как такую задачу решить а то мозги уже раком всттали -
Март 23, 2010, 12:55 п.п., спустя 10 часов 57 минут 50 секунд
Это уебанство хранить деревья структурой только с parent_id, убивать кучей запросов базу зачем?
а это ЧТО?
По моему не за ту ты задачу взялся.global $db;
ПС Пардон за мой французский, но из этих ошибок в дальнейшем падают большие проекты -
Март 23, 2010, 3:25 п.п., спустя 2 часа 30 минут 13 секунд
Это уебанство хранить деревья структурой только с parent_id, убивать кучей запросов базу зачем?
а это ЧТО?
По моему не за ту ты задачу взялся.global $db;
ПС Пардон за мой французский, но из этих ошибок в дальнейшем падают большие проекты
1. За твой французский извеняю ибо он у тебя никакой
2. Дерево разрабатывается не для больших проектов, а для вполне конкретной задачи.
3. global $db; определение переменной $db как глобальной -
Март 23, 2010, 3:52 п.п., спустя 26 минут 40 секунд
3. global $db; определение переменной $db как глобальной
Это типа сострил?
Твой файл: Делаем global $db;
потом ты используешь его в другом файле
потом дали твой проект доработать мне. Я и думаю что же такое $db? Наверное "Даша - блядь", соглашаюсь с этим $db=true. И врезаюсь в твой проект. Всё что дальше, где использовалось $db падает…. -
Март 23, 2010, 4:02 п.п., спустя 10 минут 23 секунды
3. global $db; определение переменной $db как глобальной
Это типа сострил?
Твой файл: Делаем global $db;
потом ты используешь его в другом файле
потом дали твой проект доработать мне. Я и думаю что же такое $db? Наверное "Даша - блядь", соглашаюсь с этим $db=true. И врезаюсь в твой проект. Всё что дальше, где использовалось $db падает….
Я конечно понимаю что это очень важная тема… Ну что ты приципился к бедной переменной db. Что она жить чтоль мешает. Я конечно понимаю что мое дерево плохое… Но это мое дерево. Я конечно понимаю что из за такого дерева большие проекты валятся, но у меня маленький проект. То что ты сказал я принял это во внимание… В следующих своих кодах я обязательно это учту. Но все-таки хотелось бы еще и получить по тому вопросу который я задал ранее… Если конечно это возможно.
Спасибо за внимание….
Ух Josh извини если что не так… Накипело… -
Март 23, 2010, 4:09 п.п., спустя 6 минут 22 секунды
Ух Josh извини если что не так… Накипело…
http://nbt1.ru/d/32961/d/image_28.jpg
В чем сейчас проблема? -
Март 23, 2010, 4:15 п.п., спустя 6 минут 18 секунд
Ух Josh извини если что не так… Накипело…
http://nbt1.ru/d/32961/d/image_28.jpg
В чем сейчас проблема?
Гениально… Ха Ха Ха…. Давайте не будем отклонятся от темы… Если даже в ней кто-то не видит никакой ценности или кому нечего сказать, давай те не будем засорять эфир, бесполезно сотрясать воздух. Быть может кто - то зайдет… захочет мне помоч… наткнется на всякий бред и и сразу уйдет… Так что прошу по существу товарищи заседатели… -
Март 23, 2010, 4:17 п.п., спустя 1 минуту 47 секунд
Я спросил по существу!!!!111 *пошла пена*Ух Josh извини если что не так… Накипело…
http://nbt1.ru/d/32961/d/image_28.jpg
В чем сейчас проблема?
Гениально… Ха Ха Ха…. Давайте не будем отклонятся от темы… Если даже в ней кто-то не видит никакой ценности или кому нечего сказать, давай те не будем засорять эфир, бесполезно сотрясать воздух. Быть может кто - то зайдет… захочет мне помоч… наткнется на всякий бред и и сразу уйдет… Так что прошу по существу товарищи заседатели… -
Март 23, 2010, 4:22 п.п., спустя 5 минут 33 секунды
а не проще всего засунь в куки клон элемента, в котором у тебя дерево, а потом применить его?Спустя 208 сек.smv, ты хочешь что бы тебе помогли сделать так как хочешь ты, а сам не делаешь так как тебе говорят, и даже видимо не читаешь
smv, бля, ну буквально вчера была ссылка про всю фигню
если внутреннее представление дерева в PHP - массив, то все просто. рекурсия может понадобиться для поиска. а чтобы взять целиком поддерево, достаточно просто скопировать элемент массива
http://phpclub.ru/faq/Tree/Internal?v=38y -
Март 25, 2010, 9:53 п.п., спустя 2 дня 5 часов 30 минут
<!–
// Функция для записи переменной в cookie
function setCookie (name, value) {
document.cookie = name + "=" + escape(value);
}
// Функция для чтения переменной из cookie
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
var t,lit,i;
function tree(liter) {
lit=liter;//литера
i=1;//счетчик
alert("А вот теперь страница обновилась и мы видим только первый уровень… так как переменная i=" + i);
alert("Значение куки" + getCookie("tree_view"));
t = setInterval(show, 5); // развертываем/сворачиваем с заданным интервалом
}
function show() {
var el;
if(el = document.getElementById(lit + "." + i)) {
setCookie("tree_view", lit); // Записываем значение переемнной i в куки
alert(getCookie("tree_view"));
el.style.display = (el.style.display == 'block')?'none':'block';
i++;
}
else clearInterval(t);
}
–>include ("connect_bd.php");
$sql_pid = "SELECT DISTINCT pid FROM menu";
$result_sql_pid = mysql_query($sql_pid, $db);
$pid_arr = array();
while ($row_result_sql_pid = mysql_fetch_array($result_sql_pid))
{
$pid_arr[] = $row_result_sql_pid['pid'];
}
function ShowTree($ParentID, $lvl) {
global $db;
global $lvl;
global $pid_arr;
$lvl++;
$sSQL="SELECT id,name,pid FROM menu WHERE pid=".$ParentID."";
$result=mysql_query($sSQL, $db);
if (mysql_num_rows($result) > 0) {
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];
$i++;
if (in_array($ID1, $pid_arr)){
$b1 = "<b>";
$b2 = "</b>";
$style1 = "onclick=\"tree('".$ID1."')\"";
}
if (!in_array($ID1, $pid_arr) || $lvl >= 2){
$style2 = "id='".$row['pid'].".".$i."' style='display: none';";
}
echo("<LI ".$style2.">\n");
echo("<span ".$style1." title='".$row["name"]."'>".$b1.$row["name"].$b2." </span> \n");
ShowTree($ID1, $lvl);
$lvl–;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
Подскажите пожалуйста как доработать Javascript чтоб развернутое дерево после обновления не сворачивалось. В JS ьам у меня коментарии есть когда какие переменные заношу в куки. Там в куки заношу переменную lit она показывает id "родителя". По смыслу я понял что что при обновлении страницы надо загружать функцию Show… Точнее не совсем ее, а написать так:
el = document.getElementById(lit + "." + i) , что опеределяет какрас тот нужный раздел который необходимо открыть
и вот это
el.style.display = (el.style.display == 'block')?'none':'block';
i++;
что собственно и означает что надо отобразить нужные нам элементы.
Но функция Show срабатывает когжа мы нажимаем мышкой на раздел, а мне надо сначала проверить есть ли куки и если они есть нам нужно отобразить дереов с помощью вот этих 3 строк которые привел чуть выше.
Как мне сделать так чтобы эти действия выполнялись при обновлении страницы? -
Март 26, 2010, 12:33 д.п., спустя 2 часа 40 минут 20 секунд
есть такая вещь как события.
вешаешся на событие загрузки ДОМа, и там выполняешь свою коварную ф-ию -
Март 26, 2010, 1:15 д.п., спустя 41 минуту 46 секунд
есть такая вещь как события.
вешаешся на событие загрузки ДОМа, и там выполняешь свою коварную ф-ию
спасибо огроменное … кажется мой мозг начал думать… что то уже получается -
-
Март 29, 2010, 3:32 п.п., спустя 3 дня 11 часов 9 минут
Сварганил вот такую функцию:function show_tree(){
var lit_cookie;
lit_cookie = getCookie("tree_view");
if (lit_cookie !== null){
document.getElementById(lit_cookie + "." + i).style.display = (document.getElementById(lit_cookie + "." + i).style.display == 'block')?'none':'block';
}
}
При загрузки или обновлении страницы ее запускаю (<body onload="show_tree()">)
Столкнулся с такой проблемой, что выводится только один элемент. Так как значению переменной i можно присвоить одно значение… Если перед отображением разделов написать var i=1, а после i++; то так все равно не работает.
Может я что то не так делаю? -
Март 29, 2010, 5:08 п.п., спустя 1 час 36 минут 46 секунд
Точнее я знаю что я делаю что то не так… Вопрос 1. Как мне сделать так что функция show_tree() извлекала все элементы? Ну и вообще подскажите где у меня ошибки
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!