Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2017, 11:12   #1
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию «Тяжёлая» страница — дайте совет, пожалуйста

Здравствуйте. Делаю администраторскую зону для сайта одного ВУЗа. Появились проблемы по вёрстке таблиц расписания занятий.
Выбор уроков я сделал с помощью <select><option></option></select>. То есть в одном select написал все занятия, и потом скопировал это на все ячейки таблицы (на все дни, курсы - см. картинку), и каждому из них задал своё имя (name). Правильно ли я сделал? Учитывая, что один и тот же текст (десятки <option></option>) повторяется сотни раз, правильность у меня вызывает сомнения.
Этот файл у меня получился на 1,5МБ. А я хотел туда же ещё и такую же таблицу расписания для вечернего отделения хотел добавить - страница получилась бы где-то 3,5МБ.
В общем, решил я так: оставить, как есть (т.к. правильного варианта не знаю), и загружать каждую таблицу с помощью Аякс.
Кто знает, подскажите пожалуйста совет - может, есть более правильный путь решения таких проблем? Или для браузеров такое количество селектов не так уж и много? (хотя, и в моём достаточно мощном компьютере браузет подвисает при загрузке этой страницы)
И потом, я же собираюсь внизу сделать кнопку "Сохранить", и все данные сохранить в БД. Каждой ячейке - свой отдельный запрос. Столько запросов за раз - это нормально для БД (использую MySQL).
j1.jpg
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 12:04   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну копипаст это точно плохо, как вы потом изменять их будете?
Как минимум надо не копипастить, а выводить как-то так (если РНР):
Код:
<select>
<?php echo $lessonOptions; ?>
<select>
Ну и цикл использовать вместо копипаста каждой ячейки.

И не хардкодить имена уроков, а загружать из БД.

Для уменьшения веса можно создавать селекты на клиенте (JS).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.08.2017, 13:23   #3
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

Alex11223, сначала я так и хотел сделать, но подумал — это же у меня закрытый отдел, туда заходят логином и паролем. А если я буду так соединять файлы (они же, получаются, доступны всем - нет проверки пароля), это будет безопасно?
Оу, пардон, я как-то понял, что вы говорите о require_once()...
Спасибо, понял, так и буду делать.
Булат Азат улы

Последний раз редактировалось Bulat Ibrahim; 30.08.2017 в 13:28.
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 15:23   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

1) ну не совсем о том он говорил)
а о выводе в цикле и применении одной функции для построения селекта... что совсем не подразумевает require_once()

2) Делать один большой запрос ..а не кучу маленьких.
3) А это такая задача чтоб сразу все расписание было видно? Может вводить по курсам, или по дням недели?
4) ну и в идеале я бы сделал так:
Отображается например все расписание, красиво просто таблицами или дивами, при клике на определенную ячейку (урок) аяксово подгружается селект позволяющий выбрать другой урок, при выборе - идет запрос на изменение в БД, в ячейке показывается новый выбранный урок ...
все счастливы, размеры всего минимальны, запросы маленькие и простые, препод составляющий расписание не матерится что пропала связь и вся заполненная таблица не сохранилась... .максимально что может не сохраниться - одно значение )
ADSoft вне форума Ответить с цитированием
Старый 30.08.2017, 16:16   #5
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

ADSoft, а в четрёртом пункте вы мне отличную идею подкинули, спасибо! Я, как всегда, сам как-то не догадался...
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 16:28   #6
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

ADSoft, я задавал каждому селекту разные имена (например: 1курсГруппаАПонУрок1). Теперь мне нужно селекту задать одно имя, а ячейкам td разные идентификаторы, и при клике на них скриптом показать скрытый селект в форме и кнопку "Сохранить", да? А как после клика "Сохранить" узнать, куда именно в БД сохранить данные? Селект-то, получается, единый?
Я просто впервые составляю админку — не всё понимаю, учусь...
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 16:55   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

не надо никаких скрытых селектов...
я же грю - подгружать через аякс, при подгрузке брать данные ячейки (можно через data- атрибуты) и их вместе с значением аяксом же передавать на сервер
типа {"kurs": 1, "day" :2, "lesson" :4, "value" : 3}
и сохранять не только при выборе но и при уходе с селекта через onBlur

почитайте про Ajax...
ADSoft вне форума Ответить с цитированием
Старый 30.08.2017, 17:32   #8
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

ADSoft, я всё понял, спасибо большое! Очень полезный опыт передали!
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 17:40   #9
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

ADSoft, позвольте вам ещё один вопрос задать на счёт Аякса, про безопасность.
Вот я отправляю данные через яваскрипт. Он открыт - его может посмотреть каждый. А там, по сути, все данные написаны. А не может злоумышленник открыть страницу, к которому у него нет доступа (разумеется, инфо не покажется), сделать, допустим, в фаербаге данные с такими же именами и идентификаторами, что указаны в яваскрипте (например, при клике на объект с идентификатором "ИД" отправить его значение value в БД), и кликнуть по созданному собой же объекту и отправить созданные им же данные на сервер?
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 30.08.2017, 17:49   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какие именно данные?

Дык "может открыть" или "нет доступа"?

У каждого запроса на сервере, к которому не должно быть доступа у всех, должна быть проверка на авторизованность и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 30.08.2017 в 17:52.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста дайте совет 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