<?php
$fr = file("tx/razdel.txt");
//$tmp = "";
//$tmp2 = "";
//$tmp3 = "";
$pos = 0;
for ($i = 0; $i < count($fr); $i++) {
$pos2 = $pos+1;
$pos3 = $pos2+1;
$pos4 = $pos3+1;
$ifs = false;
$ar0 = explode("^", trim($fr[$i-1]));
$ar = explode("^", trim($fr[$i]));
$ar2 = explode("^", trim($fr[$i+1]));
//первое вложение begin
If ($ar[1] <> "") {
If ($ar[1] <> $tmp) {
If ($ar[2] == "") {
echo "
<tr><td><img src='/pixel.gif' width=15 height=15></td>
<td nowrap><img src='images/doc.gif' width=16 height=16 border=0> <a href=\"javascript:selectr('$ar[0]', '$ar[1]');\" class='cap2'>$ar[1]</a></td></tr>
<td></td><td>";
}
Else {
echo "
<tr><td><img id=node$pos src='images/node_plus.gif' width=15 height=15 onClick=\"showtree($pos)\"></td>
<td nowrap><img id=folder$pos src='images/closed.gif' width=16 height=14> $ar[1]</td></tr>
<tr><td></td><td>";
}
$tmp = $ar[1];
}
Else {
If ($ar2[1] <> $ar[1]) {
echo "</td></tr>";
}
}
$ifs = true;
}
//первое вложение end
//второе вложение begin
If ($ar[2] <> "") {
If ($ar[2] <> $tmp2) {
If ($ar0[1] <> $ar[1]) { echo "<table border=0 CELLSPACING=0 CELLPADDING=0 style='display: none' id=table$pos>"; }
If ($ar[3] == "") {
echo "
<tr><td><img src='/pixel.gif' width=15 height=15></td>
<td nowrap><img src='images/doc.gif' width=16 height=16 border=0> <a href=\"javascript:selectr('$ar[0]', '$ar[1] > $ar[2]');\" class='cap2'>$ar[2]</a></td></tr>
<td></td><td>";
}
Else {
echo "
<tr><td><img id=node$pos2 src='images/node_plus.gif' width=15 height=15 onClick=\"showtree($pos2)\"></td>
<td nowrap><img id=folder$pos2 src='images/closed.gif' width=16 height=14> $ar[2]</td></tr>
<tr><td></td><td>";
}
$tmp2 = $ar[2];
}
Else {
If ($ar2[2] <> $ar[2]) {
echo "</td></tr>";
}
}
If ($ar2[1] <> $ar[1]) {
echo "</table>";
}
$ifs = true;
}
//второе вложение end
//третее вложение begin
If ($ar[3] <> "") {
If ($ar[3] <> $tmp3) {
If ($ar0[2] <> $ar[2]) { echo "<table border=0 CELLSPACING=0 CELLPADDING=0 style='display: none' id=table$pos2>\n"; }
If ($ar[4] == "") {
echo "
<tr><td><img src='/pixel.gif' width=15 height=15></td>
<td nowrap><img src='images/doc.gif' width=16 height=16 border=0> <a href=\"javascript:selectr('$ar[0]', '$ar[1] > $ar[2] > $ar[3]');\" class='cap2'>$ar[3]</a></td></tr>
<td></td><td>\n";
}
Else {
echo "
<tr><td><img id=node$pos3 src='images/node_plus.gif' width=15 height=15 onClick=\"showtree($pos3)\"></td>
<td nowrap><img id=folder$pos3 src='images/closed.gif' width=16 height=14> $ar[3]</td></tr>
<tr><td></td><td>";
}
$tmp3 = $ar[3];
}
Else {
If ($ar2[3] <> $ar[3]) {
echo "</td></tr>";
}
}
If ($ar2[2] <> $ar[2]) {
echo "</table>";
}
$ifs = true;
}
//третее вложение end
//четвертое вложение begin
If ($ar[4] <> "") {
If ($ar[4] <> $tmp4) {
If ($ar0[3] <> $ar[3]) { echo "<table border=0 CELLSPACING=0 CELLPADDING=0 style='display: none' id=table$pos3>\n"; }
If ($ar[5] == "") {
echo "
<tr><td><img src='/pixel.gif' width=15 height=15></td>
<td nowrap><img src='images/doc.gif' width=16 height=16 border=0> <a href=\"javascript:selectr('$ar[0]', '$ar[1] > $ar[2] > $ar[3] > $ar[4]');\" class='cap2'>$ar[4]</a></td></tr>
<td></td><td>\n";
}
Else {
echo "
<tr><td><img id=node$pos4 src='images/node_plus.gif' width=15 height=15 onClick=\"showtree($pos4)\"></td>
<td nowrap><img id=folder$pos4 src='images/closed.gif' width=16 height=14> $ar[4]</td></tr>
<tr><td></td><td>";
}
$tmp4 = $ar[4];
}
Else {
If ($ar2[4] <> $ar[4]) {
echo "</td></tr>";
}
}
If ($ar2[3] <> $ar[3]) {
echo "</table>";
}
$ifs = true;
}
//четвертое вложение end
If ($ifs == true) {
$pos = $pos+2;
}
}
?>
И вообще не понимаю логику скрипта, кто по сооброзительней в двух словах объясните пожж?
Спустя 5 минут, 9 секунд (24.02.2009 - 03:38) vitaver написал(а):
Да, да совсем забыл, фаил razdel.txt состаит вот так:
1^Музыка^Хиты^Любэ^Атас
2^Музика^Хиты^ДДТ^Осень
.......
50^Кино^Новинки^Боевики^Стиляги
Ну и так далее.
1^Музыка^Хиты^Любэ^Атас
2^Музика^Хиты^ДДТ^Осень
.......
50^Кино^Новинки^Боевики^Стиляги

Ну и так далее.
Спустя 1 день, 23 часа, 17 минут, 22 секунды (26.02.2009 - 02:55) vitaver написал(а):
ошибка по аглиски:
Notice: Undefined offset: -1 in (выделенной красным строке)
Notice: Undefined offset: -1 in (выделенной красным строке)
Спустя 39 минут, 35 секунд (26.02.2009 - 03:35) vitaver написал(а):
И вообще я не понимаю этого:
$ar0 = explode("^", trim($fr[$i-1]));
это как и от куда он начинает считать? Если $i = 0 то ;$ar0 = -1 ведь это тоже не правельно. Уже неделю висит тема так никто мне и не подскажет как это работает? Знатоки php Вас прошу о помоши консультирования!!!!!
$ar0 = explode("^", trim($fr[$i-1]));
это как и от куда он начинает считать? Если $i = 0 то ;$ar0 = -1 ведь это тоже не правельно. Уже неделю висит тема так никто мне и не подскажет как это работает? Знатоки php Вас прошу о помоши консультирования!!!!!
Спустя 3 минуты, 55 секунд (26.02.2009 - 03:39) twin написал(а):
Так на первый виток цикла приходится $i = 0; То есть $i-1 = -1; А с отрицательными числами беда...
Спустя 5 минут, 10 секунд (26.02.2009 - 03:44) vitaver написал(а):
Цитата (twin @ 26.02.2009 - 00:39) |
Так на первый виток цикла приходится $i = 0; То есть $i-1 = -1; А с отрицательными числами беда... |
Так как быть то, вот в чем вопрос? Я выложил на форум потому что самому не хватает сообразить в чем здесь подвох.
Спустя 7 минут, 59 секунд (26.02.2009 - 03:52) twin написал(а):
Я не совсем понял, кто должен открываться. А ставить лень и некогда. Чуть подробнее, если не трудно. Что в файле понятно, а каким должен быть результат?
Спустя 2 часа, 27 минут, 10 секунд (26.02.2009 - 06:19) vitaver написал(а):
результат должен быть как в проводнике XP
+музика
+кино
-музыка
+любэ
+кино
+кино
-музика
-любэ
+хиты
+альбомы
+кино
-кино
+художественные фильмы
+боевики
в принципе вот так, католог и файла razdel.php
+музика
+кино
-музыка
+любэ
+кино
+кино
-музика
-любэ
+хиты
+альбомы
+кино
-кино
+художественные фильмы
+боевики
в принципе вот так, католог и файла razdel.php
Спустя 1 час, 5 минут, 38 секунд (26.02.2009 - 07:25) kirik написал(а):
Не стал трэд читать..
Цитата (vitaver @ 25.02.2009 - 22:19) |
результат должен быть как в проводнике XP |
Только сегодня написал подобное.
Вот код, если захочешь, можешь пользовать
Там по структуре массива должно быть понятно все, немного поясню:
Элементы с числовыми индексами < 11, это описание оформления каждого уровня. Элемент с индексом 11 - корневая папка (если нужно). Все остальные буквенные индексы - элементы меню. Они могут быть как просто 'часть_ссылки' => 'Это Название Кнопки', так и массивом такого содержания:
Вот код, если захочешь, можешь пользовать

Элементы с числовыми индексами < 11, это описание оформления каждого уровня. Элемент с индексом 11 - корневая папка (если нужно). Все остальные буквенные индексы - элементы меню. Они могут быть как просто 'часть_ссылки' => 'Это Название Кнопки', так и массивом такого содержания:
PHP |
'часть_ссылки' => array( |
В функцию передается параметр $selected, это массив в котором по уровням определяется текущее положение, чтобы открыть нужные менюхи. Также параметр $root, который отвечает за тоже что и элемент массива с индексом 11, но у "одинадцати" приоритет выше.
Я особо не наводил красоту, думаю разберешься.
Тут посмотреть, тут исходник.
Спустя 18 минут, 47 секунд (26.02.2009 - 07:44) vitaver написал(а):
kirik
Да в принципе понятно, спасибо!!!
только вот еще вопрос, что означает эта строка:
$ar0 = explode("^", trim($fr[$i-1]));
именно в -1 вопрос? как он счет ведет? подскажешь?
Да в принципе понятно, спасибо!!!
только вот еще вопрос, что означает эта строка:
$ar0 = explode("^", trim($fr[$i-1]));
именно в -1 вопрос? как он счет ведет? подскажешь?
Спустя 29 минут, 42 секунды (26.02.2009 - 08:13) kirik написал(а):
Цитата (vitaver @ 25.02.2009 - 23:44) |
именно в -1 вопрос? как он счет ведет? подскажешь? |
Подскажу ровно так же как и twin

Ошибку можно пофиксить так:
PHP |
$ar0 = ($i > 0) ? explode("^", trim($fr[$i-1])) : 0; |