За последние 24 часа нас посетили 22785 программистов и 1258 роботов. Сейчас ищут 755 программистов ...

Как вернуться на страницу отредактированного сообщения?

Тема в разделе "PHP для новичков", создана пользователем `p r o x y, 23 июл 2010.

  1. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    Время доброго.

    Условие:
    1. Есть список сообщений: темы форума, блога, комментариев и т.д.
    2. На 75 странице, из 100, редактируется сообщение.

    Вопрос: После сохранения/отмены редактирования, как, без использования JS, вернуться на страницу, содержащую это сообщение?


    Вариант 1
    После сохранения/отмены редактирования считать все сообщения темы форума, перебрать все сообщения до отредактированного, при этом посчитать все сообщения по порядку от 1 и далее. Так, зная порядковый номер сообщения и количество сообщений на странице, можно высчитать нужную станицу: порядковый номер разделить на кол. сообщений = результат округлить до целого и +1.

    Технологии безошибочная, но очень объемная в выполнении.


    Вариант 2
    Сохранять в сессии номер просматриваемой страницы.

    В этом случае, если в процессе редактирования сообщения msgedit.php?topic=1&msg=12, перейти (вручную вписав адрес) на страницу msgedit.php?topic=2&msg=12, то при сохранении/отмены редактирования будет произведен переход на неверную страницу.

    Вариант передавать номер страницы в запросе подвержен такой же ошибке.


    Есть ли решение менее объемное чем вариант 1?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    в сессии хранить предыдущий урл, включая анкор. Что такое есть анкор, знаете?
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    анкор есть. этого достаточно.
    =)
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Э? Анкор в составе URL не передается браузером... Надо специально переменную генерить, типа &anc=id_сообщения.

    Upd. потом вычислить URL страницы по номеру сообщения, и перенаправить на URL#id
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Убивал бы тех, кто сохраняет страницу в сессию и потом делает оттуда редирект. Прям для однозадачных мозгов решение какое-то.
    Первый вариант вполне себе, тем более что у нормальных форумов уже есть функционал редиректа на нужную страницу с якорем на сообщение по id сообщения. Подвариант - передавать текущую страницу в параметры формы редактирования, он менее ресурсоемкий, но увеличивает хаос.
     
  6. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    igordata
    Тогда может произойти беда, что описал в варианте2.
    да =)) и в этом случае прав [vs]
    Да он и не нужен, достаточно того, что передается id редактируемоего сообщения. И при включенном JS редактирование будет через AJAX, тут то вообще шикарно, вопрос в варианте если только PHP.


    [vs]
    Как именно вычислить-то? Как предлагал в варианте1 или по другому как-то?


    MiksIr
    Чего ж так критично? Главное же - результат. И если результат выполняет поставленную задача на все 100 (с учетом того, что в задаче так же требуется и качество выполнения: качество результат для пользователя, минимаяльная затрата времени и ресурсов сервера) то, имхо, это лучшее решении.

    Хм, так вот и вопрос в этом - в чем заключается технология функционала редиректа? Т.к. реализовываю банальное редактирование комментариев... Я бы делал по варианту1. Просто решение ресурсозатратное, и думаю, может есть лучший и такой же беспроигрышный вариант.
     
  7. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    igordata
    Хм, не подумал сразу, и ошибся. Дело в том, что от хранения всего URI в сесии - выигрыша никакого. Т.к. если в URI есть номер страницы, то при ручной правке адреса будет ошибка (если брать номер страницы из сесии). Пока, все так же, остается вариант1.

    Есть ли предложения оптимезации варианта1 или более лучший?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Вычислить же, а не запомнить.
    [sql]SELECT COUNT(*) FROM `messages` WHERE `id`<'124531' and `topicId`='12'[/sql]
    потом подели на количество сообщений на странице - вот и номер страницы.
     
  9. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    [vs]
    ооооооой-ё, приплыли..сааавсем заработался я, пора на покой )) Вот оно - реализация варианта1 в SQL. Ох туплю-туплю.

    Благодарю всех, решение найденно.
     
  10. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    То решение, которое придумал программист только потому, что ему так удобнее сделать, а не потому, что так удобнее конечному пользователю - дерьмо. Именно по-этому программистов нельзя подпускать к проектированию интерфейсов, а нормальных пользователей будет перекидывать на хрен знает какую страницу после редактирования сообщения, ибо пользователь оказался многозадачным, и открыл в соседних окнах браузера несколько других страниц.
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    +1 в конечном счете все это делается для пользователя и надо уметь поставить себя на его место
    тут не соглашусь, если делаешь для себя и на совесть то все сделаешь как надо
    мало платите? не опытный программист?
     
  12. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    MiksIr
    О чем речь:
    1) Создание сайта 1-2мя людьми: дизайнер+прогер (html/css, php, js).
    2) Группой: руководитель проекта, менеджер, дизайнер, верстальщик, прогер (php, js или отдельно на каждое направление), flash прогер, копирайтер, группа бета-тестеров ....

    Если про вариант 1. То все, имхо, упирается в ТЗ. Следовательно: работать над ТЗ до посинения, зеленения и фиолетования =D Соответственно ТЗ необходимо составлять продуманно, «с головой». А потом и реализовать его грамотно.

    Если вариант 2. То, как правило, весь вопрос в деньгах. Хотя частенько и в квалифицированности руководителя проекта.

    Специально же написал:
    Что бы показать, что если результат работы сайта – правильный, верный, надежный, ресурсоемкий, безопасный и полностью отвечает требованиям пользователей и разработчиков – то это хороший вариант. Даже, если в коде сайта URI сохраняются/считываются в/из сессию.

    Т.е. ко всем стадиями разработки сайта – от проектирования до реализации – необходимо подходить грамотно.

    Про решения которые
    – целиком и полностью согласен. Каждый из разработчиков должен заниматься своим делом. А уж если нет достаточных навыков, что бы сделать хотя бы нормально – то уж лучше учится, учиться, учиться ))
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Нет, не прав. =)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    дальше не читал. вобще не вижу проблемы переходить туда-сюда при редактировании. делаю это регулярно, механизм ясен как день. =)

    а если кто-то когда-то под Новый Год засунет фиг в розетку и не попадет на нужный пост - то пусть почешет репу и тыкнет куда хотел ручками.
     
  15. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    igordata
    Я про то, что якорь в URI, как таковой #qwe, на сервер не передается. Или я в чем то ошибаюсь?

    Эмм, ну да, проблем нет. Просто ступил я и не додумался сам:
    [sql] SELECT COUNT(*) FROM `messages` WHERE `id`<'124531' and `topicId`='12'[/sql][/sql]
     
  16. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Что ж, если вы свой фиг уже вытащили из розетки - поздравляю. Но на будущее скажу - мозги стимулируются другими методами. Даже у программистов.
     
  17. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    А вот выше посмотри. Человек тоже считает, что делает "на совесть как надо".
    А от увеличения количеста денег человек не начинает работать качественно, это факт. Ибо перепутана причина со следствием.
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    MiksIr
    у меня есть замечательный инструмент для определения, удобства интерфейса - мама, сажаю ее если разбирается, значит все нормально xD
    В данном случае ajax бы делал, удобно и гемороя меньше
    Да, человек начинает работать качественно когда ему просто стремно плохо выполнять свою работу, а от вас требуется правильно сформулировать задачу и обеспечить комфортные условия в том числе платить хорошую зарплату
    чем вы отличаетесь вы от программиста в плане мозгов?
     
  19. `p r o x y

    `p r o x y Активный пользователь

    С нами с:
    21 июл 2010
    Сообщения:
    32
    Симпатии:
    0
    MiksIr
    Вижу, что вы каждую строчку/фразу - утрируете. Мы же не в судебном заседании же, где требуется изложение во всех аспектах и со всеми уточнениями.

    Здесь имел ввиду, что например в 5000р. «не влезет» тестирование сайта на все-все-все возможные уязвимости, проблемы, ошибки, а так же и разработка наилучшего по удобство и красивостям дизайна и т.д., т.п. Но само собой, да же за эту стоимость необходимо выполнять работу грамотно и качественно. Другое дело в 50 000р., 100 000р. и т.д. ))
    А уж то – на сколько хорошо и правильно выполняют свою работы программеры, верстальщики и т.д. разработчики сайта – то это задача руководителя проекта (и его квалифицированности, опытности).

    Вариант же, когда 1 человек разрабатывает весь сайт сверху донизу:
    Это в мой адрес? То на это уже отвечал:

    Padaboo
    Эхх...эхх....ну так писал же, что AJAX то будет, само собой - это же так сказачно удобно. Но сначала делаю PHP версию, что бы сайт был целиком и полностью работоспособным без JS. А уж JS наложить сверху потом - это элементарно )
     
  20. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Неа, про цитату в моем сообщении выше
     
  21. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Мамы - ограниченный ресурс.... достаточно поверхностное тестирование ;)
    Неа, в большинстве случаев не работает. Мотивация программистов - вообще отдельная большая тема, не могу рассуждать про это. Знаю только одно - как только человек начинает рассуждать, что мол денег мало, по-этому стараться он не будет и все такое - в сад такого. Программист - это не штангист, которому нужно напрячься, что бы вес поднять - как он умеет делать, так он и делает. Может учиться тому, что не умеет, а может кодить на своем уровне всю жизнь - но это уже другая тема ;)
     
  22. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    MiksIr
    т.е. вы хотите сказать, что обезьяну можно научить программировать и она будет "кодить на своем уровне" ?
    есть типовые задачи, а есть задачи где придется быть "штангистом"
    я вам так про любую профессию сказать могу xD вот как дворника научили подметать так он и подметает, вот как начальника научили вести дела, так он и ведет дела, может конечно чему то учиться, а может думать, что он самый умный всю жизнь :DDDDD
    ps: бабушка это самое злое тестирование)
     
  23. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Padaboo
    сдай бабушку в аренду для тестирования сайтов, будет хоть деньги приносить))
     
  24. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Совершенно верно, обезьяна будет кодить на своем уровне - бездумного тыкания в клавиатуру. И в любой профессии точно так же - это вы верно подметили. Только программист все же не штангист - выше головы своих знаний и привычек он не прыгнет. А если вы про "поработать без сна пару дней" - то я вообще не об этом.
     
  25. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    MiksIr
    я про реализацию не типовых задач, где нужен не стандартный подход, где нужно думать, а не просто кодить как где то увидел или в универе научили, архитектура сильно нагруженных приложений вам в пример
    И там есть свои примеры и приемы, но применяя их нужно думать, писать вещи подходящие только под конкретную задачу и т.п.
    Вы можете описать воплощения проекта в жизнь, в вашей фирме, от задумки в голове до релиза?