![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Zmiuko |
|
||||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Такая проблема!
есть файл "base.txt" вида:
, где первые три ячейки данные, а четвертая показывает можно ли перемещать строку данных вних/вверх вдоль таблицы или оставить на месте. Далее присутствует скрипт "1.php" c кодом:
, который заставляет строки замещая друг-друга перемещаться вниз либо вверх вдоль таблицы. Cуть проблемы: необходимо перемещать строки так, чтобы закрепленные с индетификатором (допустим) "1" оставались на месте не меняя своего положения, другие же свободно перемещались. Не могу продумать код для функции. |
||||
|
|||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Никто не поможет? Идей нет никаких?
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
просто не понятно. зачем перемещать? с какой целью? просто отсортировать, не трогая отмеченные 1 строки? а по какому критерию?
|
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Это меню, которое я дергаю из текстового файла, цель: необходимо произвести перемещение всех строк по номерам, либо вверх, либо вниз.. в зависимости от того какую команду дадут (переместить на одну позицию вверх, либо вниз соответственно)... но не трогая те что под указателем "1"..
То есть, строки перемещаем между собой, а если впереди строка с указателем, либо две-три... пять!.. то их просто перепрыгиваем. ) |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
$str - исходный данные. $line - номер строки, которую требуется переместить. $up - направление перемещения, по умолчанию false-вниз, true - вверх. Возвращает строку с перемещенными линиями, либо не перемещенными, если передан неверный номер линии или стоит запрет на перемещение. Это сообщение отредактировал(а) enof - 13.3.2009, 22:41 |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Спасибо за старания, но не получается. Отдает пустой массив.
Надо бы разъяснить что к чему: Короче, файл "base.txt" база ссылок в меню, и представляет собой строки, с данными идущими через разделитель, т.е.: данные::данные::данные и т.д.:: указатель, передвигать ли данную строку либо перепрыгнуть ее в любом направлении так как она не должна двигаться потом файл подключаем и проходим по нему циклом: for($i=0;$i<count($arr);$i++) { $arr2 = explode("::", $arr[$i]); if($arr[3]=="1") { echo $arr[$i];} else { echo $arr[$i]." -- <a href=?id=${i}&up=>Поднять</a> -- <a href=?id=${i}&down=>Опустить</a>";} echo "<br>"; } На экран вымещается список содержимого файла, допустим, и если есть указатель, то ссылку прячем, если нет то имеем ввиду что данную строку можно передвинуть. Загвоздка в том, что функцией можно заставить перепрыгнуть предыдущую или последующую закрепленную ссылку без проблем, но а вот если их идут три, четыры, а то и пять подряд, а затем через одну нормальную еще закрепленная, что тогда? Наверно я тупой. Простите, господа, моск плавится... |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
![]()
Прекрасно работает, вторая строка меняется место с третьей. |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Прости, тут что-то у меня не так.
Выдает: <pre>данные #1 || данные #1 || данные #1 || 0 данные #2 || данные #2 || данные #2 || 0 данные #3 || данные #3 || данные #3 || 0 данные #4 || данные #4 || данные #4 || 1 данные #5 || данные #5 || данные #5 || 1 данные #6 || данные #6 || данные #6 || 1 данные #7 || данные #7 || данные #7 || 0 данные #8 || данные #8 || данные #8 || 1 данные #9 || данные #9 || данные #9 || 0 данные #10 || данные #10 || данные #10 || 1 данные #11 || данные #11 || данные #11 || 1 данные #12 || данные #12 || данные #12 || 0 , т.е. как и было.. ![]() Добавлено через 2 минуты и 52 секунды То есть пых выдает мне на экран тоже самое, что было и до обработки функцией. Ошибок нет. ![]() |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Zmiuko, копипаст из редактора, у меня все работает.
Попробуйте вместо \n поставьте везде \r\n |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
![]() |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Zmiuko, всмысле?
все перепрыгивает нормально, или я чего-то непонимаю? |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Извините за то что человек спит ))) действительно все просто, вот единственное не могу применить данную функцию к массиву, поможите?
Добавлено через 6 минут и 41 секунду Да, препрыгивает. Просто необходимо именно под массив данных это преобразовать. то у нас строки: данные #1 || данные #1 || данные #1 || 0 данные #2 || данные #2 || данные #2 || 0 данные #3 || данные #3 || данные #3 || 0 данные #4 || данные #4 || данные #4 || 1 а то массив: $base = array( array("данные #1","данные #1","данные #1","0"), array("данные #2","данные #2","данные #2","1"), array("данные #3","данные #3","данные #3","0"), array("данные #4","данные #4","данные #4","1"), array("данные #5","данные #5","данные #5","1"), array("данные #6","данные #6","данные #6","0") ); читаем же из файла и парсим потом. |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
del
Добавлено @ 00:09
вот, не увидел добавление к предыдущему посту. Это сообщение отредактировал(а) enof - 14.3.2009, 00:09 |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
))) все заработало...
Кста, тут не подскажешь такую заботу - в моем коде сверху идет допустим так, без закреплений всяких, но если подымаешь 1 запись вверх, то она становится последней, а последняя верхней, тоже самое и если вниз опускать, в твоей функции можно такое разрешение сделать, закрепление же будет исключением: допустим подымаем вторую, первая закреплена и вторая перепрыгивает закрепленную первую и становится последней, тоже самое если бы двигали незакрепленную первую - тоже бы последней стала? )) Первый раз с такой сортировкой сталкиваюсь. )) |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
||||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Прости косноязычие. Чтобы можно было допусти при поднятии вверх, достигнув начала перескочить в конец, а также при опускании перескочить в начало.
|
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
|
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
То есть было:
$base = array( array("данные #1","данные #1","данные #1","0"), array("данные #2","данные #2","данные #2","1"), array("данные #3","данные #3","данные #3","0"), array("данные #4","данные #4","данные #4","1"), array("данные #5","данные #5","данные #5","1"), array("данные #6","данные #6","данные #6","0") ); Мы "подняли" первую запись вверх и получили: $base = array( array("данные #6","данные #6","данные #6","0"), array("данные #2","данные #2","данные #2","1"), array("данные #3","данные #3","данные #3","0"), array("данные #4","данные #4","данные #4","1"), array("данные #5","данные #5","данные #5","1"), array("данные #1","данные #1","данные #1","0") ); или наоборот "опустили". Аналогично было бы если самая первая закреплена: $base = array( array("данные #1","данные #1","данные #1","1"), array("данные #2","данные #2","данные #2","1"), array("данные #6","данные #6","данные #6","0"), array("данные #4","данные #4","данные #4","1"), array("данные #5","данные #5","данные #5","1"), array("данные #3","данные #3","данные #3","0") ); , первая закреплена, тогда третья переходит на место шестой, а шестая на место третьей )) Добавлено через 23 секунды Извини, не прочел предыдущее )) Добавлено через 2 минуты и 25 секунд ))))))))))))))))) Слух, парень, спасибо тебе! Я два года не занимался пыхом - голова поэтому пухнет, и первый цикл что я привел для примера - в далеком 2004 году придумали... спасибо тебе огромнейшее! )) |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Все так и есть
![]() |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
А можно описать последнее?
Допустим, если внедрить кроме 1, которая закрепляет сообщение и их обездвиживает, еще и 2... которая отвечает еще за те что по-убыванию крепятся только сверху: Было: $base = array( array("данные #1","данные #1","данные #1","0"), array("данные #2","данные #2","данные #2","1"), array("данные #3","данные #3","данные #3","0"), array("данные #4","данные #4","данные #4","1"), array("данные #5","данные #5","данные #5","2"), array("данные #6","данные #6","данные #6","0"), array("данные #7","данные #7","данные #7","1"), array("данные #8","данные #8","данные #8","1"), array("данные #9","данные #9","данные #9","2"), array("данные #10","данные #10","данные #10","2"), array("данные #11","данные #11","данные #11","0") ); А стало: $base = array( array("данные #5","данные #5","данные #5","2"), array("данные #9","данные #9","данные #9","2"), array("данные #10","данные #10","данные #10","2"), array("данные #1","данные #1","данные #1","0"), array("данные #2","данные #2","данные #2","1"), array("данные #6","данные #6","данные #6","0"), array("данные #4","данные #4","данные #4","1"), array("данные #3","данные #3","данные #3","0"), array("данные #7","данные #7","данные #7","1"), array("данные #8","данные #8","данные #8","1"), array("данные #11","данные #11","данные #11","0") ); , после того как мы третье сообщение передвинули вниз? или легче сначала выдирать сравнением все с двойками и вставлять в начало обработанного функцией массива?... хотя интересна возможность в функции.. |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
те, что с двойками, всегда должны быть сверху?
Тогда с единицами записи будут смещаться, что противоречит условию =) |
|||
|
||||
Zmiuko |
|
|||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Тогда выходит, что требуется обработка массива до начала работы функции?
Получается, пробегаем по массиву циклом выдераем все что с двойками, оставшееся обрабатываем нашей функцией, а затем присоединяем к началу массива то что отобрали?... просто думаю, как лучше )) Добавлено через 9 минут и 14 секунд И уточняющий вопрос "чайника" ))))) на пятой, а уже скорее всего скоро будет шестая версия пыха, данная функция пойдет? )) |
|||
|
||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
На шестой версии, скорей всего будет работать, обещанные изменения, вышеприведенную функцию, насколько я помню не коснутся. Да и не используется здесь ничего, кроме пары функций для работы с массивами и операторов. Добавлено @ 01:31 э.. у вас 4 версия? Это сообщение отредактировал(а) enof - 14.3.2009, 01:32 |
|||
|
||||
Zmiuko |
|
||||
![]() http://zmiuko.ru ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 8.10.2008 Репутация: 2 Всего: 2 |
Сервер 4-ой и отдельно 5-ой, на всех тестирую, поскольку к примеру обработка некоторых методов отсыла PNG формата из флеш клипа в 4-й и 5-й версиях сурово отличаются... Хотя зря бил панику - все урегулирывается снятием флажка в конфиге через htaccess ))) А так, прав, все старо как мир )) Спасибо, что потратил время на мои маразмы, дай бог тоже когда-нить помогать чем-то существенным буду )))
Добавлено через 6 минут и 28 секунд Вторая функция, было:
Стало:
Все отлично идет, пока не начинаешь обрабатывать 10, 11 и 12 записи... Добавлено через 9 минут и 29 секунд Ошибка, наверное из-за того, что из массива выносим записи с двойками, а считаем массив (количество записей) вместе с ним. Добавлено через 10 минут и 39 секунд Нет, не из-за этого... хм.. ![]() |
||||
|
|||||
enof |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |