Реализуем добавление постов через админ панель

 

Приветствую дорогой читатель! Мы закончили разработку базовых возможностей нашего блога, много конечно еще не доделано, но все что мы не доделали, будут вписано в цикл статей под названием "улучшение нашей CMS". Сейчас же хочу поделится планами, касающийся разработки нашей админ панели. Что у нас реализовано в пользовательской части нашей cms?

 

 

  • Посты - Самое пожалуй главное, что должна уметь админ панель, это добавлять посты, удалять их, и редактировать. Добавление контента будет реализовано через обычную форму с bb кодами. Редактирование будет выглядеть аналогично добавлению постов... ну а удаление будет представлять собой обычную кнопочку
  • Меню - Наша админ панель будет полностью управлять пунктами меню. Удаление, редактирование, порядок появления.
  • Комментарии - Следует ввести в возможность нашей cms удаление и редактирование комментариев, мало ли, вдруг пригодится
  • Сообщение присланные с помощью формы контактов - В случае если использовалась для хранение сообщений не почта а база данных, реализуем некую площадку, где можно будет читать и удалять присланные сообщения.

Для начало думаю достаточно. После реализации этого будем думать о улучшениях всего нами написанного...

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

Для начало советую создать нужные нам папки.. Админка будет находится в папке admin. В этой папке создайте следующие каталоги:

  • /img - Тут будем хранить графике админки
  • /moduls - Папка для модулей нашей админки
  • /templates - Папка с шаблонами

В папку admin/templates нужно скопировать из папки templates наш style.css... Для примера будем использовать стили из нашей пользовательской части...

Наша админка должна как то выглядеть, дизайн измудрять не будем, и воспользуемся нашим index.html, вот его переделанный код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?=$header_title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="description" content="<?=$header_metaD?>">
<meta name="keywords" content="<?=$header_metaK?>">
<link rel="stylesheet" type="text/css" href="/templates/style.css">
</head>
<body>
<table width="800px" height="750px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td height="60px" valign="top">
<!--ЛОГО-->
<div class="logo"><div class="logoP">
<p style="padding:3px;">Добро пожаловать в админ панель</p>
</div></div>
<!--ЛОГО-->
</td>
</tr>
<tr>
<td valign="top" align="center"><br>
<!--ТЕКСТ-->
<?=$txt?>
<!--ТЕКСТ-->
</td>
</tr>
</table>
</body>
</html>


По сути это все тот же index.html из нашей пользовательской части, за одним маленьким исключением, удалил часть отвечающую за вывод меню... Сохранил я этот файл в папку шаблонов admin/templates.

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

<table width="600px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td width="100px" height="100px" valign="top" align="center"><a href="/index.php?page=add_content"><img src="img/add_content.jpg" border="0px"></a></td>
<td width="100px" height="100px" valign="top" align="center">&nbsp;</td>
<td width="100px" height="100px" valign="top" align="center">&nbsp;</td>
<td width="100px" height="100px" valign="top" align="center">&nbsp;</td>
<td width="100px" height="100px" valign="top" align="center">&nbsp;</td>
<td width="100px" height="100px" valign="top" align="center">&nbsp;</td>
</tr>
</table>

Обычная таблица с шестью ячейками.. В одной из них я разместил ссылку на первую нашу возможность, ну то есть по этому адресу будет находится форма для добавление постов. Ссылка изображена в виде графической кнопки, вот ссылка на кнопку: Кнопка

Лежать изображение должно в папке img, называться add_content.jpg

Полученный html файл я назвал menu.html и поместил в папку шаблонов

Пришло время поговорить о файле index.php. Для начала давайте подумаем, что будет в нем? Первым делом в этом файле понадобится написать подключение к базе данных. Далее нам нужно будет подключить главный шаблон index.html. Так как наш шаблон не содержит никакой информации, нужно будет создать и подключить модуль, который с генерирует меню и выведет на экран. Ну и забегая вперед, в этом файле будет так же подключаться модуль, отвечающий за появление формы для добавление постов в базу данных. Как Вы догадались, нам нужно написать два модуля и шаблон с формой. Начнем с модуля, который с генерирует нам меню. Код выйдет не большой, нам всего лишь необходимо подключить шаблон и вывести его в переменную, вот код с комментариями:

<?
function menu()
{
$sm_read = file("templates/menu.html");//...подключаем шаблон
$sm_read = implode("",$sm_read);//функция file() возвращаем массив, поэтому склеиваем его

return $sm_read;//Выводим с генерированный html код
}
?>

Назвал модуль menu.php и сохранил в папку с модулями

Далее считаю необходимым создать шаблон для формы. Ну то есть саму форму

<table width="600px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td width="100px" height="100px" valign="top" align="center">
<form action="index.php?page=add_content" method="post" name="form">
<br>
<input style="width:600px;" name="name_post" type="text" value="Название статьи">
<br>
<textarea style="width:600px;height:600px;" name="txt_post" rows="10">Введите текст*</textarea>
<input style="width:600px;" name="author_post" type="text" value="Автор*">
<br>
<br><br><input type="submit" value="Добавить пост">
</form>
</td>
</tr>
</table>

Тут ничего сложного нет, три поля:

  • Для названия поста
  • Текст поста
  • Автор поста

Ну и собственно кнопка для отправки. Обратите внимание на ссылку обработчика - index.php?page=add_content. Полученный файл я назвал addcontent.html и поместил в папку с шаблонами.

Так... Создадим модуль который будет выводить форму, вот код с комментариями:

<?
function addcontent()
{
$sm_read = file("templates/addcontent.html");//...подключаем шаблон
$sm_read = implode("",$sm_read);//функция file() возвращаем массив, поэтому склеиваем его

return $sm_read;//Выводим с генерированный html код
}
?>

Тут тоже ничего экстраординарного Назвал этот модуль addcontent.php и поместил в папку с модулями moduls

Ну что ж.. Все файлы, которые нам сейчас нужны, созданы. Пришло время их объединить в один:

<?
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$nameDB = "blog";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$header_title = "Админ панель";
$header_metaD = "Описание страницы";
$header_metaK = "Ключевые слова страницы";

if($_GET['page'])$page = $_GET['page']; else $page = "index";//Определяем страницу которая открыта.
//Если переменная не существует значит открыта главная страница

//ГЛАВНОЕ МЕНЮ АДМИНКИ
if($page == "index")//Главная страница
{
include("moduls/menu.php");//Подключаем модуль
$txt = menu();//Помещаем с генерированный код в переменную
}
//ГЛАВНОЕ МЕНЮ АДМИНКИ

//ДОБАВЛЕНИЕ КОНТЕНТА
if($page == "add_content")//Если открыта страница добавление постов
{
include("moduls/addcontent.php");//Подключаем модуль
$txt = addcontent();//Выводим с генерированный код в переменную
}
//ДОБАВЛЕНИЕ КОНТЕНТА

include("templates/index.html");//Выводим главный шаблон на экран
?>

Назвал файл index.php и поместил в папку admin.

Если сейчас запустить полученный файл ( я про index.php ) Вы увидите главную страницу с кнопкой "Добавить материал". Щелкнув по этой кнопке, Вы попадете на страницу с формой.

Думаю не плохо для начала, не так ли?

А теперь давайте организуем обработчик, который запишет в базу данных информацию, посланную из формы, обработчик будем писать в модуле addcontent.php перед функцией addcontent():

//Объявляем переменные, если форма была заполнена и отправленна
if($_POST['name_post'])$name_post = $_POST['name_post'];
if($_POST['txt_post'])$txt_post = $_POST['txt_post'];
if($_POST['author_post'])$author_post = $_POST['author_post'];
//Объявляем переменные, если форма была заполнена и отправленна

if($name_post & $txt_post & $author_post)//Если существуют посланные данные...
{//...то
$date_day = date("d");//Определяем день
$date_month = date("m");//Определяем месяц
$date_year = date("Y");//Определяем год
$date_time = date("H:i");//Определяем часы и минуты
$date_cont = $date_day."/".$date_month."/".$date_year." ".$date_time;//Склеим все переменные в одну
//получим дату для записи в формате день/месяц/год часы:минуты

//Заменяем html код на аналог
$name_post = htmlspecialchars($name_post);
$txt_post = htmlspecialchars($txt_post);
$author_post = htmlspecialchars($author_post);

//Избавляемся от кавычки
$name_post = str_replace("'","&#039",$name_post);
$txt_post = str_replace("'","&#039",$txt_post);
$author_post = str_replace("'","&#039",$author_post);

$txt_post = str_replace("\n","<BR>",$txt_post);//Заменяем переносы строки на тег <BR>

//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b)
VALUES ('$txt_post','$name_post','$author_post','$date_cont')");
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ

header("location: index.php");//Перенаправление
exit;//на главную страницу
}

Ну что ж.. Думаю то, что хотели сделать сделали. В следующей статье мы будем писать редактирование для постов, не переключайтесь А на сегодня все, удачи Вам!

Исходник
 

Возможно Вам будут интересны следующие заметки

Комментарии (63)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
Вы не подтвердили условия политики конфиденциальности.
Ольга, 27 Марта 2012 г. 14:45 пишет:
Читатель
у меня опять ошибка:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\00blog\admin\index.php:1) in Z:\home\localhost\www\00blog\admin\moduls\addcontent.php on line 34

34 строка это
header("location: index.php");//Перенаправление

Но в БД все записалось. Ура!
Михаил, 07 Мая 2012 г. 11:39 пишет:
Гость
Спасибо за материалы
Анастасия, 17 Июля 2012 г. 18:11 пишет:
Читатель
у меня в бд не записывается
Rio-Shaman, 17 Июля 2012 г. 22:48 пишет:
Автор
А можно поподробнее?
Ответ для пользователя: Анастасия
Анастасия, 18 Июля 2012 г. 16:27 пишет:
Читатель
Записываю новую статью, сохраняю, проверяю БД, а там только старые записи, которые вручную вбивались
Rio-Shaman, 18 Июля 2012 г. 22:01 пишет:
Автор
Проблем в коде быть не должно. Вполне возможно у Вас нет подключение к базе данных, или же таблица в базе данных имеет какое то другое свойство.. Может колонку переименовали, или сама таблица называется по другому...
Ответ для пользователя: Анастасия
Анастасия, 19 Июля 2012 г. 15:09 пишет:
Читатель
Все, заработало)
SerJ, 22 Августа 2012 г. 19:26 пишет:
Читатель
Хотел задать вопрос администратору, никогда не задавались мыслью, целью, как сделать заглушку на сайт на время тех работ, (если есть такое, то поделиться с окружающими). Что бы было все как полагается с админской частью ...
Rio-Shaman, 22 Августа 2012 г. 19:45 пишет:
Автор
Я никогда не задавался целью вводить возможность ставить подобную заглушку из админ панели. Я всегда прописывал необходимый код сразу в главный файл. Как по мне, не стоит из-за такого пустяка писать хитроумный алгоритм. Проще просто открыть index.php и в самом вверху прописать вот такой код:

die("Ведутся тех работы");
Ответ для пользователя: SerJ
Алексей, 25 Августа 2012 г. 15:17 пишет:
Гость
А мы будем добавлять категорию к посту через Админку, или эту возможность мы реализуем сами?
Rio-Shaman, 25 Августа 2012 г. 21:25 пишет:
Автор
Вы вот про это: http://rio-shaman.ru/index.php?blog=75
Ответ для пользователя: Алексей
Юрий, 09 Сентября 2012 г. 18:47 пишет:
Читатель
Не добавляются посты в базу данных (
Правильно ли я понимаю, что подклюение к базе проходит в файле index.php, где указывается имя БД, сервер, пользователь и пароль, и также в файле addcontent.php, где в строке "$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b) " вместо blog вставляю название своей таблицы? т.е. у меня будет $result_add_cont = mysql_query ("INSERT INTO newsb (text,title,author,date_b) ? при этом в этой таблице 5 полей, id,text,title,author,date_b, если да - то ничего не получается( пишу материал, нажимаю добавить, меня перенаправляет на главную админки, смотрю базу данных - нет ничего нового ... тут пользователь Анастасия говорила что такая же поблема и уже решила ее, но к сожалению не описала как (
Rio-Shaman, 10 Сентября 2012 г. 00:47 пишет:
Автор
Подключение к базе данных происходит лишь один раз, в index.php. Все остальные файлы подключаются к главному (index.php) при помощи функции include() именно поэтому в них не нужно использовать функцию mysql_select_db().

Что касается название таблицы, то у меня используется таблица blog (именно таблица, не путать с самой базой данных (имена и у таблицы и у базы данных одинаковые - blog)). Если Ваша таблица называется не blog (именно таблица, а не база данных) то Вам естественно в запросе INSERT необходимо указать свою таблицу.

Если Вы не путаете таблицу с базой данных, и при этом у Вас все равно ничего не получается, то попробуйте сразу после:

//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b)
VALUES ('$txt_post','$name_post','$author_post','$date_cont')");
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ

Вставьте вот такой код:

echo mysql_error(); exit;

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

Пятое поле это id поле, оно заполняется автоматически, с этим проблем быть не должно..

Опубликуйте текст ошибки, посмотрим что там...
Ответ для пользователя: Юрий
Юрий, 10 Сентября 2012 г. 10:28 пишет:
Читатель
Спасибо!)) вставил, показал ошибку что не нашел поле даты, оказывается я не правильно написал ее )) поэтому он ее не видел. Сейчас исправил - материалы добавляются в базу)
а не могли вы ответить на вопрос в этом сообщении?: http://rio-shaman.ru/index.php?blog=39
Роман, 18 Сентября 2012 г. 09:12 пишет:
Гость
А скажите пожалуйста как сделать доп. поле? Источник например... Вторую неделю мучаюсь ни че не получается..
Роман, 18 Сентября 2012 г. 09:27 пишет:
Гость
Каковы были мои действия:
1) Добавил в БД новое поле.
2) добавил в файл addcontent.php
строку с переменной
if($_POST['txt_post'])$txt_post = $_POST['txt_post'];
далее добавил в "добавление поста" в двух местах эту переменную.
3) добавил поле в шаблоне добавления поста...

жму "Добавить пост" и страница просто обновляется.
Rio-Shaman, 18 Сентября 2012 г. 09:29 пишет:
Автор
1. Создаете в базе данных новую колонку (называете ее например - additionally)
2. Рисуете новое поле в шаблоне addcontent.html (атрибут name нового поля например - additionally)
3. В обработчике формируете переменную из присланных данных методом POST ($additionally = $_POST['additionally'])
4. Проверяете новую переменную ($additionally) на html код и убираете кавычку если есть.
5. Записываете новую переменную в созданную ранее колонку таблицы в базе данных.
Ответ для пользователя: Роман
Rio-Shaman, 18 Сентября 2012 г. 09:33 пишет:
Автор
По всей видимости Вам всего лишь осталось переделать INSERT запрос.
Ответ для пользователя: Роман
Роман, 18 Сентября 2012 г. 10:31 пишет:
Гость
INSERT INTO blog и VALUES туда тоже добавил переменную.
Rio-Shaman, 18 Сентября 2012 г. 14:52 пишет:
Автор
Попробуйте сразу после:

//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b)
VALUES ('$txt_post','$name_post','$author_post','$date_cont')");
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ

Поставить вот такой код:

echo mysql_error();
exit;

Так Вы сможете узнать какая именно происходит ошибка при добавление строчки в базу данных...
Ответ для пользователя: Роман
Роман, 18 Сентября 2012 г. 16:07 пишет:
Гость
Уже пробовал. Страница просто обновляется.
Rio-Shaman, 18 Сентября 2012 г. 16:35 пишет:
Автор
И при этом в базу данных не попадает новая запись?
Ответ для пользователя: Роман
Роман, 18 Сентября 2012 г. 16:49 пишет:
Гость
К сожалению, нет, не попадает!
Rio-Shaman, 19 Сентября 2012 г. 09:21 пишет:
Автор
А Вы уверены что условие обработчика, в моем случае это:

if($name_post & $txt_post & $author_post)
{
...
}

срабатывает?
Попробуйте в тело воткнуть вот такой код:

echo "Работает";
exit;

У меня бы это выглядело вот так:

if($name_post & $txt_post & $author_post)
{
echo "Работает";
exit;
...
}

Если при отправки записи на обработку Вы не увидите сообщение значит само условия обработчика не проходит проверку. Если же увидите, то я даже не знаю что еще может быть не так =(
Ответ для пользователя: Роман
Роман, 19 Сентября 2012 г. 10:32 пишет:
Гость
Не увидел... т.е. надо ковырять if($name_post & $txt_post & $author_post) в эти скобки надо добавлять ту переменную которую я добавляю?
Rio-Shaman, 19 Сентября 2012 г. 17:04 пишет:
Автор
Добавление Вашей переменной совершенно не обязательно, но на всякий пожарный я бы добавил =)) Измените условие приблизительно вот так:

if (isset($name_post) AND isset($txt_post) AND isset($author_post) AND isset($Ваша переменная))
{
...
}

Если после этого, в базу данных, не будет добавляться запись, значит одна из этих переменных не создана. Может поле в шаблоне не правильно названо, или, в коде сбора присланной информации, имя переменной имеет опечатку...
Ответ для пользователя: Роман
Роман, 20 Сентября 2012 г. 12:00 пишет:
Гость
Разобрался я вчера, добавляется переменная...
Только у меня появился другой вопрос... При добавлении поста, если оставляешь поле пустым, данные не добавляются.. как сделать так чтобы можно было оставить поле пустым?
Rio-Shaman, 20 Сентября 2012 г. 16:48 пишет:
Автор
Везде где идет проверка на существование переменной (например: if ($_POST['name_post']) ...) прописывайте isset (например вот так: if (isset ($_POST['name_post'])) ...).
Оставляя поле пустым Вы посылаете пустоту. Запись которая сейчас (первый пример) воспринимает пустоту как ложное, а с использованием isset в переменную попадет пустота, которая должна записаться в базу данных...

Для примера попробуйте запустить вот этот код:

$_GET['1'] = '';
if ($_GET['1']) $s = $_GET['1'];
if(!isset($s)) echo "нет";
else echo 'есть';

Вы увидите надпись "Нет". А теперь запустите вот этот код:

$_GET['1'] = '';
if (isset($_GET['1'])) $s = $_GET['1'];
if(!isset($s)) echo "нет";
else echo 'есть';

Вы увидите надпись "есть"
Ответ для пользователя: Роман
Сергей, 03 Октября 2012 г. 18:05 пишет:
Читатель
Да, c utf8 получаются кракозябры....
Сергей, 03 Октября 2012 г. 18:15 пишет:
Читатель
Разобрался, надо было при подключении базы данных сменить кодировку
ZedRott, 23 Марта 2013 г. 21:44 пишет:
Гость
У меня вопрос : что нужно припаять к textarea, чтобы не приходилось использовать HTML для переноса строк? ато если просто скопипастить откуда-нибудь текст - он добавляет в БД всё подряд (без переноса строк)
Nikita, 25 Марта 2013 г. 11:33 пишет:
Читатель
Создайте соответствующую кнопку переноса строки аля ББ код.
Пример создания подобных штук http://rio-shaman.ru/index.php?blog=47
Ответ для пользователя: ZedRott
Дмитрий, 17 Июля 2013 г. 12:36 пишет:
Гость
Здравствуйте! А как можно проверить перед отправкой введенные даные? Я пока сделал частично на js,но хотелось бы на пхп. И как можно сделать чтоб после того как нажать "отправить", высвечивалось например "статья успешно добавлена" если нет то выдало ошибку? А то оно просто редиректит и не понятно добавилась ли статья или нет.
Алексей, 17 Июля 2013 г. 12:57 пишет:
Автор
Пример реализации ошибок для формы есть вот тут:
http://rio-shaman.ru/razrabotka-cms/uluchshenija/apgrejd-modulja-kontaktov/
Правда данный пример относится к форме обратной связи.

Там же кстати есть и способ реализации вывода сообщения о успешной операции..
Ответ для пользователя: Дмитрий
Сергей.Р, 15 Ноября 2013 г. 13:34 пишет:
Гость
Алексей подскажите пожалуйста!Вообщем проблема в том что при добавлении через админку добавляются пустые строки(
<?php 

include ("bloks/bd.php");

if (isset($_POST['title']))        {$title = $_POST['title'];}
if (isset($_POST['meta_d']))       {$meta_d = $_POST['meta_d'];} 
if (isset($_POST['meta_k']))       {$meta_k = $_POST['meta_k'];}
if (isset($_POST['date']))         {$date = $_POST['date'];}
if (isset($_POST['description']))  {$description = $_POST['description'];} 
if (isset($_POST['text']))         {$text = $_POST['text'];}
if (isset($_POST['author']))       {$author = $_POST['author'];}

?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>оброботчик</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="690" border="1"align="center"> 
<!--  --> 
<?php include ("bloks/header.php"); ?> 
 
  <tr>
    <td align="center"><table width="690" border="1"align="center">
      <tr>
 <!--   -->
<?php include ("bloks/lefttd.php"); ?> 
        <td valign="top" >
        
        <?php 
		
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author))
{

$result = mysql_query("INSERT INTO lessons (title,meta_d, meta_k ,date, description ,text ,author) VALUES ('$title','$meta_d','$meta_k','$date',
'$description','$text','$author')");

if ($result=='true'){echo"<p>ваш урок успешно добавлен!</p>";}
else{echo"<p>ваш урок не добавлен!</p>";}
}
else
{
echo"";
}		
		
		?>
          
            
            <table>
              <tr>
                <td></td>
              </tr>
            </table>        </td>
      </tr>
    </table></td>
  </tr>
<!--  -->
<?php include ("bloks/footer.php") ?>
</table>

</body>
</html>
Алексей, 15 Ноября 2013 г. 14:00 пишет:
Автор
Прежде чем пользоваться sql запросом, проверьте есть ли в переменных:
- $title
- $meta_d
- $meta_k
- $date
- $description
- $text
- $author
какие либо данные

По идеи все должно работать
Ответ для пользователя: Сергей.Р
Сергей.Р, 15 Ноября 2013 г. 14:15 пишет:
Гость
А как лучше всего произвести проверку?
Ответ для пользователя: Алексей
Алексей, 15 Ноября 2013 г. 14:21 пишет:
Автор
Ну что-то типа того:
var_dump($title); echo "<br>";
var_dump($meta_d); echo "<br>";
var_dump($meta_k); echo "<br>";
var_dump($date); echo "<br>";
var_dump($description); echo "<br>";
var_dump($text); echo "<br>";
var_dump($author);
Ответ для пользователя: Сергей.Р
Сергей.Р, 15 Ноября 2013 г. 15:34 пишет:
Гость
Дмитрий произвёл проверку,вытащились все пункты которые добавлял через админку,что это может значить?
это значит что переменные имеют значения, почему тогда не срабатывает не пойму(
Сергей.Р, 15 Ноября 2013 г. 15:41 пишет:
Гость
Чуть не забыл в саму базу данных добавляется только идентификатор который там проставляется автоматически и дата,все остальные ячейки пусты.
Алексей, 15 Ноября 2013 г. 17:13 пишет:
Автор
Попробуйте в запрос проставить не переменные, а значения ручками
$sql = ""
	."INSERT INTO"
		." lessons"
		." ("
			." title,"
			." meta_d,"
			." meta_k,"
			." data,"
			." description,"
			." text,"
			." author"
		." )"
	." VALUES"
		." ("
			." 'Тест заголовка',"
			." 'Тест описания',"
			." 'Тест ключевых слов',"
			." 'Тест даты (не знаю в каком формате у Вас дата)',"
			." 'Тест описание статьи',"
			." 'Тест текст статьи',"
			." 'Тестовый автор'"
		." )"
;

$result = mysql_query($sql);
Если запись произойдет, то проблема в переменных, если нет, то проблема в БД (вот только какая, хз)
Ответ для пользователя: Сергей.Р
Сергей.Р, 15 Ноября 2013 г. 20:06 пишет:
Гость
Алексей спасибо большое!попробую обязательно, результат отпишу
Сергей.Р, 18 Ноября 2013 г. 15:25 пишет:
Гость
Здравствуйте Алексей.Ваш запрос мне сделать не удалось выдаёт ошибки(
но тут погугли и произвёл проверку содержатся ли что то в переменной $_POST,ВОТ ТАКИМ ОБРАЗОМ
echo '<pre>';
print_r($_POST);
die();
оказалось что переменная POST содержит массив с теми самими записями которые я пытаюсь добавить.
может ли это значить что проблема в БД?
Алексей, 18 Ноября 2013 г. 16:31 пишет:
Автор
Ваш запрос мне сделать не удалось выдаёт ошибки
Вы его вставляли без изменений? Если да, то просмотрите данные которые я простовлял. Некоторые из них нуждаются в правке.

И еще, хотелось бы узнать что за ошибки, если Вы все же изменяли мой запрос.
Ответ для пользователя: Сергей.Р
Алексей, 18 Ноября 2013 г. 16:41 пишет:
Автор
И я опять в запросе поле date написал с ошибкой :-(
Вот правильный запрос:
$sql = ""
    ."INSERT INTO"
        ." lessons"
        ." ("
            ." title,"
            ." meta_d,"
            ." meta_k,"
            ." \"date\","
            ." description,"
            ." text,"
            ." author"
        ." )"
    ." VALUES"
        ." ("
            ." 'Тест заголовка',"
            ." 'Тест описания',"
            ." 'Тест ключевых слов',"
            ." 'Тест даты (не знаю в каком формате у Вас дата)',"
            ." 'Тест описание статьи',"
            ." 'Тест текст статьи',"
            ." 'Тестовый автор'"
        ." )"
;

$result = mysql_query($sql);
Ответ для пользователя: Сергей.Р
Сергей.Р, 18 Ноября 2013 г. 18:39 пишет:
Гость
Алексий Спасибо вам огромное!!!на форумах так со мной не возились как здесь)
вообщем я решил проблему переустановил денвер ) всё добавилось только вот с кодировкай не как не могу разобраться квадратоми в браузере сохраняет,в БД UTF-8,у меня в редакторе UTF-8,ставил и кириллицу всё равно квадраты не знаю что ещё придумать(

Сергей.Р, 18 Ноября 2013 г. 18:45 пишет:
Гость
а в БД тож не понятно что за китайская письменность))
Алексей, 19 Ноября 2013 г. 11:18 пишет:
Автор
Для того чтобы кодировка UTF-8 работала адекватно, Вам нужно:
1. Что бы все файлы вашего проекта имели кодировку utf-8
2. При подключение к БД нужно выставить явную кодировку (Вот этой строчкой, сразу после mysql_select_db())
mysql_query("SET NAMES 'utf8'");
3. Сервер должен иметь кодировку UTF-8. Я так понял Вы пользуетесь денвером, а у него, если мне память не изменяет, сервер в кириллице. Вам нужно в корень Вашего сайта положить файл .htaccess с следующей настройкой:
AddDefaultCharset utf-8
4. Сама база данный должна иметь кодировку UTF-8. Т.е. при создание БД в phpmyadmin, выберите сравнение utf8_general_ci. Вот скрин
5. В html желательно создать вот такой мета тег:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Мне для того чтобы мой проект адекватно работал с utf-8 кодировкой, было достаточно проделать данные 5 шагов.
Ответ для пользователя: Сергей.Р
Сергей.Р, 24 Ноября 2013 г. 20:12 пишет:
Гость
Спасибо Алексей помогло!
Дмитрий, 18 Февраля 2014 г. 10:26 пишет:
Читатель
Алексей, делал все с самого начала (и всё работало), в настоящее время дошёл до этого поста и теперь в админ панель вхожу, но после клика по кнопке "Добавить материал" перекидывает сразу на главную страницу блога (причём в командной строке http://site.ru/index.php?page=add_content) - как быть (туплю уже пару часов)???
Дмитрий, 18 Февраля 2014 г. 12:00 пишет:
Читатель
Да уж, не даётся мне пхп, исправил только сравнением с и-ом.
Алексей, 19 Февраля 2014 г. 10:33 пишет:
Автор
Вы создавали папку admin. Положили в нее файл index.php?
Ответ для пользователя: Дмитрий
Дмитрий, 20 Февраля 2014 г. 05:17 пишет:
Читатель
Да папку создавал и index.php тоже (всё как Вы расписывали), ничего не изменилось (если терпения хватит буду дальше тупить). Долго не отвечал разбирался с v2.8.0, и тут тоже всё не слава богу - всё установил->вроде всё работает(особо не тестил)-> и сразу же после удаления inst..., в настройках поменял на ЧПУ (и тут засада). Почистил кэш->перезагрузил блог, и началось (то при наведении ссылки видны с ЧПУ, то в перемешку,ссылка контакты при наведении вообще не приобретает вид ЧПУ). И в этом режиме постоянно выдаёт ошибку 500. Т.е. после клика ошибка 500, а в командной строке всё как положено ЧПУ. При install-ии всё ввёл правильно. Блог находится на созданном поддомене blog.an*s.ru (3 ур.). Что делать ума не приложу, что с тем что писал, и что с этим что установил. Вот такие пироги Алексей.
Ответ для пользователя: Алексей
Алексей, 20 Февраля 2014 г. 10:48 пишет:
Автор
Честно говоря, я понятие не имею из-за чего у Вас такие проблемы.
Прыгающие ссылки говорят о том, что у Вас не правильно рассчитываются относительные пути. Вопрос почему...
Ответ для пользователя: Дмитрий
SomoS, 03 Июля 2014 г. 07:21 пишет:
Читатель
Приветствую!) Беда в том что в базе все создается, но только на латинском 0о, а вот кириллицу записывать отказывается, что посоветуете?
Ruslan, 18 Июля 2014 г. 00:54 пишет:
Читатель
У меня такая же беда, как только нажимаю добавить новость перекидывает на главную страницу сайта я посмотрел урл там:http://sitelocal/index.php?page=add_content я изменил урл на:http://sitelocal/administrator/index.php?page=add_content появилась форма добавления новости, в чём проблема разбираюсь...
Ответ для пользователя: Алексей
AMC-77, 19 Октября 2014 г. 20:54 пишет:
Гость
Руслан, доброго времени суток.

У меня такая же проблема была:
если в адресной строке вводишь адрес http://localhost/admin/ - то при нажатии на кнопку 'добавить материал' меня выкидывало на главную страницу сайта index.php, т.е. из админки.
если в адресной строке писал http://localhost/admin/index.php - то все работало нормально, никуда не выкидывало и появлялась форма вдобавления материала.

так вот решил вопрос вот так:
в файле admin/templates/menu.html
в строке:
<td width="100px" height="100px" valign="top" align="center"><a href="/index.php?page=add_content"><img src="img/add_content.jpg" border="0px"></a></td>
удалил лишний слеш:
<td width="100px" height="100px" valign="top" align="center"><a href="/index.php?page=add_content"><img src="img/add_content.jpg" border="0px"></a></td>
и получилось:
<td width="100px" height="100px" valign="top" align="center"><a href="index.php?page=add_content"><img src="img/add_content.jpg" border="0px"></a></td>
после чего стало работать не зависимо от того что написано в адресной строке: admin/ или admin/index.php

Возможно тебе тоже это поможет.
Ответ для пользователя: Ruslan
Павел, 23 Октября 2014 г. 16:34 пишет:
Гость
Пока все идет нормально. Бывает кое-что не работает, но ошибки в основном сам нахожу и исправляю.
AigGocha, 14 Января 2015 г. 08:38 пишет:
Читатель
Здравствуйте ВСЕ!!!
Алексей огромное спасибо Вам за вашу работу. Пока не где такого не встречал.
По истине очень познавательные посты да и сам блог просто супер. Жаль вот только когда я начинал изучать HTML и CSS не нашел Ваш блог. В этих ......... форумах не кто так не с кем не возится как Вы, одно хамье.
Один вопросик у меня Алексей если не трудно не могли бы ответить.
По вашим постам пишу один проект, верстка у меня своя резиновая. Но админку сделал как Ваша, то есть просто скопастил все нормально добавляет посты через админку и в базу заносятся, но есть один момент все добавляет без разбора, то есть допустим если где то скопастил или даже сам пишешь пост, вместе с кодом так с кодами и выводит, а в базу вместо кодов какие то краказябры заносятся. Но решил я эту проблему вот так в файле addcontent.php, в нашем случае, я закомментировал вот эти строки, то есть строки: 18, 19, 20 и 27.
<?
//Объявляем переменные, если форма была заполнена и отправленна
if($_POST['name_post'])$name_post = $_POST['name_post'];
if($_POST['txt_post'])$txt_post = $_POST['txt_post'];
if($_POST['author_post'])$author_post = $_POST['author_post'];
//Объявляем переменные, если форма была заполнена и отправленна

if($name_post & $txt_post & $author_post)//Если существуют посланные данные...
{//...то
$date_day = date("d");//Определяем день
$date_month = date("m");//Определяем месяц
$date_year = date("Y");//Определяем год
$date_time = date("H:i");//Определяем часы и минуты
$date_cont = $date_day."/".$date_month."/".$date_year." ".$date_time;//Склеим все переменные в одну
//получим дату для записи в формате день/месяц/год часы:минуты

//Заменяем html код на аналог
//$name_post = htmlspecialchars($name_post);
//$txt_post = htmlspecialchars($txt_post);
//$author_post = htmlspecialchars($author_post);

//Избавляемся от кавычки
$name_post = str_replace("'","&#039",$name_post);
$txt_post = str_replace("'","&#039",$txt_post);
$author_post = str_replace("'","&#039",$author_post);

//$txt_post = str_replace("\n","<BR>",$txt_post);//Заменяем переносы строки на тег <BR>

//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ
$result_add_cont = mysql_query ("INSERT INTO blog (text,title,author,date_b)
VALUES ('$txt_post','$name_post','$author_post','$date_cont')");
//ДОБАВЛЯЕМ ПОСТ В БАЗУ ДАННЫХ

header("location: index.php");//Перенаправление
exit;//на главную страницу
}
function addcontent()
{
$sm_read = file("templates/addcontent.html");//...подключаем шаблон
$sm_read = implode("",$sm_read);//функция file() возвращаем массив, поэтому склеиваем его

return $sm_read;//Выводим с генерированный html код
}
?>
Вот после этого все отлично выводит, то есть браузер отображает все как положено, не знаю прав я или нет, но как я думаю если мы добавляем через админку то нет смысла проверять HTML теги ведь это же наша админка, то есть кроме нас отсюда не кто не сможет добавлять посты. Вот сижу и думаю прав я или нет.
Спасибо за ранее!
AigGocha, 14 Января 2015 г. 19:49 пишет:
Читатель
Прошу прощения Алексей!
Я поспешил с предыдущем комментарием как прочел следующие посты все стало понятно так что можете эти даже не публиковать!
AigGocha, 15 Января 2015 г. 18:36 пишет:
Читатель
Все таки опубликовали мои бесполезные комментарий ну да ладно хрен с ними. :)
Виталий, 05 Апреля 2015 г. 16:16 пишет:
Гость
В Базе всё отображается без проблем, на сайте же ничего нету из новостей...
Алексей, 16 Января 2017 г. 15:24 пишет:
Гость
Привет программистам! У меня снова вопрос и вот в чем он заключается: В общем, у автора статьи скрипт написан таким образом, что после нажатия на картинку запускается шаблон формы, а сама кнопка меню, разумеется пропадает. Я немного переделал скрипт и вместо картинки у меня выводится обычный текст и выводится он в блоке меню - то есть не "$txt = menu()", а "$menu = menu()". Вот как мне сделать, чтобы ссылка добавления поста была видна, не зависимо, открыт ли шаблон формы или нет?