|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.08.2017, 11:12 | #1 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
«Тяжёлая» страница — дайте совет, пожалуйста
Здравствуйте. Делаю администраторскую зону для сайта одного ВУЗа. Появились проблемы по вёрстке таблиц расписания занятий.
Выбор уроков я сделал с помощью <select><option></option></select>. То есть в одном select написал все занятия, и потом скопировал это на все ячейки таблицы (на все дни, курсы - см. картинку), и каждому из них задал своё имя (name). Правильно ли я сделал? Учитывая, что один и тот же текст (десятки <option></option>) повторяется сотни раз, правильность у меня вызывает сомнения. Этот файл у меня получился на 1,5МБ. А я хотел туда же ещё и такую же таблицу расписания для вечернего отделения хотел добавить - страница получилась бы где-то 3,5МБ. В общем, решил я так: оставить, как есть (т.к. правильного варианта не знаю), и загружать каждую таблицу с помощью Аякс. Кто знает, подскажите пожалуйста совет - может, есть более правильный путь решения таких проблем? Или для браузеров такое количество селектов не так уж и много? (хотя, и в моём достаточно мощном компьютере браузет подвисает при загрузке этой страницы) И потом, я же собираюсь внизу сделать кнопку "Сохранить", и все данные сохранить в БД. Каждой ячейке - свой отдельный запрос. Столько запросов за раз - это нормально для БД (использую MySQL). j1.jpg
Булат Азат улы
|
30.08.2017, 12:04 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну копипаст это точно плохо, как вы потом изменять их будете?
Как минимум надо не копипастить, а выводить как-то так (если РНР): Код:
И не хардкодить имена уроков, а загружать из БД. Для уменьшения веса можно создавать селекты на клиенте (JS).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
30.08.2017, 13:23 | #3 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
Alex11223, сначала я так и хотел сделать, но подумал — это же у меня закрытый отдел, туда заходят логином и паролем. А если я буду так соединять файлы (они же, получаются, доступны всем - нет проверки пароля), это будет безопасно?
Оу, пардон, я как-то понял, что вы говорите о require_once()... Спасибо, понял, так и буду делать.
Булат Азат улы
Последний раз редактировалось Bulat Ibrahim; 30.08.2017 в 13:28. |
30.08.2017, 15:23 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
1) ну не совсем о том он говорил)
а о выводе в цикле и применении одной функции для построения селекта... что совсем не подразумевает require_once() 2) Делать один большой запрос ..а не кучу маленьких. 3) А это такая задача чтоб сразу все расписание было видно? Может вводить по курсам, или по дням недели? 4) ну и в идеале я бы сделал так: Отображается например все расписание, красиво просто таблицами или дивами, при клике на определенную ячейку (урок) аяксово подгружается селект позволяющий выбрать другой урок, при выборе - идет запрос на изменение в БД, в ячейке показывается новый выбранный урок ... все счастливы, размеры всего минимальны, запросы маленькие и простые, препод составляющий расписание не матерится что пропала связь и вся заполненная таблица не сохранилась... .максимально что может не сохраниться - одно значение ) |
30.08.2017, 16:16 | #5 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
ADSoft, а в четрёртом пункте вы мне отличную идею подкинули, спасибо! Я, как всегда, сам как-то не догадался...
Булат Азат улы
|
30.08.2017, 16:28 | #6 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
ADSoft, я задавал каждому селекту разные имена (например: 1курсГруппаАПонУрок1). Теперь мне нужно селекту задать одно имя, а ячейкам td разные идентификаторы, и при клике на них скриптом показать скрытый селект в форме и кнопку "Сохранить", да? А как после клика "Сохранить" узнать, куда именно в БД сохранить данные? Селект-то, получается, единый?
Я просто впервые составляю админку — не всё понимаю, учусь...
Булат Азат улы
|
30.08.2017, 16:55 | #7 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
не надо никаких скрытых селектов...
я же грю - подгружать через аякс, при подгрузке брать данные ячейки (можно через data- атрибуты) и их вместе с значением аяксом же передавать на сервер типа {"kurs": 1, "day" :2, "lesson" :4, "value" : 3} и сохранять не только при выборе но и при уходе с селекта через onBlur почитайте про Ajax... |
30.08.2017, 17:32 | #8 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
ADSoft, я всё понял, спасибо большое! Очень полезный опыт передали!
Булат Азат улы
|
30.08.2017, 17:40 | #9 |
Форумчанин
Регистрация: 24.04.2015
Сообщений: 199
|
ADSoft, позвольте вам ещё один вопрос задать на счёт Аякса, про безопасность.
Вот я отправляю данные через яваскрипт. Он открыт - его может посмотреть каждый. А там, по сути, все данные написаны. А не может злоумышленник открыть страницу, к которому у него нет доступа (разумеется, инфо не покажется), сделать, допустим, в фаербаге данные с такими же именами и идентификаторами, что указаны в яваскрипте (например, при клике на объект с идентификатором "ИД" отправить его значение value в БД), и кликнуть по созданному собой же объекту и отправить созданные им же данные на сервер?
Булат Азат улы
|
30.08.2017, 17:49 | #10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Какие именно данные?
Дык "может открыть" или "нет доступа"? У каждого запроса на сервере, к которому не должно быть доступа у всех, должна быть проверка на авторизованность и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 30.08.2017 в 17:52. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пожалуйста дайте совет | KseniaSurikova | Свободное общение | 0 | 24.03.2017 22:27 |
Дайте совет | rusalka569 | Помощь студентам | 3 | 27.09.2012 21:34 |
дайте совет! | Cassius | Общие вопросы Delphi | 6 | 10.12.2011 02:43 |
Пожалуйста,дайте совет. | sawer5 | Помощь студентам | 2 | 12.01.2010 17:54 |
Пожалуйста,дайте совет[Console C++] | sawer5 | Помощь студентам | 2 | 31.12.2009 15:52 |