Как за 5 мин создать шаблон с удобным веб интерфейсом (админкой).

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
Все вы знаете, что в Zennoposter появилась прекрасная возможность работать с базами данных. И основной вопрос: “В чем же преимущество базы данных над excel таблицей”. Самый очевидный ответ – база данных позволяет легко манипулировать строками, т.е. задавать критерии поиска, сортировки и т.д. И все это – одной строчкой кода. Единственный минус – это плохая визуализация. Поэтому в данной статье я покажу, как за 5 минут создать для базы красивый веб интерфейс (админку). И для этого не нужно обладать какими-то знаниями.
В этом нам поможет XCRUD. XCRUD – php скрипт, который за две минуты поможет вам визуализировать таблицу, которую легко редактировать. Также у него имеется ряд удобных фишек, о которых речь пойдет ниже.
Итак, первое что нужно, это скачать скрипт и закинуть его на хостинг (если у вас нет хостинга, то можете работать через OpenServer).
Далее переходим в папку xcrud и редактируем файл xcrud_config.php (прописываем данные для подключения к базе данных):
Код:
// default connection
public static $dbname = 'xcrud'; // Имя базы данных
public static $dbuser = 'root'; // Имя пользователя
public static $dbpass = ''; // // Пароль пользователя
public static $dbhost = 'localhost'; // Хост.
Те же самые данные мы добавляем в Zennoposter в настройки подключения к базе данных.

Основная часть сделана. Осталось создать в корне домена файл index.php и добавить туда несколько строчек кода:
Код:
include('xcrud/xcrud.php');
$xcrud = Xcrud::get_instance();
$xcrud->table(‘xcrudtable’);
echo $xcrud->render();
Где xcrudtable – название таблицы базы данных
По сути, после этого у нас уже получается что-то наподобие таблицы Excel, ячейки которой легко редактировать.




Однако данный скрипт позволяет сделать намного больше.
Все удобства пишутся в виде функций в файле function.php
Приведу несколько примеров из шаблона для публикации постов Вконтакте.
  1. Кнопка для быстрой модерации постов.

При нажатии на эту кнопку меняется значение в столбце ‘Опубликовать’. Т.е. мы быстро можем поставить нужный нам пост на модерацию, одним кликом мыши.
При этом в самом шаблоне достаточно выбирать все посты, у которых значение в столбце publish (Опубликовать?) равно 1.

Все просто. В самом файле index.php делаем следующее.
Создаем экшны:
Код:
$xcrud->create_action('publish', 'publish_action'); // action callback, function publish_action() in functions.php
$xcrud->create_action('unpublish', 'unpublish_action');
И кнопки, которые будут вызывать эти экшны.
Код:
$xcrud->button('#', 'unpublished', 'icon-close glyphicon glyphicon-remove', 'xcrud-action',
array( // set action vars to the button
'data-task' => 'action',
'data-action' => 'publish',
'data-primary' => '{id}'),
array( // set condition ( when button must be shown)
'publish',
'!=',
'1')
);
$xcrud->button('#', 'published', 'icon-checkmark glyphicon glyphicon-ok', 'xcrud-action', array(
'data-task' => 'action',
'data-action' => 'unpublish',
'data-primary' => '{id}'), array(
'publish',
'=',
'1'));
Все, осталось в файле function.php описать, что будут делать вызываемые функции 'publish_action' и 'unpublish_action'
В нашем случае, они будут менять значение в столбце ‘Publish’ с нуля на единицу.
Код:
function publish_action($xcrud)
{
if ($xcrud->get('primary'))
{
$db = Xcrud_db::get_instance();
$query = 'UPDATE groupvk SET `publish` = \'1\' WHERE id = ' . (int)$xcrud->get('primary');
$db->query($query);
}
}
function unpublish_action($xcrud)
{
if ($xcrud->get('primary'))
{
$db = Xcrud_db::get_instance();
$query = 'UPDATE groupvk SET `publish` = \'0\' WHERE id = ' . (int)$xcrud->get('primary');
$db->query($query);
}
}
Кстати, все таблицы, для того, чтобы они корректно работали с xcrud, должны иметь столбец id – первичный ключ.
XCRUD еще хорош тем, что он автоматически умеет определять, какого типа у вас столбцы, и в зависимости от этого меняет интерфейс при редактировании. Так, если у вас будет в базе данных ячейка типа Дата, то при редактировании будет удобный календарь.

 
Тема статьи
Другое
Номер конкурса статей
Шестой конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Прям в тему,то что нужно,как раз собирался расширить свой опыт в плане БД,а то в шабах списки и таблицы,но уже чувствуется что нужно переходить к БД.
За статью спасибо!
 

GeGold

Client
Регистрация
28.09.2015
Сообщения
778
Благодарностей
370
Баллы
63
Прям в тему,то что нужно,как раз собирался расширить свой опыт в плане БД,а то в шабах списки и таблицы,но уже чувствуется что нужно переходить к БД.
За статью спасибо!
Это точно, бд такая штука, которая рано или поздно нужна всем, но ппц как лень за неё браться))
 

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
Теперь можно одним кликом ставить посты на публикацию и задавать дату публикацию, а в Zennoposter лишь делать проверку этих двух условий.

Код:
SELECT * FROM groupvk WHERE publish = '1' AND result <> 'Опубликовано' AND group_name <> '' AND (TO_DAYS(NOW()) - TO_DAYS(date_insert) >= 0 OR date_insert = ''
Также легко модерировать картинки. Если прописать в файле index.php для какого- либо столбца такую строчку.

Код:
$xcrud->change_type('image_vk', 'remote_image');
$xcrud->modal('image_vk');
А в зеннопостер, предположим, собирать внешние url адреса на картинки и записывать их в ячейки столбца 'image_vk', то просматривать и модерировать их будет очень удобно.



Можно изменять стили ячеек. Например, шаблон успешно опубликовал запись и нам надо не только записать это в базу но и выделить зеленым цветом. В zennoposter мы записываем в ячейку базы данных, что запись Опубликована через UDATE:




А в XCRUD окрашиваем все ячейки, которые содержат текст ‘Опубликовано’ в зеленый цвет

index.php:
Код:
$xcrud->highlight('result', '=', 'Опубликовано', '#DFF2BF');
Также очень удобно реализована возможность манипулирования данными перед вставкой. Например, я передаю в базу данных id видеозаписи, но хочу, чтобы отображалась картинка-значок, при клике на который появлялась видеозапись.

Все просто.

Задаем, что будем перед занесением данных в столбец ‘video' запускать функцию 'after_upload_video'
Код:
$xcrud->column_callback('video','after_upload_video');
Сама же фунция (которую мы объявляем в файле function.php), берет значение и перед публикацией оборачивает его в нужный нам html код.
Код:
function after_upload_video ($value, $fieldname, $primary_key, $row, $xcrud)

{

if($value != '')

{

return '<a href="https://vk.com/'.$value.'" target="_blank" ><img src="/images/movie_file.png" style="border:none; width:35px"></a>';

}

else

{return '';}

}
Zennoposter + любое crud приложение дает возможность написать для себя удобный софт и не запутаться в куче файликов и табличек. А также дает возможность управлять шаблонами в любое время и в любом месте (хоть с телефона).
 

Вложения

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
вторая часть статьи вообще порвала))) мощно...:az:
 
  • Спасибо
Реакции: Лев

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
ну так скажем, на уровне 6 конкурса статей)) ошибка какая то постоянно лезла, пришлось на две части разбивать))
 

DenisK

Client
Регистрация
28.06.2016
Сообщения
591
Благодарностей
289
Баллы
63
Да, тему с БД и работы с ними, давно можно раскрыть, но пока их не так много.

Интересно, спасибо.
 
  • Спасибо
Реакции: kagorec и Лев

stud

Client
Регистрация
23.06.2013
Сообщения
88
Благодарностей
140
Баллы
33
@Лев
А можешь приложить XCRUD скрипт, на примере которого статья?
 

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
Скрипт немного платный, стоит 12$, но так скажем, уже с третьей строчки гугла и до 100-й он лежит в открытом доступе. Если не удастся найти, то пишите в ЛС, я вам скину (сюда наверно платные скрипты не стоит постить). А вообще, сейчас очень много таких crud php приложений, и при этом бесплатных https://github.com/search?utf8=✓&q=crud+php . Единственное, они конечно создадут вот такую легко редактируемую 'excel' таблицу, но в плане расширений и удобств они немного уступают (хотя может уже и нет).
 

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
126
Баллы
43
Иногда вместо column_callback удобней использовать column_pattern, таким образом внутри таблицы остаются прежние значения, а в табличке выглядит как вам надо.
Например если есть столбец с id групп вк, нам точно не надо добалять к нему ничего лишнего, но хотелось бы изменить вид, тут то нам и придёт на помощь column_pattern.
$xcrud->column_pattern('gid', '<a href="https://vk.com/public{value}" target="_blank">{value}</a>');

В итоге получаем вот такой первый столбец, кликабельный, при этом при запросах к нему он будет выдавать нужный нам id без лишнего кода.



Лев, единственное не разбираюсь, как передавать несколько параметров в функцию. С одним параметром всё норм.
Создал экшен.
Создал кнопку: $xcrud->button
и таким образом вызываю экшен и передаю ему данные из столбца gid
'data-task' => 'action',
'data-action' => 'parsed_name_group',
'data-primary' => '{gid}'),
Вопрос: Как передать несколько параметров в функцию, включая примари?
 
  • Спасибо
Реакции: Лев

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
Попробуй добавить наряду с data-primary, какой-нибудь 'data-name' => '{name}', где name - название другого столбца, а в функции уже $xcrud->get('name') - получаешь текущее значение name. Если я правильно вопрос понял. У меня сейчас нет возможности протестировать. Если не получится - вечером посмотрю.
 
  • Спасибо
Реакции: deopl

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 472
Благодарностей
575
Баллы
113

Yumza

Client
Регистрация
09.05.2015
Сообщения
24
Благодарностей
8
Баллы
3
Огромное спасибо. Давно хотел перевести на Mysql отчеты и статистику, но визуализировать все это через phpMyadmin както не очень, а так через xcrud очень даже симпатичненько :-)
 
  • Спасибо
Реакции: lzlmrf

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
Кто то может скинуть в личку XCRUD ?
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
Прошу помощи с запуском этого xcrud. Установил на локалхост. При запуске demo, все нормально работает. Проблемы начались при подключении своей таблицы через index.php . Вначале забыл поставить <?php ?> ) Но это мелочи.. Почему то выдает такое сообщение - http://prntscr.com/esq9wr xCRUD can not create session, because the output is already sent into browser. Try to define xCRUD instance before the output start or use session_start() at the beginning of your script . Код тот что в начале статьи.. Поставил перед скриптом session_start(); как советуют - таблицу вижу но ворнинги посыпались
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at W:\domains\facebook.loc\index.php:1) in W:\domains\facebook.loc\index.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at W:\domains\facebook.loc\index.php:1) in W:\domains\facebook.loc\index.php on line 2
Кодировка файлов в utf-8
<?php
session_start();
include('xcrud/xcrud.php');
$xcrud = Xcrud::get_instance();
$xcrud->table('akaunt');
echo $xcrud->render();
?>
Подскажите где косяк?
 
  • Спасибо
Реакции: zennoX

Yumza

Client
Регистрация
09.05.2015
Сообщения
24
Благодарностей
8
Баллы
3
у тебя перед первым "<? " после которого стоит session_start() стоит пробел или какойто символ, может быть даже невидимый
 
  • Спасибо
Реакции: lzlmrf

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
едрид мадрид)) точно
спасибо большое..я уже в конфиг полез
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
Может кто сталкивался..при правке записи из xcrud - во все поля заносится тег <p>
<p>man</p> <p>Jo&atilde;o</p> <p>Bryan</p
Загруженое фото также пропадает http://take.ms/i91Cz
Как вылечить?
 

Yumza

Client
Регистрация
09.05.2015
Сообщения
24
Благодарностей
8
Баллы
3
нужно переделать тип данных в ДБ из text в varchar тогда редактирование не будет происходить через редактор и не будут добавляться "<p>"
 
  • Спасибо
Реакции: lzlmrf

artur23

Client
Регистрация
14.04.2014
Сообщения
202
Благодарностей
15
Баллы
18
Клевая тема - но нужно разбираться...
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
  • Спасибо
Реакции: Koqpe

photograph

Client
Регистрация
04.09.2015
Сообщения
11
Благодарностей
4
Баллы
3
Скажите пожалуйста, каким образом выводятся картинки из базы?

UPD разобрался)
 
Последнее редактирование:

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Очень неплохо, спасибо за идею.
Не понял только как можно сделать фильтр, например выводить в таблице только активные аккаунты, у которых соотв. поле в базе True (например). Стандартной функции я почему-то не нашел.
 

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
Рядом с пагинацией есть кнопка Search, ее нажимаешь, указываешь ключ и выбираешь столбец, в котором этот ключ искать.
 

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Все, нашел. Все оказалось очень просто.
$xcrud->where
 
Последнее редактирование:

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Будьте аккуратными с тем что встроенный редактор любит добавлять теги <p></p> в текстовые поля при редактировании записи (даже если само поле не редактировалось), в результате чего все записи могут принять вид навроде <p>[email protected]</p> и т.д. что может вылиться в проблему, т.к. сам XCRUD их не показывает вообще а в базе они есть.
 

vipdosugint

Client
Регистрация
19.10.2014
Сообщения
9
Благодарностей
2
Баллы
3
Кому не сложно можете в личку скинуть xcrud
 
Последнее редактирование:

Segio

Client
Регистрация
13.06.2015
Сообщения
66
Благодарностей
9
Баллы
18
Привет всем...
Понадобилось прикрутить бд к своим проектам, зашёл на форум и воспользовался поиском....
Прочитал статью, и сразу же купил xcrud.
Но так и не получилось завести это дело.
Что я делаю неправильно ?

1.Пользуюсь MAMP, распаковал архив и засунул его в htdocs

2.Захожу в phpmyadmin и жму на создать новую бд

конкретно вот так

3.Создаю файл index.php

4.Пишу в него слейдующее


после чего запускаю файл index.php и браузер у меня показывает такое

Подскажите пожалуйста, что я делаю не так. Да с бд столкнулся впервые
 

Вложения

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113

SHELBY

Client
Регистрация
09.09.2016
Сообщения
237
Благодарностей
291
Баллы
63
Привет всем...
Понадобилось прикрутить бд к своим проектам, зашёл на форум и воспользовался поиском....
Прочитал статью, и сразу же купил xcrud.
Но так и не получилось завести это дело.
Что я делаю неправильно ?

1.Пользуюсь MAMP, распаковал архив и засунул его в htdocs

2.Захожу в phpmyadmin и жму на создать новую бд

конкретно вот так

3.Создаю файл index.php

4.Пишу в него слейдующее


после чего запускаю файл index.php и браузер у меня показывает такое

Подскажите пожалуйста, что я делаю не так. Да с бд столкнулся впервые
Оберните ваш код в
PHP:
<?php
include(xrud....
?>
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)