Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ребят, всем привет! Написал сам небольшой скрипт вывода данных из таблицы mysql на страницу. Он сам использует заголовки таблицы мускула в качестве заголовков таблицы html. Пользователю просто нужно написать запрос скульный, остальные столбцы и заголовки и данные выведутся сами. Все работает как надо, просто прошу глянуть, как можно еще упростить выражение. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 00:03 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Конечный цикл можно чуть проще Код: php 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 09:21 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Первый цикл тоже можно заменить на while, тогда не надо будет предварительно считать сколько там столбцов в запросе :) Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 11:24 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
anvano,Ренат, спасибо большое за советы!! Сейчас подточу в соответствие с вашими рекомендациями! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 13:43 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, Если честно я бы вобще упростил до минимума: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 18:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ренат, спасибо! Ход мысли и логику осилил, да, это вообще здорово так обертывать переменные. У меня есть два вопроса, если не сложно прошу ответить: 1) $headerShowed = false - это какая то константа? Что то не смог раскопать описание в PHP. 2) array_keys($result) as $field) или foreach ($result as $value) - нубский вопрос, а зачем и так переменные объявлять еще раз переменными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 11:30 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Но очень много echo режет глаз и места занимает... потому я бы так сделал: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Но второй вариант не читаемый почти если нету подсветки html (но становится удобнее если таковая есть), потому как Вам удобнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 12:13 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, и вам спасибо огромное! Какая однако полезная функция склейки implode)) И не надо циклом прогонять. А нет шанса наколоться с ней с порядком наименований столбцов в шапке и порядком данных в tbody. То есть нет ли вероятности, что имена столбцов таблицы будут одни,а данные в tbody смешаются и попадут другие,из другого столбца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 13:24 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловРенат, спасибо! Ход мысли и логику осилил, да, это вообще здорово так обертывать переменные. У меня есть два вопроса, если не сложно прошу ответить: 1) $headerShowed = false - это какая то константа? Что то не смог раскопать описание в PHP. 2) array_keys($result) as $field) или foreach ($result as $value) - нубский вопрос, а зачем и так переменные объявлять еще раз переменными? 1. Почему константа? Это точно такая же переменная. Которую Ренат ввёл, что бы заголовки вывелись единожды. Единственное, если я не ошибаюсь он немного ошибся, я это исправил в своём варианте, который писал как небольшую доработку (переработку) его варианта. 2. Потому как конструкция такая... Берётся каждое значение массива $result и присваивается переменной $value. Это для простоты, что бы не следить за индексами, когда они например совсем не нужны. Вообщем просто надо знать, что есть такая конструкция в php... А по-ходу поймёте, что без неё если можно обойтись, то очень геморно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 13:29 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, прально для единожды вывода шапки, и я там ошибся) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 14:16 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
ребят, спасибо! Благодаря данному топику узнал три разных способа генерации содержимого:) Хочу уточниться по логике обработки переменной if (!$headerShowed): или if ($headerShowed)==false это в принципе одно и тоже? То есть у вас как бы идет от отрицания условие. Это просто кто как привык писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 15:19 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лаловребят, спасибо! Благодаря данному топику узнал три разных способа генерации содержимого:) Хочу уточниться по логике обработки переменной if (!$headerShowed): или if ($headerShowed)==false это в принципе одно и тоже? То есть у вас как бы идет от отрицания условие. Это просто кто как привык писать? Да, только ==false перед скобкой а не после... иначе пхп ругнётся.. почему именно отрицание условия, потому как по логике можно было бы создать переменную $notHeaderShowed, которая была бы true до показа шапки и false после показа... тогда условие было бы if($notHeaderShowed), видите, тоже отрицание (только не на уровне языка, а на уровне осознания логики)? Но логика получается перевёрнута, так как флаг изначально должен быть выставлен в true... А если Вы пишите проект и машинально забыли инициализировать переменную присвоив ей true до нужного участка кода? тогда логика сломается... а если принимать изначальное значение флага как false и выставлять true только при определённом условии, то такой ошибки не будет, так как неинициализированная переменная в пхп эквивалентна false. Вообщем так просто легче и надёжнее в языке с динамической типизацией... В языках с жёсткой типизацией это не актуально, так как Вы обязаны инициализировать переменную до её первого упоминания в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 15:48 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Спасибо всем! Данный топик был создан с целью задать вопросы по уменьшению и оптимизации кода генерации таблицы. очень помогли. Реальной целью на горизонте является создание полноценного грида ,как в эксель/аксесс к примеру, с полным фаршем по навигации,сортировкой,перестановкой столбцов,строк ,фильтров,выделений . Хочу уточнить, можно ли отойти от обычного представления таблицы и лепить ее к примеру DIVами, обкусывая строки и перенося вниз по длине полей к примеру. Мне кажется что попроще будет работать с такой таблицей в Jquery UI с фишками такими как draggable,droppable,sortable и так далее. Хочу сделать полноценный грид с максимально расширенным количеством функций (на Сенче, JQgrid и прочих сайтах все не то, в раздельности функции все есть, а вот чтобы в один грид собрать и sortable, и draggable и заполнение массовое как в экселе -нет нигде, по частям продаются капиталисты))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 12:12 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
вы phpmyadmin в смысле изобретаете? и как будете d&d делать? Менять id у записей чтоли?) или у вас не универсальный, чисто под ващши таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 12:29 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ренат, нет) Пхпмайадмин не изобретаю) Мне нужен хороший Grid для базостроения. Универсальный. Чтобы можно было не парясь использовать. Мучительно перехожу с десктопа на WEB , очень удивился что тут нет таблиц с нормальной навигацией. Под нормальной навигацией подразумеваю нечто такое , как таблицы в аксессе (просто приложил в письме,можете посмотреть что я подразумеваю под нормальным гридом. Аксесовский файл в старом формате mdb. Если у вас в офисном наборе есть аксесс ,то гляньте) Там можно и изменять ширину,и перетаскивать (несколько столбцов, как угодно),и фильтры классные итд итп. Вот такую штуку я хочу повторить и в WEB. Собственными силами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 12:51 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловРенат, нет) Пхпмайадмин не изобретаю) Мне нужен хороший Grid для базостроения. Универсальный. Чтобы можно было не парясь использовать. Мучительно перехожу с десктопа на WEB , очень удивился что тут нет таблиц с нормальной навигацией. Под нормальной навигацией подразумеваю нечто такое , как таблицы в аксессе (просто приложил в письме,можете посмотреть что я подразумеваю под нормальным гридом. Аксесовский файл в старом формате mdb. Если у вас в офисном наборе есть аксесс ,то гляньте) Там можно и изменять ширину,и перетаскивать (несколько столбцов, как угодно),и фильтры классные итд итп. Вот такую штуку я хочу повторить и в WEB. Собственными силами) access'а нету... у меня linux. Фильтры обычно делаются через view'сы. Только вот phpmyadmin их создавать вроде не умеет (визуально имеется ввиду... запросами вручную можно всё), но есть проги, в которых это делается очень просто (хотя обычно phpmyadmin юзаю). А что именно надо? пример можете показать (вернее показать не получится... рассказать)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 20:30 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, Да, конечно, пример показать могу (Картинку приложил). Вот к примеру скрин нормальной рабочей таблицы десктопного приложения (в.ч Ms Access). Он (грид/таблица/представление) очень интерактивен и: 1) Классные фильтры расширенные пользовательские. Указал стрелочкой. 2) Все столбцы в данном гриде можно растягивать, скрывать,перетаскивать,закреплять при помощи мышки. Причем как один,так и несколько. 3) Не надо отдельно по каждой записи делать заведение. Просто стрелочками перемещаетесь как в экселе и проставляете нужные значения в нужные строки/ячейки. В общем такая суперюзабельная штука, которая в одной таблице позволяет делать все. В сети много примеров готовых. В частности JqGrid Можете посмотреть здесь: http://www.trirand.com/blog/jqgrid/jqgrid.html или здесь: http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/build/KitchenSink/ext-theme-neptune/#locking-grid Там очень крутые примеры готовых плагинов для создания интерактивных редактируемых таблиц html. Очень большой список возможностей и кузявностей с примочками. НО! Нигде не реализовано даже самое простейшее свойство перемещение между ячейками при помощи стрелочек)) Фильтры уродливые итд итп. Чего я хочу- я хочу написать нормальный плагин табличный сам, и уже потихоньку ковыряю. В качестве движка и генератора тегов естественно будет PHP. В качестве интерактивности будет использоваться JQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 11:40 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловНО! Нигде не реализовано даже самое простейшее свойство перемещение между ячейками при помощи стрелочек)) Фильтры уродливые итд итп. Вы по foreign keys говарите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 12:39 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ренат, а причем здесь foreign keys?) Имею в виду стрелочки вверх,вниз,влево,вправо. Нажал к примеру вниз- курсор перешел на ячейку ниже, нажал на стрелку на клавиатуре влево-курсор переместился на ячейку левее. Я это уже реализовал (простенький образец приложил. Просто наведите курсор и щелкните на ячейку, а потом клавишами клавы вверх,вниз,влево вправо погоняйте курсор как в обычном экселе). И это только 1 процент, от того что нужно сделать)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 13:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
В ХРОМ запускайте только. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 13:32 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов я конечно всё понимаю... только начал изучать веб - руки горят, голова кипит... НО! может взять для разработки\изучения что-нибудь попроще (для своего уровня)?! Имею в виду стрелочки вверх,вниз,влево,вправо. Нажал к примеру вниз- курсор перешел на ячейку ниже, нажал на стрелку на клавиатуре влево-курсор переместился на ячейку левее. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. там же тоже не дураки сидят... если чего-то не делают, то в силу каких-то причин ИМХО! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 16:20 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
горячая голова, Ну как в силу каких причин, каждый отдельный грид со своей фишкой можно отдельно и продать)) Какие тут вопросы могут быть. Уровень подтягиваю постоянно. Самое главное чтобы желание не пропало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 16:47 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Кстати в первоначальном варианте код JS тоже достаточно неплохо читается. C event работы поболее, но во всяком случае разобраться можно. Мне данный пример на javascript.ru подсказали. Вот, собираю постепенно мозаику из кусочков) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 16:51 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторКстати в первоначальном варианте код JS тоже достаточно неплохо читается. C event работы поболее, но во всяком случае разобраться можно. Мне данный пример на javascript.ru подсказали. Вот, собираю постепенно мозаику из кусочков) читается кем? тобою разобрать что? говнокод работает где? только в хроме and etc ;))) почувствуй разницу между "данный пример на javascript.ru подсказали. собираю постепенно мозаику из кусочков " v\s пишу программный код ! авторкаждый отдельный грид со своей фишкой можно отдельно и продать)) Какие тут вопросы могут быть. (facepalm) вопрос один - может книги почитать?! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 17:06 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
горячая голова, Ты сходи на javascript.ru и скажи модеру что он написал говнокод, просто он склепал решение в чистом JS,причем как понимаю за несколько минут и на коленке. Можешь с ним померятся письками. Я пас. Согласен, с JQUERY он смотрится покороче и попонятней, мне то уж точно) Мне кажется ты неправильно понял- я не хочу продавать гриды по кусочкам, это на Сенче и прочих сайтах хотят)) Расслабся, сегодня пятница! Спасибо за пример с Jquery, буду изучать!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 18:00 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Дай ссылку на его ответ... если это его перл, не проблема сказать и ему... Не за что! Изучай! А лучше, почитай книги, знания тебе понадобятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2013, 22:19 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов... А-а... если Вам надо то, что на рисунке... можете сделать. Тут смысл того, что разработчики phpmyadmin этого не делают из-за невостребованности. То есть вместо таких фильтров я бы просто использовал бы поиск, а ещё лучше запрос бы ручками быстро набросал (хотя зависит от случая, бывает что поиском удобнее). Это всё "сегодня", "завтра" и "вчера" конечно круто, но если понадобится статистика по дням недели или ещё что подобное, то такая визуальная "удобная" среда станет очень неудобной. Потому скорее всего, что Ваша разработка если у будет востребована, то только Вами. Я тоже хотел фреймворк для mysql свой написать по первости... написал на свою голову. Спустя пол года меня проекты с этой фигнёй начали очень сильно бесить, так как я понял что у mysql намного больше возможностей (которые мне нужны), и дорабатывать этот фреймворк стоит очень больших денег (точнее времени, в денежном эквиваленте) и намного дешевле будет просто от него отказаться и писать чистые запросы. Но был связан собственной разработкой в старых проектах (новые начинал уже без неё)... Хорошо старые проекты потом на переработку взяли и я смог избавится от этого "чуда фреймворка". Так что правда, лучше оцените нужно ли Вам это реально... или же в будущем будет просто Вас обременять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2013, 00:25 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, Это же колоссально свой фрейморк заделать ! После такого наверное уже не остается темных пятен в программировании. Мне до такого далеко в ближайшем светлом будущем. А по поводу гридов хочу сказать отдельно, юзабельные конструкции есть где приложить. В частности в логистике,которой я собственно и занимаюсь по основной специальности. Там счет идет на секунды. Нет времени к примеру нажимать на кнопку сохранить, и нужно к примеру заполнить не одну строку,а править массово,те же самые приходы товара,плановые даты движения груза,судов,жд составов,автомобилей. Хочется больше плюшек,и именно в одном месте,чтобы не отвлекаться на каждую запись при редактировании. Десктопные проги ,типа ms access + ms SQL server выручали до определенного момента,да и редактор объектов и кода там крутой, НО! Постоянно долбился, то у одного библиотек на офис нужных нет,у другого 64 bit офис,у третьего вообще не стоит аксесс и версии языка старые. Когда в базе одновременно сидит порядка 70 человек ,и я сам собственно говоря занимаюсь транспортом с таможнями,складами и логистикой,то постоянные вопросы по настройке компов,установке библиотек,раздаче прав,написания запросов и отчетов иногда напрягают. Запросы да, можно по быстрому поднять денежку,вроде один запрос ,написанный по феншую для оракл (не вьюха, а полноценный,с транзакциями,откатами и прочим гарниром стоит от 5 до 20 штук деревянных). Не знаю как в мускуле, но разрабы баз и систем под oracle для докручивания своих продуктов для клиентов дают такие ставки. У меня последние годы получались довольно крепенькие и живучие проекты на десктопных приложениях. С SQL проблем вообще никаких нет. С VB, VBA тоже. Абсолютно все проблемы или непонятки с кодом решаются очень быстро. Но опять же, переполз в Веб, тут гораздо больше ручками строчить . И язык сетевой , надеюсь не забанят-распиз--йский какой то, более расплывчатый)) ну буду у вас учится заново. Так как дектоп это уже могилка в общем тА. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2013, 01:28 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Вот кстати уже нашел логическую неувязку в своем предыдущем вопросе- гонять курсор по инпутам. Если у меня таблица в среднем составляет 20 столбцов и при среднем объеме работы в год накапливается порядка 6500 строк, то при генерации тегов input внутрь тега td получиться ,что я сделаю на странице 6500*20=130000 лишних и ненужных тегов инпут. Проще сгенерить таблицу в обычном виде и выполнить курсор в виде плавающего input , который наследует при переходах между строками и ячейками значения текущего эелемента td . Этож какая экономия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 13:22 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, откройте для себя пагинацию. а мне если честно вобще нравиться больше вот такой интерфейс: http://demopage.ru/yii-bootstrap-editable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 13:47 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, а Вы уже подумали над тем, как и в какой момент введённые/отредактированные/удалённые данные будут передаваться на сервер? Какие типы данных планируете поддерживать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 13:48 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, 1. я почемуто более чем уверен что ответ будет такой: для каждой записи будет <input name="value_<id строки>_<имя поля>"> и все строки зараз будут сохраняться кнопкой save. 2. либо <input name="value[<id строки>][<имя поля>]"> 3. либо аяксом.... посмотрим что выберит топикстартер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 14:27 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Ренат, информация будет сохраняться стандартным способом,который уже тыщу лет как используется в десктопных приложениях. Запрос будет отсылаться на сервер, после того,как в фокусе будет другая строка) . Еще хочу чтобы грид наследовал свойства серверной роли. Если к примеру в таблице Table1 юзеру User1 запрещено удалять записи, то соответственно он не сможет удалить текущую запись. Если же в этой таблице юзер не может править поле1, то она к примеру будет enable=false. Мне в общем то придумывать с точки зрения объектов ничего не надо. Просто побольше свойств перетащить из ADO+MS SQL и написать их вашим языком) Что должен делать грид: 1) Выводить информацию. (SELECT) 2) Быть интерактивным в плане обновления (UPDATE) 3) С возможностью удаления одной/нескольких выделенных строк (DELETE) 4) C возможностью добавления новых строк (INSERT) Как сделать класс или публичную функцию в VBA я знаю. PHP только начал изучать. Теперь каким он должен быть с точки зрения пользовательского интерфейса (JQ+JS): 1) Столбцы и строки грида/таблицы должны быть растягиваемые (resizable) 2)Столбцы и строки грида/таблицы должны быть перемещаемыми (droppable) 3) Столбцы и строки грида/таблицы должны быть с возможностью выделения (selectable) 4) Перемещения между ячейками таблицы должны быть организованы как можно понятней, при помощи стрелок . 5) Запрос к серверу при правке таблицы должен осуществляться при переходе курсора/фокуса на свободную новую строку. (можно повесить на событие "выход из текущей. Или как там событие правильно классифицировано в JS") Все вышеуказанные манипуляции должны производиться при помощи курсора и кнопок клавиатуры. Без выскакивания дополнительных предложений нажать кнопку Сохранить. А так, при массовой правке данных в таблице. Я думаю ,что сервер не навернется, если запросы будут отправляться если запросы на обновления будут происходить на уровне одной записи (естественно,не на уровне каждого поля)) MS Access + MS SQL server нормально работает, PHP даже полегче и побыстрей по сравнению с ним летает.) 6) Пользовательские фильтры в заголовках полей, это отдельная тема: а) Должны автоматом при нажатии выводить возможный список значений для выборки. б) Если это число- то шаблон под числа. в) если это текст ,то шаблон под varchar. г) если даты- то соответственно под даты. Как это организовать в JS пока не вкуриваю, но книжки почитываю. определить тип переменной через JS пока не знаю как (просто тупо не добрался еще до этого) И самым главным моментом при редактировании является наследование гридом свойств серверной роли пользователя. То есть создать то, что успешно работает в MS Office уже на протяжении лет 15 как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 15:05 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Надеюсь в письме чуть выше ответил на ваш вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 15:44 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловТо есть создать то, что успешно работает в MS Office уже на протяжении лет 15 как.Убийцу Google Spreadsheet? P.S.: времени не жаль? Вы в одиночку это будете очень долго писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 16:08 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ренат, я конечно выберу Ajax (и вообще весь Jquery), ибо асинхронные запросы к серверу это норма для других языков,они при работе к примеру в других приложениях (не веб) уже по умолчанию используются. И объекты тип формы, грида, контролов,наборов записей обновляются естественно не при перезагрузке страницы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 16:09 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, нет, не убийцу)) Просто согласитесь, удобней работать с комфортом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 16:11 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловskyANA, нет, не убийцу)) Просто согласитесь, удобней работать с комфортом)А чем Ваше решение комфортнее уже имеющихся и для кого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 16:15 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANAСергей ЛаловskyANA, нет, не убийцу)) Просто согласитесь, удобней работать с комфортом)А чем Ваше решение комфортнее уже имеющихся и для кого? В первую очередь оно удобней для обычных пользователей, которые будут делать правки массово, не отвлекаясь на дополнительные действия вроде нажатия кнопки сохранить. Сколько времени вы сэкономите на этом? Время деньги. К примеру у меня изменились даты прибытия товара на склад, по 50 разным поставкам . Что мне проще сделать, отфильтровать их в таблице и сразу по всему списку проставить новые даты при помощи клавишы "вниз" и Ctrl+С и Ctrl+V?) Или же искать каждую поставку, заходить в нее,править и нажимать кнопку сохранить?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 16:23 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловskyANAпропущено... А чем Ваше решение комфортнее уже имеющихся и для кого? В первую очередь оно удобней для обычных пользователей, которые будут делать правки массово, не отвлекаясь на дополнительные действия вроде нажатия кнопки сохранить. Сколько времени вы сэкономите на этом? Время деньги. К примеру у меня изменились даты прибытия товара на склад, по 50 разным поставкам . Что мне проще сделать, отфильтровать их в таблице и сразу по всему списку проставить новые даты при помощи клавишы "вниз" и Ctrl+С и Ctrl+V?) Или же искать каждую поставку, заходить в нее,править и нажимать кнопку сохранить?)Отфильтровать, нажать Ctrl + A, ввести один раз дату и применить разом ко всем записям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 18:15 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
А ещё комфортнее, если данные автоматически обновятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 18:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANAА ещё комфортнее, если данные автоматически обновятся. Можно научить юзеров лепить запросы напрямую через PhpMyAdmin. Но это как говориться еще жеще, чем склепать фреймворк для таблицы)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 18:24 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловskyANAА ещё комфортнее, если данные автоматически обновятся. Можно научить юзеров лепить запросы напрямую через PhpMyAdmin. Но это как говориться еще жеще, чем склепать фреймворк для таблицы))Я вообще-то про обмен данными с поставщиками Откуда у вас пользователи узнают о том, что дата прибытия изменилась? По телефону, почтой, им об этом голосом говорят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 18:37 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANAСергей Лаловпропущено... Можно научить юзеров лепить запросы напрямую через PhpMyAdmin. Но это как говориться еще жеще, чем склепать фреймворк для таблицы))Я вообще-то про обмен данными с поставщиками Откуда у вас пользователи узнают о том, что дата прибытия изменилась? По телефону, почтой, им об этом голосом говорят? Да, это все понятно. Как обычно узнавание происходит при помощи экселевских файликов ,рассылаемых по Увсея Руси со всех концов необъятного земного шара. И понятно что лучше раздать поставщикам права заполнять свои таблицы, перевозчикам свои, нам свои, и действовать в рамках одной системы. И даже ясно что логику большинства процессов можно автоматизировать. Это понятно все. Не об этом речь. Я просто хочу создать editable grid)) А так иронизировал по поводу юзеров. Самый идеальный вариант - это они сами пишут запросы, транзакции, клепают вьюшки,сохраненные процедуры, что уж говорить. Каждому юзеру по PhpDesigner, DreamViewer, SQL Builder (и естественно не забыть попарсить запросы на производительность) ну и конечно же самый лучший вариант - блокнот! С кодировкой ANSI по умолчанию))) Вот тогда то российский программист- разработчик вздохнет спокойно полной грудью и обретет щастие непомерное)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 19:04 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловskyANAпропущено... Я вообще-то про обмен данными с поставщиками Откуда у вас пользователи узнают о том, что дата прибытия изменилась? По телефону, почтой, им об этом голосом говорят? Да, это все понятно. Как обычно узнавание происходит при помощи экселевских файликов ,рассылаемых по Увсея Руси со всех концов необъятного земного шара.Напрашивается импорт данных, а не рутина в виде верх/вниз, Ctrl + V/Ctrl + C. Сергей ЛаловИ понятно что лучше раздать поставщикам права заполнять свои таблицы, перевозчикам свои, нам свои, и действовать в рамках одной системы.Нет. Пусть поставщики работают в своей системе, перевозчики в своей. Их нужно просто интегрировать и действовать в рамках одной информационной шины. Сергей ЛаловИ даже ясно что логику большинства процессов можно автоматизировать. Это понятно все. Не об этом речь. Я просто хочу создать editable grid))Ну то есть делаете для себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 19:22 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Если все контрагенты будут работать в своих системах, то это примерно то же самое что и обмен экселевскими файликами) У всех уникальные индексы разные будут. У кого то номер заявки, у кого то номер спецификации,у кого то какой нибудь уникальный складской номер. Мы сейчас с этими делами столкнулись. Тут даже не сколько через "шину", в случае одинакового типа серверов можно делать межсерверные запросы. Лучше уж чтобы на одном сервере все вертелось, желательно у клиента импортера, то бишь у меня))) Никаких транзакций, никакой мудотни типа шлюзования в определенное время итд итп (извините за выражение). Этож не Вконтакте. Просто обычная СУБД в веб интерфейсе. Пытаюсь делать для себя, но уж поделюсь ,зажимать не буду)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 19:30 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, зачем Вы мне рассказываете о проблемах сопоставления данных? Я разрабатывал программное обеспечения для туризма, там этих контрагентов: агентства, туроператоры, принимающие партнёры, глобальные системы бронирования, отели, авиакомпании, трансферные компании, экскурсионнные, страховые и т.д. А снаружи просто обычный веб интерфейс P.S.: даже если Вы поделитесь своим творением (до этого ещё дожить надо), то боюсь толку от него мало будет. Но для Вас безусловно полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2013, 23:37 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Согласен с Вами, в любом случае, пока не попробуешь, не узнаешь и новые горизонты не откроешь. Я любитель, но могу сказать, что именно кодинг помог концентрироваться в обычной жизни и научил умению разбивать сложные задачи на необходимое количество малых. Кто то медитирует, кто то поет, кто то носит женское нижнее белье при имени Иван Иваныч, у меня вот тяга покодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 00:03 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Проще, яснее, понятнее и на языке программирования, а не на препроцессоре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 00:45 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Warstone, А еще проще на другом: Код: vbnet 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 01:39 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЭто всё "сегодня", "завтра" и "вчера" конечно круто, но если понадобится статистика по дням недели или ещё что подобное, то такая визуальная "удобная" среда станет очень неудобной.Надо иметь возможность делать дополнительные фичи не только в общем виде (в фреймворке), но и для конкретного проекта в конкретных местах. И при заказе новой фичи думать, где её разместить. Тогда и фреймворк не разрастается костылями, и проект спокойно пишется с учетом пожеланий заказчика. Наследование, кстати, вполне себе для этого подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 11:46 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
ГхостикНаследование, кстати, вполне себе для этого подходит. Я уже уточнил механизм наследования в соседних ветках. На любой вкус. Можно через мускул напрямую через имя пользователя и SHOW GRANTS. А можно через дополнительные созданные таблицы. То есть велосипедов множество, садись на любой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 11:54 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, вы сейчас пытатетесь изобрести что то уже сущевтвующее. мой вам совет 1. найдите то что еще не изобретали 2. либо фрилансем возмите какой нить проект поделать - денежки хотябы заплатят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2013, 12:59 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, На вскидку - ничего сложного не вижу... бегать курсором по клеточкам - фигня дела )) js в руки и готово.... а вот логика таблиц на сервере: создаём классы row, col, table, каждый из которых будет нести функционал определённой единицы данных... row... по сути строку мы можем удалить, обновить или вставить... вот пускай предусматривает этих 3 метода (delete, update, insert), потом самое интересное - col... можно навешивать до потери пульса: add - добавить столбец, rename - переименовать столбец, delete - удалить столбец, show - показать столбец, hide - скрыть, setPk - установить как основной ключ, setIndex - сделать индекным, setUnique - сделать уникальным индексом, setType - сменить тип (установить тип), order - сортировка, filter - фильтрация по значению столбца, virt - если столбец виртуальный (то есть считается из других по разным формулам) вроде основные... table: методы rename, create, delete, reference(name, join_type, on) итак, методы add, rename, delete, create, insert, update, setPk, setIndex, setUnique, setType - по сути выполняют конечный запрос... в каждый метод вешаем по запросу и готово (только в методах row надо завязаться на столбец со значением Pk в col)... но думаю тут сложного нету... методы show, hide - просто выставляют соответствующие флаги, что бы знать, что из этого показывать надо... order, filter, virt - на вход могут принимать список заготовок, созданных ранее, которые являются обычными выражениями и названия столбцов (или список экземпляров col)... (заготовки - типа шаблонов для замены... там есть спец символы, которые заменяются на названия введённых столбцов)... пишем в список :) методы virt и reference (у таблицы) пишут данные в отдельную таблицу базы, в которой (следует из названий) будут храниться виртуальные столбцы и связи таблиц... выдача происходит просто, мы читаем все связи таблиц (в одну сторону, нужен механизм отслеживающий цикличности, что бы избежать зависания), потом после select ставим через запятую все столбцы всех таблиц, у которых был вызван метод show или не был вызван метод hide, потом идёт FROM основная таблица, потом JOIN - тип указывали при вызове метода reference, потом имя таблицы для связи и условие связи, потом WHERE список фильтров через запятую (по уровням, от главной до самых вложенных), потом ORDER по тому же принципу что и фильтры... Потом можно привязать разные GROUP и т.д... Все данные о показываемых столбцах (по сути список экземпляров col и table) храним в SESSION (так как данные типа show-hide, order и др. вообще относятся только к данной сессии). Такой подход при своей относительной простоте будет обладать достаточной универсальностью... На эту часть (серверную) уйдёт около наверное недели-двух (если считать 8 часов рабочий день)... на клиентскую - фиг знает... насколько сложно захотите сделать... думаю тоже недельки 2 можно потратить (хотя что бы всё красиво и удобно, возможно и подольше)... Потому где-то так через месяц появится то, что можно будет отладить и начинать пользовать по мере использования дорабатывать... Если ошибаюсь в чём-то (основное в подходе) - поправьте... сам такого ниразу не делал, потому могу человека не в ту сторону увести... но структура мне видится такой :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 00:53 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Вы тут гугльдок не изобретаете? Если изобретаете, то начните с ExtJS'ного грида что-ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 02:45 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, Да, общая логика подхода у меня такая же как и вас. Вижу что вы тяготете больше к PHP. Я думаю что фильтры и сортировки и это больше предмет визуализации, наверное в javascript все эти манипуляшки стоит прописать. show и hide для пользовательских фильтров наверное тоже сделать в js лучше (мы же генерим массив тегов на страницу, а шинковать их наверное лучше при помощи js. Ну и так, чтобы кэш SESSION не перегружать лишними метаданными). Самые большие грабли для меня, это JavaScript . Вот к примеру прописал функцию (пока предварительно тестирую.) по вставке инпута в текущую/кликнутую ячейку таблицы: Код: javascript 1. 2. 3. 4. 5. 6. Ну то есть кликаю на ячейку <td> 12345 </td> , внутрь td вставляется input <td><input type="text" value=" 12345 " ></td> Все работает отлично, но если нажать еще раз туда, то появляется хрень)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 14:47 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, Код: php 1. 2. 3. 4. 5. 6. Код: php 1. помойму это ежику очевидно не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 19:59 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ренат,не не, зачем здесь спан. Не это имею в виду. Имею в виду что когда я в первый раз кликаю на ячейке- создается инпут,значение value которого равно innerHTML текущего дива. А вот если еще раз тыкнуть в уже созданный инпут, то в нем появляется хрень. Я вижу решение в предварительной процедуре проверки, не является ли текущий элемент при нажатии инпутом, если является,то выше написанная процедура моя не выполняется. Если не является инпутом- то он соответственно создается и ячейку таблицы можно редактировать. А span для чего нужен тут, я чет не понял, не догнал. Сейчас бьюсь над событием потери фокуса элемента td. То есть чтобы при нажатии на другую ячейку старый инпут удалялся, значение из него передавалось в старый див и процедура начиналась заново уже с текущей ячейкой таблицы. Как удалять нашел, а вот стоящее событие типа onblur что то пока не могу прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 20:59 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Just for fun: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 23:20 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Вернее так: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 23:22 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Спасибо! Но я до такого еще не дошел)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 23:40 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Интересно, а сколько вы проектов закончили в веб и сайтостроении ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2013, 23:55 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Если считать сайты, то мелких: 1 Joomla средних: 2 на ASP.NET WebForms, 1 PHP крупных: 1 на ASP.NET WebForms, 1 на ASP.NET MVC (текущий, его ещё развивать и развивать) но я в основном серверной разработкой сейчас занимаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 00:26 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Ну у вас за плечами куча реализованного. У меня из серьезных 3 на VB +ms SQL server . 2 халтуры еще из офисного хлама. Все многопользовательские. И не одного на js,php,MySQL . )) поэтому прошу не судить строго) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 00:41 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, а я и не сужу. Хотите освоить JavaScript, рекомендую курсы и учебник . После читайте Закаса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 01:16 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловПрограмёр, Да, общая логика подхода у меня такая же как и вас. Вижу что вы тяготете больше к PHP. Я думаю что фильтры и сортировки и это больше предмет визуализации, наверное в javascript все эти манипуляшки стоит прописать. show и hide для пользовательских фильтров наверное тоже сделать в js лучше (мы же генерим массив тегов на страницу, а шинковать их наверное лучше при помощи js. Ну и так, чтобы кэш SESSION не перегружать лишними метаданными). Самые большие грабли для меня, это JavaScript . Вот к примеру прописал функцию (пока предварительно тестирую.) по вставке инпута в текущую/кликнутую ячейку таблицы: Код: javascript 1. 2. 3. 4. 5. 6. Ну то есть кликаю на ячейку <td> 12345 </td> , внутрь td вставляется input <td><input type="text" value=" 12345 " ></td> Все работает отлично, но если нажать еще раз туда, то появляется хрень)) Но, если у Вас будет выборка из 5 таблиц, при этом выборка нужны двух столбцов из четвёртой и пятой по одному.... Вы представляете сколько данных Вы будете клиенту отправлять? Это куча трафика, и длительное время выполнения.... Так что все фильтры и сортировки лучше делать в mysql напрямую, а уже обрабатывать отфильтрованные и отсортированные данные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 12:07 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр, Спасибо! А как лучше настроить элементы таблицы для последующей с ней манипуляцией? Имею в виду наследование типов данных. Есть к примеру несколько основных типов (не копаем глубже, ) в моем понимании: - целочисленный - с плавающей точкой - логический - текстовый - дата Остальные типы не трогаю (которых на сервере великое множество), ибо для моих целей указанной выше классификации за глаза и по уши хватит. Хочу спросить, могу ли я в качестве пользовательских типов, при генерации тегов td в качестве атрибута использовать свои наименования? Ну к примеру в инпут у меня атрибут type будет = int , float , bol , strn , dte в зависимости от типа переменной. Атрибут class в тегах таблицы я зарезервирую именами под Row (для tr ) и Col (для td ). А атрибуды ID и Name понадобятся для других целей. Кстати нашел и потестировал пару неплохих JqGrid. Соблазн был велик. Но снес их. Так как хочется самому понять ,как это все работает. JqGridы c плагинами и виджетами это конечно здорово, но есть жгучее желание самому досконально раскопать как это все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 11:35 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
интересно, а как всё это связано с ПэХаПэ!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 12:12 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноинтересно, а как всё это связано с ПэХаПэ!? Это связано с PHP следующим образом, есть ключевой момент, где необходимо будет принимать решение- делать скелет работы с фильтрами и обработке типов данных полей при помощи PHP или при помощи JS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 12:21 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Есть клиент, есть сервер... Всё что ты сейчас оcваиваешь - JS HTML - клиентская часть! http://www.sql.ru/forum/html-javascript-css или неа? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 14:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловПрограмёр, Спасибо! А как лучше настроить элементы таблицы для последующей с ней манипуляцией? Имею в виду наследование типов данных. Есть к примеру несколько основных типов (не копаем глубже, ) в моем понимании: - целочисленный - с плавающей точкой - логический - текстовый - дата Остальные типы не трогаю (которых на сервере великое множество), ибо для моих целей указанной выше классификации за глаза и по уши хватит. Хочу спросить, могу ли я в качестве пользовательских типов, при генерации тегов td в качестве атрибута использовать свои наименования? Ну к примеру в инпут у меня атрибут type будет = int , float , bol , strn , dte в зависимости от типа переменной. Атрибут class в тегах таблицы я зарезервирую именами под Row (для tr ) и Col (для td ). А атрибуды ID и Name понадобятся для других целей. Кстати нашел и потестировал пару неплохих JqGrid. Соблазн был велик. Но снес их. Так как хочется самому понять ,как это все работает. JqGridы c плагинами и виджетами это конечно здорово, но есть жгучее желание самому досконально раскопать как это все работает. Типы - это не более чем просто валидация данных (ведь по сути всё, что вводит пользователь - это строки... а Вы их валидируете и если всё сходится - выполняете действие)... Валидацию лучше проводить на сервере тоже (так как я Вам что угодно с клиента могу отправить и сказать что всё провалидировал... это не безопасно). Для валидации можно предусмотреть определённый класс (от которого будут наследоваться). В нём обязательно есть метод validate (сама логика валидации), который принимает на вход нужную для валидации строку... Всё остальное неважно (пускай себе реализует что хочет... главное что бы validate был...) По поводу грида - есть таблица (table, tr, td)... хотя лучше дивами делать... Таблица при вставке данных (или их удалении/изменении пересчитывает ширину столбцов, а это может быть очень долгий процесс, если данных много). Итак, в каждой ячейке любой текст заключён в span... При клике на ячейку спан меняется на инпут... теперь, по поводу смены: что бы не записать данные не туда, куда надо, нам требуется знать таблицу, в которую будем писать, название столбца и значение primary key. эти 3 значения мы пишем в аттрибуты data-table, data-col и data-pk соответственно. И когда готовы отправить введённые данные, мы дёргаем эти значения и отправляем их вместе с введёным текстом... Тогда на сервере мы будет точно знать что и куда писать :) Гуляние по гриду - это чисто js :) Вверх, вниз. влево, вправо - переход по ячейкам (сделать не сложно)... при нажати 2 раза на ячейке режим правки (тоже не сложно)... при нажатии энтер в поле ввода или кнопки таб например сохранение данных и переход на ячейку вправо (думаю тоже не сложно)... Сложно - это выделение ячеек мышкой, так как надо читать координаты, самому иммитировать выделение и всё такое, но и это за денёк думаю можно освоить в полной мере... не знаю, вроде всю идею (свою) высветит, как и что делается... если решите делать как я советую и что-то не будет получаться - пишите... )) постараюсь помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 15:43 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр ты писал когда-нибудь распределённые системы?! сидят два оператора с твоей таблицей в 65к ячеек и потихоньку вносят изменения... как вариант - один удалил строку а второй пытается внести туда изменения... или один обновил данные, а второй, невидя этого, перезаписал туда старые данные... предложи вариант решения? ;) авторно и это за денёк думаю можно освоить в полной мере... добрый совет ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 16:12 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересно, Я как раз и писал БД расчитанные на одновременные пользования > 30 человек. Сделал три серьезных проекта MS Access + MS SQL server 2005. Один для транспортной компании, один для фабрики по производству литейной продукции, один для мобильного салона связи. Со всем фаршем в виде доступа по типу логин/пароль,ролями и.т.д. Плюс у меня на работе крутятся две базы (правда обычные разделенные части MS Access по типу клиент-сервер) в которых трудятся единовременно более 40 человек. Там есть таблицы порядка 60000 строк. Никаких проблем с правкой строк/залипаний логики не наблюдал. Операторы сидят и правят. Бывает что и одну строку, только разные поля единовременно. не вижу никаких проблем. Опыт есть. Опыт создания велосипедов в данном направлении есть, только десктопный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 16:59 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
И за денек можно освоить, самое главное чтобы интересно было:) С валидацией переменных в JS и PHP начал разбираться. В PHP гораздо почётче и построже это все. Более привлекателен именно вариант с PHP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 17:09 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторОпыт создания велосипедов в данном направлении есть, только десктопный. web - это не десктоп! здесь не канают общепринятые подходы в разработке десктопных приложений!!! жаль, что ты увлёкся визуальной частью разработки - и пренебрегаешь изучением принципов взаимодействия клиента и сервера... почитай на эту тему, что-нибудь - может осенит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 17:27 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересно Програмёр ты писал когда-нибудь распределённые системы?! сидят два оператора с твоей таблицей в 65к ячеек и потихоньку вносят изменения... как вариант - один удалил строку а второй пытается внести туда изменения... или один обновил данные, а второй, невидя этого, перезаписал туда старые данные... предложи вариант решения? ;) авторно и это за денёк думаю можно освоить в полной мере... добрый совет ;) не актуально в рамках данного топика по сути )) тут вот какое дело, если один оператор удалил поставку, то другой уж точно её править не будет ))) Это не логично и говорит об нарушении организации :) Ну, это моё мнение... А вообще должна быть кнопочка "обновить", которая позволит загрузить все новые правки с сервера... Если я стараюсь записать строку, которой уже нету - я должен получить сообщение об ошибке... Что бы избежать жуткого переплетания работы (не знаю, мне так удобнее по крайней мере, да и прогать легче, ещё никто не жаловался), можно все изменения в базе писать единной транзакцией.. То есть, внизу сделать кнопочку "сохранить изменения на сервере"... пока мы меняем данные (добавляем/удаляем ячейки, меняем тексты) все запросы (в виде логированных изменений) скапливаются где-то... а когда жмём кнопочку - данные действия переводятся в запросы и выполняются (отправляются в базу)... если какой-то запрос заканчивается ошибкой - пользователю можно предложить например отказаться от изменения данных (которые не могут быть изменены), или предпринять другие действия (например добавить (в данном случае вернуть) отсутствующий столбец, строку или таблицу)... Кстати, перед записью надо повторно валидировать данные :) ведь они могут измениться (то есть кто-то мог изменить тип столбца)... И при провале валидации предлагать пользователю поправить значения этих полей. А какой Вы предложите вариант решения? (мало ли, может я и не прав... если так, то поясните) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 17:31 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
http://dr-magic.blogspot.com/2010/01/3.html - шеф всё уже давно украдено до нас! автор если какой-то запрос заканчивается ошибкой - пользователю можно предложить например отказаться от изменения данных (которые не могут быть изменены) О как! То есть сервер сам толкнёт клиента? авторНикаких проблем с правкой строк/залипаний логики не наблюдал. кстати, расскажи, какие действия ты предпринимал для того, что бы два пользователя не могли править одновременно одно и тоже поле? Интересно послушать... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:01 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересно, Второй вопрос видимо адресуется мне? Первое цитирование Программеру, а второе это моя реплика. По своей реплике могу ответить,что такие запреты в VB+Ms SQL server очень просто отловить. свойство — LockType. Это свойство определяет тип блокировок, которые будут наложены на записи на источнике, помещенные в Recordset. Можно использовать следующие значения: adLockReadOnly — записи в Recordset будут доступны только на чтение, вы не сможете их изменять. Это значение используется по умолчанию. adLockPessimistic — наиболее надежный с точки зрения целостности данных вид блокировки. Вы можете изменять записи в Recordset, но при начале изменения записи она блокируется на источнике таким образом, что другие пользователи не смогут обратиться к ней ни на чтение, ни на запись, пока вы не вызовете методы Update() или CancelUpdate(). adLockOptimistic — это значение позволяет выиграть в производительности за счет проигрыша в надежности обеспечения целостности данных. Запись на источнике блокируется только на время выполнения метода Update(). Остальные пользователи могут одновременно с вами читать и изменять данные на источнике. adLockBatchOptimistic — то же самое, что обычное оптимистичное, но вместо немедленного обновления по одной записи используется пакетное обновление. В ситуации, когда изменяется большое число записей, такое решение позволяет выиграть в производительности. Вот это свойство и не позволяет двум пользователям одновременно править одно поле. Это в VBA. Это как раз тот случай когда сервер толкнет клиента. Это в моих старых проектах на VBA. Мои проекты в формате VBA+ADP как раз и предполагают,что очень много event и процессов с клиентской части будут мониториться серверной частью. Это фишка ADP. По первой реплике вам сможет ответить Программер . Вроде как наши ответы в принципе перекликаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересно http://dr-magic.blogspot.com/2010/01/3.html - шеф всё уже давно украдено до нас! автор если какой-то запрос заканчивается ошибкой - пользователю можно предложить например отказаться от изменения данных (которые не могут быть изменены) О как! То есть сервер сам толкнёт клиента? Вы меня видимо не поняли... зачем сервер толкнёт клиента (в принципе я даже не знаю как, ведь на то он сервер, что бы его клиенты толкали)... А предложить клиенту отказаться от изменений по нажатию кнопки "сохранить изменения в базе". То есть, он нажал, сервер начал обработку... в случае возникновения ошибок, запомнил их... сверил с действиями, повлекшими ошибки и обработал причину ошибок, на основании этого отправляет клиенту возможные варианты решения проблемы... js это выводит клиенту, тот предпринимает одно из предложенных действия и даёт "перезапрос"... сервер снова его выполняет... если появляются ошибки, снова спрашивает как поступить с несохранёнными данными... и так пока не сохранит данные :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:18 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторRecordset !!! так вот этот самый Recordset тебе придётся самостоятельно реализовать для решения подобного рода коллизий ;) если вдруг подобное решение тебе покажется громоздким или оч сложным, тебе придёт в голову, что править строку можно не напрямую в общей таблице с данными, а выбрав её последнюю версию непосредственно запросом на страницу правки записи!!! и залочить ОДНУ единственную строку от других! а не все строки таблицы! Програмёр ОМГ! теория обновления данных по ЭНТЕР при изменении в отдельно взятом инпуте, вероятно разрушилась? как и теория перехода по ячейкам таблицы с кучей инпутов стрелочками! Следущая на очереди - <span> в каждом диве или ячейке таблицы? ;) хорошо! как в таблицу из 65к ячеек получить изменённые др пользователем данные? авторкнопочка "обновить" ? ;) как часто её будет нужно нажимать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:45 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёрпросто интересно http://dr-magic.blogspot.com/2010/01/3.html - шеф всё уже давно украдено до нас! пропущено... О как! То есть сервер сам толкнёт клиента? Вы меня видимо не поняли... зачем сервер толкнёт клиента (в принципе я даже не знаю как, ведь на то он сервер, что бы его клиенты толкали)... Именно так и толкнет:) Если вы разрабатываете проект в формате ADP, то много процессов, которые делает пользователь на клиентской части приложения мониторятся сервером. На сервере хранятся основные обработчики событий (да да!), а в клиентской части есть так называемые системные таблицы,которые в обычном режиме пользователь не видит. Информация в них скрыта постороннему глазу и генериться автоматически при создании проекта ADP + MS SQL server. За счет взаимопроникновения клиентской и серверной части друг в друга связка ADP и позволяет интерактивный обмен не только на уровне Клиент->Сервер, но и Сервер->Клиент. Могу уточнить,когда происходит проверка возможности редактирования записи на форме,в строке,таблице. Она происходит обычно на событие "текущая запись". Это когда вы переходите в таблице на новую строку клиентская часть отправляет запрос на сервер, который проверяет,никто ли сейчас не правит текущую строку, если правит-то locked, если не правит-то соответственно unlocked. В базовом варианте настройки (про наших баранов с лочкой записей) такой механизм по умолчанию действует на следующем уровне - выскакивает не ошибка, а msgbox ( ну то бишь alert либо echo если берем web) который говорит, что за это время текущая запись была изменена другим пользователем, выберите действия которые вы хотите осуществить , оставить свои правки в строке, или принять изменения ,внесенные другим пользователем Механизм работы клиент сервер конечно идентичен с веб, да и вообще по концепции. Просто майкрософт добавил немного трэша, и сделал незаметными глазу процессы клиент-сервер, за счет увеличения объема скрытых процессов,выполняемых клиентской стороной. Преимущество- не надо париться с диалогами с серверной частью. Недостаток-Рост процессов,выполняемых клиентской частью, рост кэша за счет постоянно висящих линкованных временных таблиц в памяти приложения. Так поэтому то я пытаюсь подружиться и с php и с JS) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:51 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Название топика- краткость сестра таланта уже потеряла свою актуальность :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 18:58 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторМеханизм работы клиент сервер конечно идентичен с веб, да и вообще по концепции. ну попробуй заставить веб-сервер без запроса клиента прислать тебе данные!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 19:10 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавторRecordset !!! так вот этот самый Recordset тебе придётся самостоятельно реализовать для решения подобного рода коллизий ;) если вдруг подобное решение тебе покажется громоздким или оч сложным, тебе придёт в голову, что править строку можно не напрямую в общей таблице с данными, а выбрав её последнюю версию непосредственно запросом на страницу правки записи!!! и залочить ОДНУ единственную строку от других! а не все строки таблицы! Програмёр ОМГ! теория обновления данных по ЭНТЕР при изменении в отдельно взятом инпуте, вероятно разрушилась? как и теория перехода по ячейкам таблицы с кучей инпутов стрелочками! Следущая на очереди - <span> в каждом диве или ячейке таблицы? ;) хорошо! как в таблицу из 65к ячеек получить изменённые др пользователем данные? авторкнопочка "обновить" ? ;) как часто её будет нужно нажимать? Ваш вариант так и не был озвучен :) Если Вы решили подержать его на последок - уже начинаете передерживать... Начинает складываться впечатление что его или нету, или он уступает одному из озвученных... Расскажите, как бы Вы это решали. По поводу Энтер - ничего не разрушилось, я всего лишь предложил альтернативу, которая позволила бы так часто не пересекать работу двух операторов... Один сохранил изменения, второй после него попробовал сохранить конфликтирующие данные, запрос отвалился... первый продолжает что-то менять... снова сохранил... всё ок... второй всё исправил, сохранил... первый попробовал сохранить, у него конфликт... исправил, сохранил... А теперь представляете, если несколько операторов одновременно и у них каждое второе поле в конфликте?.. Это как в гитхабе... Вы работаете в своей ветке... когда работу закончили - слили в мастер, если наткнулись на конфликт - решили и закомитили результирующий вариант... А теперь представляете, если бы Вам пришлось решать конфликты по каждому коммиту? ... а теперь представляете, если Вы конфликт решили, а на сервере уже новый коммит появился... и Вы снова конфликт решаете... так его можно решать 2 месяца )) будете не рады такой системе и быстренько с неё спрыгните. Итак, ждём Ваш вариант :) просветляйте нас пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 22:30 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
То есть сформулировать мою идею можно так: я предложил избавиться от процесса прямой записи в базу и просто "сливать" изменения на основной сервер... как в гите... только вместо своей ветки, Вы создаёте временную таблицу (виртуально... просто в сессию нотируете свои изменения)... когда Вы решаете, что всё готово - вливаете в основную таблицу свои правки, если возникают конфликты, процесс вливания отменяется, Вам предлогается решить конфликт, после чего Вы можете повторить вливание... Вроде всё просто, а принцип уже давно изучен и уже используется очень удачно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 22:38 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавторМеханизм работы клиент сервер конечно идентичен с веб, да и вообще по концепции. ну попробуй заставить веб-сервер без запроса клиента прислать тебе данные!!! Предлагаете топикстартеру освоить какой-нибудь Message_Queuing? Или пилить самому - ради опыта :) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 23:32 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
BagaBaga, Давайте не будем передергивать))) топикстартер просто переползает с десктопа на веб. И опыт в практическом программировании в сумме зачастую перекрывает срок, с которого у некоторых участников данного форума начались проявляться вторичные половые признаки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:05 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей ЛаловBagaBaga, Давайте не будем передергивать))) топикстартер просто переползает с десктопа на веб. И опыт в практическом программировании в сумме зачастую перекрывает срок, с которого у некоторых участников данного форума начались проявляться вторичные половые признаки. Хм... :) А в чём Вы видите проблему такого перехода? :) Проблемы обычно бывают при переходе в обратную сторону... Ну разве только привыкнуть к структуре клиент-сервер, но в принципе, любое приложение работающее с основным ресурсом в сети работает по такому принципу... разница лишь в том, что браузер не удерживает соединение после окончания загрузки страницы (то есть по сути связь односторонняя, а для двусторонней уже приходится играться) :) Не знаю... это как создание gui под уже давно написанное консольное приложение )) Только приложение - это серверная часть, а gui - клинтская (js, html, css). Если у Вас огромный опыт разработки, Вам это должно быть как 2 пальца.... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:23 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторПредлагаете топикстартеру освоить какой-нибудь Message_Queuing? Или пилить самому - ради опыта :) ? хотел ему подкинуть идею о том, что если бы так легко переносились десктоп приложения с их контролами на веб, то, вероятнее всего, кто-то уже придумал бы необходимый ему (похожий на MS Access) грид! хотя, конечно может и запилить! ;) авторИтак, ждём Ваш вариант :) http://wiki.apache.org/couchdb/HTTP_Document_API почитай - зачем нужны "_revisions" ;) авторВроде всё просто, а принцип уже давно изучен и уже используется очень удачно :) уверен, что не тобою! это называется Recordset в десктопе! в веб всё это можно организовать даже на клиенте http://htmlbook.ru/html5/storage Вопрос один - ЗАЧЕМ? ради того что бы затянуть на клиента 40к строк из таблицы БД и вкорячить в супер-грид??? кнопочка "обновить" ПыСЫ - эта кнопочка уже есть во всех броузерах - "Reload current page" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:23 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавторПредлагаете топикстартеру освоить какой-нибудь Message_Queuing? Или пилить самому - ради опыта :) ? хотел ему подкинуть идею о том, что если бы так легко переносились десктоп приложения с их контролами на веб, то, вероятнее всего, кто-то уже придумал бы необходимый ему (похожий на MS Access) грид! хотя, конечно может и запилить! ;) авторИтак, ждём Ваш вариант :) http://wiki.apache.org/couchdb/HTTP_Document_API почитай - зачем нужны "_revisions" ;) авторВроде всё просто, а принцип уже давно изучен и уже используется очень удачно :) уверен, что не тобою! это называется Recordset в десктопе! в веб всё это можно организовать даже на клиенте http://htmlbook.ru/html5/storage Вопрос один - ЗАЧЕМ? ради того что бы затянуть на клиента 40к строк из таблицы БД и вкорячить в супер-грид??? кнопочка "обновить" ПыСЫ - эта кнопочка уже есть во всех броузерах - "Reload current page" Ну так Вы просто прокоментили мой вариант, что да, это есть и это можно запилить... Но я ведь это и говорил... о чём Вы тогда спорили? :) По поводу запилить логику на клиенте - интересно... а как клиент будет с сервера получать инфу о том, что были измененены определённые поля?... Вообщем, возможно конечно так можно сделать (думаю не без гемора), но я бы не стал... Пояснение в прошлом сообщении (сервер - логика, клиент - интерфейс)... А я и не предлагал 40к строк тянуть... Фильтры для того и обсуждались, что бы не тянуть лишнего... и именно по той причине я и советовал фильтровать всё на уровне базы (и сортировать тоже)... То есть если нам нужна выборка из трёх полей, по значению одного из полей и отсортировано в порядке возрастания второго из полей, так мы в итоге именно это и дёрним из базы... и получится например 200 строк из трёх столбцов по возрастанию второго поля :) Так о чём же Вы спорили, когда говорили, что фигня это всё (когда угнетали мой вариант )? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:33 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:38 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторТак о чём же Вы спорили, когда говорили, что фигня это всё (когда угнетали мой вариант )? какой вариант?! сохранить все сделанные пользователем изменения и одним махом отправить их в БД? обрыв соединения?! три часа внесения изменений насмарку! неа ;) авторА я и не предлагал 40к строк тянуть... 14755439 - за тебя предложили... мне трудно с тобою разговаривать - ты всё это как-то нащупываешь\придумываешь, вместо того, что бы сесть и попробывать сделать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 00:47 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Ребят, спасибо за ссылки! Вовсю штудирую. Спор на самом деле не о чем. Действительно сейчас смотрю что более понятней, фреймворки готовые действительно более проще к восприятию. Сделаю грид, выложу. Из плагинов пожалуй все таки заберу себе привязку календаря и маску ввода для типов данных ввода даты и чисел типа плавающих с точкой с запятой. Про отношения типа клиент сервер как смогу так и реализую на уровне строк, набора записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 01:13 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавторТак о чём же Вы спорили, когда говорили, что фигня это всё (когда угнетали мой вариант )? какой вариант?! сохранить все сделанные пользователем изменения и одним махом отправить их в БД? обрыв соединения?! три часа внесения изменений насмарку! неа ;) авторА я и не предлагал 40к строк тянуть... 14755439 - за тебя предложили... мне трудно с тобою разговаривать - ты всё это как-то нащупываешь\придумываешь, вместо того, что бы сесть и попробывать сделать! Ну так я же предлагаю разные варианты, которые понятное дело могут иметь свои минусы, которые сам и описываю... Пожалуйста, хотите что бы при обрыве данные об изменениях не терялись - пишите не в сессию, а во временную таблицу :) Это не суть важно... об обрыве соединения как таковом не задумывался, так как обойти несложно.... Однако, по Вашим словам есть какой-то механизм, который позволяет избавиться от всех возможных минусов (такой себе идеал), однако Вы его не рассказываете... Что же мы тогда обсуждаем... То есть сейчас ощущение, что Вы не помочь стараетесь, а просто бракуете то, что я предлагаю, вместо того, что бы потритить 10 минут и написать сюда метод решения, который я и сам возможно признаю лучше своих и буду пользовать в будущем... Но пока ничего не написали, лучшие варианты решения вопроса остаются мои (пока они единственные, так что в любом случае лучшие ) Сергей Лалов, учитывая что Вы решили использовать готовые фреймворки для решения задачи, вопрос снимается? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 08:43 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПожалуйста, хотите что бы при обрыве данные об изменениях не терялись - пишите не в сессию, а во временную таблицу :) Это не суть важно... об обрыве соединения как таковом не задумывался, так как обойти несложно.... обрыв соединения с БД в бэкенде, во временную не записалось =) блин, для веба сходу можно придумать минимум 3 варианта, как не допустить коллизий. разной степени замороченности, но так или иначе решающих проблему. просто интересно а по поводу сервер сам пнет, если надо будет, то пнет клиента в ответ на его запрос =) каким образом, сам думай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 14:17 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Програмёр мне просто интересно было посмотреть - делал ли ты в реальной жизни нечто подобное - исходя из того, что для тебя это "часик подумать"... оказалось - НЕТ!!! ничего подобного ты не делал, тк. придумываешь на ходу и думаешь уже не один час! авторкоторый позволяет избавиться от всех возможных минусов от всех возможных минусов избавиться помогает один способ - не притрагиваться к клавиатуре... ;) 1. на клиента тянется минимальное кол-во строк 2. эдит строки с нового запроса 3. _revisions Karbafos вот ты и подумай!!! http://en.wikipedia.org/wiki/Push_technology ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 14:46 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересно Програмёр мне просто интересно было посмотреть - делал ли ты в реальной жизни нечто подобное - исходя из того, что для тебя это "часик подумать"... оказалось - НЕТ!!! ничего подобного ты не делал, тк. придумываешь на ходу и думаешь уже не один час! авторкоторый позволяет избавиться от всех возможных минусов от всех возможных минусов избавиться помогает один способ - не притрагиваться к клавиатуре... ;) 1. на клиента тянется минимальное кол-во строк 2. эдит строки с нового запроса 3. _revisions Karbafos вот ты и подумай!!! http://en.wikipedia.org/wiki/Push_technology Ой, ладно не делал... Делал... revisions не использовал (сорри, читать лень :) там много, дак ещё и по-английски, приходится напрягаться)... По поводу push технологии - делал. Захватывал соединение сервером, так делал на сайте, который сейчас разрабатываю. Использовал в модуле работы с письмами... То есть, мне нужен был моментальный отклик с сервера о том, что кто-то отправил письмо, что бы 2 оператора не отправили одному и тому же человеку письма с одинаковым содержанием :)... Но, как я говорил, это неправильная структура работы. Потом мы доработали на сайте систему очереди обработки заказов и от захвата соединения сервером отказались (как ни как, а держать 20-30 открытых постоянно соединений - это не круть). Ведь теперь у нас работа операторов не пересекается... То есть, если один оператор работает с заказом, то другому этот заказ не покажится как приоритетный... А значит другой оператор не возьмёт заказ на обработку. Насчёт думаю больше часа ))... Не думаю... Я на каждое письмо отвечаю сразу после прочтения, без раздумий... Вы мне указываете на проблему - я сразу пишу ответ как её избежать... Так что в общей сложности я думал минут наверное.... 10 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 15:57 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
KarbafosПрограмёрПожалуйста, хотите что бы при обрыве данные об изменениях не терялись - пишите не в сессию, а во временную таблицу :) Это не суть важно... об обрыве соединения как таковом не задумывался, так как обойти несложно.... обрыв соединения с БД в бэкенде, во временную не записалось =) блин, для веба сходу можно придумать минимум 3 варианта, как не допустить коллизий. разной степени замороченности, но так или иначе решающих проблему. просто интересно а по поводу сервер сам пнет, если надо будет, то пнет клиента в ответ на его запрос =) каким образом, сам думай. Обрыв соединения во время работы с БД... данные не сохранились... какая разница? ))) То есть, Вам будет легче, если они не сохранятся в основную таблицу, чем если они же не сохранятся во временную? Не понимаю фишки )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 16:00 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
автор(как ни как, а держать 20-30 открытых постоянно соединений - это не круть) а прыгать в гриде по 100к ячеек, вызывая при этом запрос сервера на версионность ячейки в текущий момент и, при нажатии ЭНТЕР посылать запрос на обновление данных - это круть!!! авторОбрыв соединения во время работы с БД... данные не сохранились... какая разница? ))) То есть, Вам будет легче, если они не сохранятся в основную таблицу, чем если они же не сохранятся во временную? Не понимаю фишки )) фишка в обновлении одной единственной строки (которая не обновилась при разрыве)! и обновлении большой таблицы данных, над исправлениями в которой ты потратил 3 часа!!! ты как из ДС - кнопочка "обновить"!!! вроде что-то делал, а элементарных вещей незнаешь или "не задумывался" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 16:48 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавтор(как ни как, а держать 20-30 открытых постоянно соединений - это не круть) а прыгать в гриде по 100к ячеек, вызывая при этом запрос сервера на версионность ячейки в текущий момент и, при нажатии ЭНТЕР посылать запрос на обновление данных - это круть!!! авторОбрыв соединения во время работы с БД... данные не сохранились... какая разница? ))) То есть, Вам будет легче, если они не сохранятся в основную таблицу, чем если они же не сохранятся во временную? Не понимаю фишки )) фишка в обновлении одной единственной строки (которая не обновилась при разрыве)! и обновлении большой таблицы данных, над исправлениями в которой ты потратил 3 часа!!! ты как из ДС - кнопочка "обновить"!!! вроде что-то делал, а элементарных вещей незнаешь или "не задумывался" 1. Я не говорил, что при переходе между ячейками надо запрашивать версионность... А если даже и нужно было, удерживание соединения сервером - это то же самое... Сервер может ответить только единожды, после чего соединение закрывается (как помним в целях безопасности мы не можем создавать keep-alive соединения). Потому перезапрос будет происходить даже при push запросах. 2. На то и делаются транзакции )) При обрыве соединения мы получим ошибку, а изменения применены не будут никакие, после возобновления связи мы делаем перезапрос на запись и вносим все изменения одним разом.... Намного хуже, если мы в базу сохранили 100 полей, а сто первое не сохранилось... Потом оператор, который обрабатывает заказ дальше, не знает, что последняя позиция обновлена не была, и обрабатывает её старое значение... в итоге косяк. Так лучше думаете? 3. За ссылки спасибо, чуть позже почитаю... Уехать надо )) Завтра утром постараюсь прокоментировать то, что вычитаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 17:04 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
авторТак лучше думаете? 14779585 - вот так я думаю... для веб вполне эффективно и нересурсоёмко!!! автор При обрыве соединения мы получим ошибку, а изменения применены не будут никакие, после возобновления связи мы делаем перезапрос на запись и вносим все изменения одним разом.... год прошёл!!! все данные изменены уже сотню раз другими людьми - а мы перезаписали своими прошлогодними данными!!! Уехать надо )) СБ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 17:32 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноот всех возможных минусов избавиться помогает один способ - не притрагиваться к клавиатуре... ;) 1. на клиента тянется минимальное кол-во строк 2. эдит строки с нового запроса 3. _revisions Karbafos вот ты и подумай!!! http://en.wikipedia.org/wiki/Push_technology а что тут думать, делать надо! =) можно и лонг поллинг заюзать, либо самодельного ТМ сделать(делается 1 раз для 99% задач) к тому же, даже не используя все это, можно делать всякие проверки, на основе как раз ревизий + обмен служебной инфой до, во время и после сохранения, чтобы убедится в том, что данные лежат там, где нужно и как нужно. можно одними ajax'ами обойтись, а модель поведения при конфликтах уже из области как больше нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 17:35 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Karbafos ну и! в отличии от этого 14776823 оппонента - ты это делал! ТС-у изначально рекомендовали не заморачиваться на UI а изучить основы веб, дабы не тратить время впустую! ИМХО - он это понял, в процессе прочтения топа! все счастливы, все довольны! что ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 18:37 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
просто интересноавторТак лучше думаете? 14779585 - вот так я думаю... для веб вполне эффективно и нересурсоёмко!!! автор При обрыве соединения мы получим ошибку, а изменения применены не будут никакие, после возобновления связи мы делаем перезапрос на запись и вносим все изменения одним разом.... год прошёл!!! все данные изменены уже сотню раз другими людьми - а мы перезаписали своими прошлогодними данными!!! Уехать надо )) СБ!!! Значит об актуальности данных должна судить система? )) приколько ... То есть я выбрал ячейку, система знает, что она актуальна... я её меняю... система знает что данные актуальны... кто-то удаляет данное поле, клиентская часть (не важно как) узнаёт об изменении структуры... как ей поступить? Обламись поля нету, я его удаляю? :) или как? всёровно проверка будет только до и после... и если есть конфликт - он должен решаться... Вообщем ладно, спор заходит в тупик, так как подходы у нас разные .... очень разные :)... приятно было пообщаться... удачи всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2013, 22:54 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Вот кстати ребят, есть вопрос по поводу одной процедуры, который предложил skyANA , чтобы продемонстрировать юзабельность фокуса и вставки инпута в таблицу в контейнер span. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Все супер, скрипт отлично отрабатывает , с логикой работы разобрался. Но есть один неприятный момент. Что после где то шестого седьмого клика процедура перестает отвечать, и чтобы заново все заработало необходимо чуть чуть подождать и потыкать в свободное пространство документа. То есть перестает становиться юзабельной, пригодной для вставки таблица. Есть какой то лимит по выделяемой памяти на event события, или что? Такое ощущение что память забивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 18:14 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, что-то не замечаю такого поведения, что за браузер? И перепишите сей говнокод: анонимные функции - плохо Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 20:01 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Ну по первому варианту он плохо отрабатывал в опере, хроме и эксплорере. То есть это не связано было видимо с браузером. Смысл в следующем, была таблица 7 полей, 5 строк и я поэксперементировал с вашим первоначальным вбросом. Если понажимать на ячейки курсором, то где то с седьмого клика вставка инпута прекращается и ячейки перестают реагировать на вход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 20:32 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, в моём варианте нет обработки нажатия курсорных клавиш. И нет, описываемых Вами проблем в Хроме. Может покажете свой код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 22:08 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
skyANA, Я не имею в виду событий на стрелки. Ваш имею в виду именно тот который про фокус. Сейчас доберусь до стационарного компа , покажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 22:56 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Вот: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. почему то если долго гонять иногда при выходе из ячейки остается вставленный инпут. и иногда залипает клик, и при нажатии на ячейку новую инпут наоборот не вставляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2013, 23:52 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Почистил кэш, все заработало. Там в более раннем коде стояли ссылки на другие версии Jquery. Пардоньте! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 14:52 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Коллеги, в продолжении текущей ветки хочу задать вопрос SkyAna. Проанализировал коды ввода и отмены фокуса. Проанализировал коды перемещения по таблицы по стрелкам клавиатуры. Создал и осмыслил по последней процедуре сам некое подобие функции перемещения: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. С реализацией горизонтального перемещения влево вправо при помощи стрелок клавиатуры разобрался. С индексами тега <td> проблем нет, они в наборе по умолчанию принимают каждый приращение на 1. Зацепиться с помощью eq() и find() не составило сложности. А вот с кнопками вниз case 40: и вверх case 38: возникло небольшое затруднение. Индекс у строки <tr> в таблице один на всю таблицу? Помогите пожалст, немного не дожал вертикальные перемещения. Хочу именно по своему примеру. Вот этот кусок срабатывает некорректно: Код: javascript 1. 2. 3. 4. 5. 6. Перемещение указателя идет один раз вниз,а последующее уже не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 18:45 |
|
||
|
небольшой вопрос по краткости-сестре таланта)
|
|||
|---|---|---|---|
|
#18+
Мда. Я конечно не знаток jQuery, но как-то так: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 23:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=23&tid=1463452]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
99ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 406ms |

| 0 / 0 |
