Pull to refresh

Comments 53

И да — есть, конечно, phpmyadmin. Есть Django с офигительными админками из коробки.

Данное решение — это на тот случай, когда надо за 5 минут сделать сносную админку, понятную непрограммисту, а на хостинге только php и mysql. Как временная замена нормальной админке.
Вопрос, эта штука работает с таблицами напрямую или можно организовать виртуальную таблицу, которая бы замещала данные в нескольких реальных? К примеру есть таблица пользователей, у которой дополнительные связи. К примеру часто меняющиеся данные в одной таблица, не меняющиеся — в другой, а статистика в третьей, можно ли их здесь объединить в одну и удобно редактировать?

Если да — цены не будет Вашей админке, если же нет — то, простите, еще один велосипед на тему пхп админа. В режиме админа выглядит довольно жутковато.
Работает напрямую.
Но поддерживаются связи 1 ко многим между двумя таблицами. Таким образом, можно сделать одну таблицу, завязанную на две другие. Во время правки юзеров можно выбрать из выпадающего списка значения из связанной таблицы :)
Что касается Вашей задачи, если Вы ее чуть подробнее и детальнее опишите — думаю, легко можно допилить.

Но там в принципе код phpMyEdit страшный, и само решение трудно лепить как заблагорассудится.
ну задача очень распространенная, особенно если загруженный сервер, часто редактируемые данные выносятся в отдельные таблицы, часто данные в связных хранятся и так далее. По сути речь идет о нескольких таблицах, причем линейных, 1 к 1, связанные через ID. В моем случае на одном из проектов можно выделить хранение юзера, я писал интеграцию с phpbb3 и в итоге получается:

phpbb3_users и в ней поле user_id (без изменений, в случае если нужно будет апдейтить форум и т.д.)
дальше рядом моя таблица users с нужными для проекта данными, ясное дело избыточности нету, ни username, ни email в ней не найдете, но вот id и кучу другой информации — запросто. В пхпбб немного переписан механизм сессии и он утягивает не только свою юзерс но и поля из моей таблицы, а вот в пхп админе редактировать их приходится раздельно. Можно усугубить и добавить какое-нибудь понятие кармы и других часто изменяемых значений, которые могут переписываться очень часто и чтобы не мучать большую таблицу с кучей полей — вынести эту карму в третью, тогда надо редактировать уже 3 таблицы. Для этого была написана своя админка, но вот более глобального решения, которое бы, к примеру, принимало структуру базы со связями и универсально строило админку для подобных случаев не делал.
а, ну так это можно решить вьюшкой.
то есть
а) в базе делается вьюшка create view my_view as select ...fields… from table1 join table2 on table2.key = table1.some_key…
б) QuickAdm допиливается за 1 час, чтобы уметь просто создавать ОПИСАНИЯ объектов и свойств, не привязываясь к объектам. дальше описываем my_view.
ну а если влом допиливать — прямо берем, за 10 минут врубаемся в phpMyEdit и настраиваем его на нашу вьюшку (но тут поля уже придется описывать в коде)
в) профит!
Ну это как бы было пожеланием, если Вы решите продолжать поддерживать проект. Если же нет — то смысла в нем и не было, когда есть пхпадмин.
Я решил поделиться наработкой.

Если развивать — я бы нахер переписал с нуля, с ООП и как нужно, но влом.
В любом случае, спасибо за обозначение проблемы.
в симфони понятно что это есть, но тянуть ее еще ой как не хочется. Тут можно и VIEWом, действительно, сделать гораздо проще, но вот чтоб не париться и автоматом все генерить — чем не «пожелание» для данного топика?
В случае загруженного сервера у вас есть и администратор, и более продвинутые тулзы для администрирования. Это не usecase для указанной в посте тулзы.
а ещё в названиях обьектов
блин, эта штука не предназначена для этого :) в сферическом вакууме это нужно, а в реале ИМХО нет.

то бишь админ правит и настраивает объекты и свойства.
а обычным юзерам даются просто доступы к таблицам, но никак не к самой части.

предполагать, что админ такой зверь, что сам себе делает XSS, это круто.

хотя конечно бывают случаи, когда уводят акк админский
Всякое бывает, и вообще это культура программирования писать правильный код не надеясь что никому не придет в голову использовать уязвимость
Согласен. У самого любимая фраза — «до 90% кода — обработки ошибок и исключительных ситуаций, а также вывод информации о состояниях».
Но тут исключение — сделал до некоей рабочей фазы и не стал вылизывать.
пофиксил
в названиях свойств и объектов

перезалил архив
в yii crud генератор делает нечто подобное
Посмотрев лог в конец убедился, что функционал в demo надо отключать.
А тогда не поймешь. Большинству хочется пощупать сразу — я сам такой.
Произошла ошибка при выполнении файла /usr/local/www/hosting/yamozg.ru/www/adm/Adm/Table.php на строке 72:
Ошибка выполнения запроса CREATE TABLE ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE = MYISAM; к БД: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE = MYISAM' at line 1
плохо, что нельзя Делать свойствами селекты (ENUM с точки зрения БД)
ух, тут больше нельзя, чем можно :)
Вообще это решается так
1. либо дополнительная таблица + связь с таблицей в исходной. будет селект
2. либо так — добавляется свойство типа «связь с таблицей», которому в «Дополнительная информация» пишется
что-то типа
values2=a:3:{i:0;s:3:«Раз»;i:1;s:3:«Два»;i:2;s:3:«Три»;}

синтаксис:
values2=… тут сериализованны массив вида:
array('0' => 'Раз',
'2' => 'Два')

пример можно посмотреть — поле Тестовый селект в Оргтехнике www.yamozg.ru/adm/adm_3/
И не очень удобен сквозной список свойств, а не фильтрованный по объекту
согласен. но там есть фильтр :)
Спасибо! Давно хотел что-нибудь подобное найти.
MySQL error 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `x` WHERE (`id`=0)' at line 1
любитель мокрых кисок:)

добавьте поля, и будет ок
Эт понятно :) тока ошибку всеравно не надо
у меня такой же велосипед есть. Без сортировки, зато с поддержкой enum/set/прав пользователей/связок многие ко многим и прочей фигней.
Но код написан мной 5 (пять!) лет назад и мне очень не нравится.
Дважды пытался переписать заново на ext.js, но не доходили руки.
Тоже баловался на заданную тему — получился конструктор админок, но реального применения не нашел.
Оказалось удобнее писать текстовые конфиги, на основе которых будет генериться часть приложения.

Doctrine admin generator вам в помощь. Никаких велосипедов, граблей и мучений. А если хостинг не поддерживает — значит, либо хостинг Вам не подходит, либо проект настолько маленький, что админку и с нуля за 5 минут написать можно :).

З.Ы. Не в коем случае прошу не расценивать как критику. С точки зрения самообразования подобные велосипеды очень многим часто бывают нужны.
Вам определенно нужно попробовать Symfony.
Сейчас прибежит толпа планктона со словами «А вот в (сюда подставить какой-нибудь готовый инструмент типа RoR или Симфони) такое мог когда вы еще под стол пешком ходили. Хватит изобретать велосипеды.» либо «Ну для общего развития полезно.».
Я, если честно, хотел поделиться готовым работающим решением, которое меня не раз выручало. Open Source и все такое. Сам юзаю Линукс и щастлив до ушей.

Дозреваю до участия в проектах опен-сурс потихонечку.
Я считаю что специфичные решения для себя лучше универсальных от всяких фреймворков.
Посмотрел код, несколько советов:
1. Плюньте на cp1251, переходите на utf8.
2. Оператор "@" очень медленный. Вместо "$hn = @$_POST['hn'];" пишите "$hn = isset($_POST['hn'])? $_POST['hn']: null;"
3. Старайтесь комментировать проекты на тех языках, на которых они комментируются изначально. В проекте сейчас сильно перемешан русский и английский.
4. Если проект имеет систему локализации, то при доработке следуйте ей, вместо того, чтобы просто писать по-русски.
5. Старайтесь не перемешивать PHP и HTML.
6. addslashes — очень плохая функция. "$title = addslashes($_GET['title']); if($obj->query(«insert into adm_favorites(user,url,title) values('{$_SERVER['PHP_AUTH_USER']}','$url','$title')»)){" — не используйте addslashes, используя вместо этого эскейпинг, специфичный для конкретной БД (например, с помощью PDO). Кроме того, не используйте конкатенацию строк в запросах, используйте абстракцию для вставки параметров в запрос. Хотя бы такую простую как: dklab.ru/lib/DbSimple/
Спасибо за коммент.
PHP+HTML, а также весь мусор от того, что phpMyEdit не мой, а состоит как раз из этой каши. Я лишь писал поверх него.

А так я фанат MVC, свой фреймворк (два велосипеда), люблю Yii, и тд. То есть не думайте плохо :)
дельные замечания про доработки и локализации. сенкс
Если кому интересно, вот так выглядит PhpMyEdit в более презентабельном виде:
Скрин 1, Скрин 2, Скрин 3.
Это админка моего велосипеда. PhpMyEdit работает как библиотека для CodeIgniter — загружаешь в нее модель, получаешь интерфейс.
Доделаю — поделюсь (чуть-чуть осталось). Правда опасаюсь, что меня тут же смешают с говном за очередной велосипед.
Видимо, моему посту нужно было появиться, чтобы появился Ваш комментарий :)
Скачайте здесь azumi.ru/azumi.zip (~10Мб — тяжеловат из-за тестовых картинок в демо-сайте)
Как установить: файл install-ru.txt в корне.
Да, будьте осторожны и имейте ввиду, что это не готовая система, а просто моя игрушка. Я ее особо не рефакторил и не проверял.
не понимаю, и что здесь сносного?
работает из коробки
В качестве админки к MySQL можно использовать Eonza — eonza.org. Я ее в качестве админки для сайтов клиентов ставлю.
Sign up to leave a comment.

Articles