И да — есть, конечно, phpmyadmin. Есть Django с офигительными админками из коробки.
Данное решение — это на тот случай, когда надо за 5 минут сделать сносную админку, понятную непрограммисту, а на хостинге только php и mysql. Как временная замена нормальной админке.
Вопрос, эта штука работает с таблицами напрямую или можно организовать виртуальную таблицу, которая бы замещала данные в нескольких реальных? К примеру есть таблица пользователей, у которой дополнительные связи. К примеру часто меняющиеся данные в одной таблица, не меняющиеся — в другой, а статистика в третьей, можно ли их здесь объединить в одну и удобно редактировать?
Если да — цены не будет Вашей админке, если же нет — то, простите, еще один велосипед на тему пхп админа. В режиме админа выглядит довольно жутковато.
Работает напрямую.
Но поддерживаются связи 1 ко многим между двумя таблицами. Таким образом, можно сделать одну таблицу, завязанную на две другие. Во время правки юзеров можно выбрать из выпадающего списка значения из связанной таблицы :)
ну задача очень распространенная, особенно если загруженный сервер, часто редактируемые данные выносятся в отдельные таблицы, часто данные в связных хранятся и так далее. По сути речь идет о нескольких таблицах, причем линейных, 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ом, действительно, сделать гораздо проще, но вот чтоб не париться и автоматом все генерить — чем не «пожелание» для данного топика?
Согласен. У самого любимая фраза — «до 90% кода — обработки ошибок и исключительных ситуаций, а также вывод информации о состояниях».
Но тут исключение — сделал до некоей рабочей фазы и не стал вылизывать.
Произошла ошибка при выполнении файла /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
Вообще это решается так
1. либо дополнительная таблица + связь с таблицей в исходной. будет селект
2. либо так — добавляется свойство типа «связь с таблицей», которому в «Дополнительная информация» пишется
что-то типа
values2=a:3:{i:0;s:3:«Раз»;i:1;s:3:«Два»;i:2;s: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 минут написать можно :).
З.Ы. Не в коем случае прошу не расценивать как критику. С точки зрения самообразования подобные велосипеды очень многим часто бывают нужны.
Сейчас прибежит толпа планктона со словами «А вот в (сюда подставить какой-нибудь готовый инструмент типа 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/
Если кому интересно, вот так выглядит PhpMyEdit в более презентабельном виде: Скрин 1, Скрин 2, Скрин 3.
Это админка моего велосипеда. PhpMyEdit работает как библиотека для CodeIgniter — загружаешь в нее модель, получаешь интерфейс.
QuickAdm — быстрые универсальные админки