cms5.ru - пишем CMS с нуля!
Образовательный блог для новичков и не только.
Перед тем как скачать, прочитайте
важную информацию.



Главная

Рубрики: Счетчики:


Чем больше комментариев,
тем чаще обновления :-)

27 статей на сайте
Автор сайта: KrutoPAPA

Релиз версии 0.2



Скачать движок cms5 (Версия 0.2.14)


Особенность релиза - Административный интерфейс
+ Добавлено "Быстрое создание страницы", "Удаление страницы", "Редактирование страницы"




Администрирование "Структуры" - Часть 4 - Редактирование



Добрались по самого интересного, будем редактировать наши страницы структуры. Статья сегодня будет объемной, поэтому запаситесь чем можете: кофем, пивом, чипсами, временем, терпением (ненужное зачеркнуть).

Готовы? Поехали по шагам.

1) Первым делом создаем отдельный файл /cms5-admin/structure/edit.php



Содержимое файла, можно сказать шаблонное, подключение верха(header), низа(footer), коннект к базе, вывод заголовка.

Добавим особую строчку с функцией mysql_real_escape_string.



Файл для работы готов, закроем его временно. Продолжаем.

2) Открываем файл /cms5-admin/structure/index.php. Нам нужно установить правильную ссылку по нажатию на [редактировать]. Проводим похожую операцию, как мы делали ссылку для удаления. Только указываем не параметр type, а ссылаемся на новосозданный файл edit.php с переданным параметром ID. Я думаю тут все понятно, ничего сложного нету :-)



Сохраняем, закрываем файл index.php (он нам сегодня больше не понадобится) и можем проверить что по [редактированию] мы перейдем на пустую страницу. Теперь давайте сделаем нечто очень важное. Вернемся в edit.php, работы тут предстоит очень много.

3) Нам нужно вывести форму с полями и кнопкой сохранить. Не будем очень далеко забегать вперед и сделаем простое редактирование - менять будем только "Название страницы". На языке html сформируем простенький код с текстовым полем и кнопкой (submit). Добавим также один sql запрос, чтобы система знала каккую страницу мы хотем редактировать. Обратите внимание, что вместо SELECT *, я использовал конструкцию SELECT /Список нужных нам полей/, пока напишем там только NAME.



Код пишем ниже заголовка, код простой, я думаю не нужно все тут разжевывать. В форме(action) ставим ссылку на edit с параметром id, метод отправки мы выбираем post (а не get), так как тексты страницы у нас возможно будут длинными. Даем текстовому полю имя edit_name и обязательно в значение поставим функцию htmlspecialchars (мы же хотем решить задачу с "неправильными кавычками").

Текстовая версия ниже :))

<?

$editsql
=mysql_fetch_array(mysql_query("
                            SELECT NAME 
                            FROM cms5_structure
                            WHERE id='"
.$id."'
                            "
));
?>

<form action="/cms5-admin/structure/edit.php?id=<? echo $id?>
   method="post" name="edit">

    Название: 
    <input name="edit_name" value="<? echo htmlspecialchars($editsql[NAME]);?>">
    <input type=submit value="Сохранить">
</form>
5) Следующим шагом добавим проверку на нажатие кнопки. Другими словами, если наш php-скрипт обнаружит что есть данные, переданные методом POST, значит событие нажатия кнопки будет "активировано".



Код:
<?
// Редактирование
if ($_POST)
    {
    
// echo $_POST[edit_name];
    
$e_edit_name=mysql_real_escape_string($_POST[edit_name]);

   
$editupdate=mysql_query("UPDATE cms5_structure SET
                           NAME='"
.$e_edit_name."'
                           WHERE ID='"
.$id."'
                           "
);
    echo 
'<b><span style="color:red">Страница отредактирована.</span></b><br>';
    }
?>
После успешной проверки, мы сделаем один UPDATE, где сменим название нашей страницы. Попробуем сохранить разные варианты текста с кавычками.



Все работает!



6) Мы близки к финалу. Нам предстоит добавить дополнительные поля, такие как URLID, TEXT, TITLE и др. Делаем в 2 шага. Первым - редактируем нашу форму. Вторым - редактируем sql-запрос UPDATE(который в if проверке).
6.1) Я создал аккуратную табличку и раскидал все поля по ячейкам. На что следуют заострить внимание.
а) прописываем все нужные нам поля в СЕЛЕКТе, в настоящий момент это равноценно звездочке, но когда полей в базе будет много, мы сможем регулировать их выборку, что в итоге скажеться на производительности.
б) Вот таким нехитрым способом, с помощью проверки, мы определяем влючение галочки.



Внешний вид нашей формы:



6.2) Обновление при сохранении. Вот он финальный код редактирования:
<?
// Редактирование
if ($_POST)
    {
    
// echo $_POST[edit_name];
    
$e_edit_name=mysql_real_escape_string($_POST[edit_name]);
    
$e_edit_active=mysql_real_escape_string($_POST[edit_active]);
    
$e_edit_urlid=mysql_real_escape_string($_POST[edit_urlid]);
    
$e_edit_text=mysql_real_escape_string($_POST[edit_text]);
    
$e_edit_title=mysql_real_escape_string($_POST[edit_title]);
    
$e_edit_description=mysql_real_escape_string($_POST[edit_description]);
    
$e_edit_keywords=mysql_real_escape_string($_POST[edit_keywords]);

   
$editupdate=mysql_query("UPDATE cms5_structure SET
                           NAME='"
.$e_edit_name."',
                           ACTIVE='"
.$e_edit_active."',
                           URLID='"
.$e_edit_urlid."',
                           TEXT='"
.$e_edit_text."',
                     TITLE='"
.$e_edit_title."',
                           DESCRIPTION='"
.$e_edit_description."',
                           KEYWORDS='"
.$e_edit_keywords."'

                           WHERE ID='"
.$id."'
                           "
);
    echo 
'<b><span style="color:red">Страница отредактирована.</span></b><br>';
    }

?>
Успехов в освоении материала!
Следующей темой будет новый релиз, все недостающие исходники вы найдете там -))




Администрирование "Структуры" - Часть 3 - Очень быстрое добавление страницы



Добавление страницы мы будем делать в два этапа. Первый - это быстрое создание страницы, второй - полноценное создание страницы. Делаем это для того, чтобы вы сами далее выбрали подходящий вам метод, ну и более глубоко понять разработку cms.

Статья сегодня очень короткая, так как функуция, которую будем сегодня внедрять, очень простая. Но не волнуйтесь, в дальнейшем мы ее сделаем полноценной. Первым делом, давайте поставим ссылку на index модуля structure с новым типом (type=new).



Далее, по принципу удаления страницы, добавим новый участок кода, который будет отвечать за создание новой страницы. Это будет один элементарный INSERT в базу данных (с предустновленными параметрами). Я думаю подробно объяснять не нужно, что сделал наш INSERT. Единственное, на что следует обратить внимание, это поле URLID. Я выбрал метод использования случайного названия. Метод этот неидеален, так как существует возможность совпадения URLID. Можно использовать время создания, а можно сделать проверку на последний ID, который есть в базе и добавлять страницы по ID+1. Методов много разных, ну вот я выбрал с рандомом -)) Для демонстрации быстрого создания страницы, рандом меня устраивает полностью.

Код:
<?
// Функция быстрого добавления страницы
if ($type=='new')
    {
        
//echo $_GET[id];    
        
$sqlins=mysql_query("INSERT INTO cms5_structure 
            (URLID,NAME,TEXT,ACTIVE,TITLE) 
            VALUES 
            ('/page_"
.rand(1,99999)."/','Новая страница','Текст...','N','Заголовок')
            "
);
        echo 
'<b><span style=\"color:red\">Страница добавлена.</span></b><br>';
    }
?>



Проверяем, в админке Cms5 что у нас получилось, нажимаем на "Добавить". Все работает. Создалась неактивная (active=N) cтраница со случайным URLID, с шаблонным названием и контентом.



Можете даже попробовать поудалять новосозданные странички -))

Ну а мы далее пишем функцию редактирования.




Администрирование "Структуры" - Часть 2 - Удаление страницы



Приветствую вас дорогие друзья. Мы продолжаем создавать административный интерфейс и сегодня речь пойдет об удалении страниц. Мы напишем маленькую функцию.

1. Чтобы не "портить" нашу созданную структуру, давайте создадим новую страничку, которую не жалко будет удалить :-)
Если кто забыл, делаем мы это (пока) через phpMyadmin используя функцию Insert.



Вот дамп, кому надо:
INSERT INTO `cms2010`.`cms5_structure` (`ID`, `URLID`, `NAME`, `TEXT`, `ACTIVE`, `TITLE`, `DESCRIPTION`, `KEYWORDS`) VALUES ('5', '/test1/', 'Страница на удаление', 'Бла бла бла', 'Y', '', '', '');


2. Далее мы перейдем к редактированию файла /cms5-admin/structure/index.php, наша задача в передаче нашему php-скрипту специального параметра, давайте назовем его TYPE. Для удаления страницы, значение параметра будет равняться DEL. Ддобавим ссылку по нажатия на "УДАЛИТЬ" "/cms5-admin/structure/?type=del&id='.$res[ID].'". Таким образом мы передаем наш параметр TYPE со значением DEL, а также ID удаляемой страницы. Обратите внимание, что все параметры написаны строчними буквами.



В нашем цикле все будет выглядеть так:



3. Переходим к третьему шагу - к написанию кода функции. Как обычно вариантов огромное количество, но мы пойдем самым простым путем :-) После хедера (include header.php) сделаем проверку на значение TYPE (GET метод). Если type=del (а это нам сегодня и требуется), ты выполняем один sql-запрос на удаление строчки. Также проинформируем пользователя(администратора), что страница удалена. Совсем удалена.



Вот код:

<?
// Функция удаления
if ($_GET[type]=='del')
    {
        
//echo $_GET[id];    
        
$sqldel=mysql_query("DELETE FROM cms5_structure WHERE ID='".$_GET[id]."'");
        echo 
'<b><span style="color:red">Страница удалена.</span></b><br>';
    }
?>
Вот и все. Хотя нет!
Во-первых, можно еще поставить на кнопку [удалить] javascript, с окном подтверждения удаления. Так мы избежим случайных кликов по ссылке [удалить]
Во-вторых, для безопасности, все get значения параметров нужно обработать функцией mysql_real_escape_string.

Добавляем этот код до sql запросов:

<?
    $type
=mysql_real_escape_string($_GET[type]);
    
$id=mysql_real_escape_string($_GET[id]);
?>
Вот теперь все ))




Администрирование "Структуры" - Часть 1 - Список страниц



Сделаем еще маленький шаг. Попробуем вывести список созданных нами страниц.
В файле /cms5-admin/structure/index.php добавим следующую часть кода (между header и footer, ну вы уже сами наверное догадались):
<h4>Структура сайта</h4>

<a href=structure_add.php>Добавить новую страницу</a><br><br>

<?

echo '<table cellpadding=5 cellspacing=1 width=100%>';
$sql=mysql_query("SELECT * FROM cms5_structure");
while (
$res=mysql_fetch_array($sql))
    {
       echo 
'<tr bgcolor=#eeeeee>';
       echo 
'<td valign=top>';
        echo 
$res[ID].'</td><td><a href=>'.$res[NAME].'</a>
        <br>'
.$res[URLID].'
        </td>
        <td valign=top width=120><center>[<a href=>редактировать</a>]</center></td>
        <td valign=top width=70><center>[<a href=>удалить</a>]</center></td>'
;    
       echo 
'</td>';
       echo 
'</tr>';
    }
echo 
'</table>';


?>

Код, как вы видите простой. а) формируем табличку б) делаем 1 запрос базу данных в) в цикле выводим список страниц (с названием NAME, ID, URLID). Ну и на будущее ссылки на редактирование и удаление.
Должно получиться примерно так:



На сегодня пока только список, добавление, редактирование, удаление будет позже -)) Успехов, и не забывайте про комментарии -)




<< 1 2 3 4 5 6 >>


Сайт создан на движке cms5.ru