Небольшая помощь по коду

Печать / RSS
0
1. Cristiano 19.12.2013 / 19:51
Землянин
Здарова, вот код редактирования статей
if (!empty($_POST['submit'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$title = !empty($_POST['title']) ? check($_POST['title']) : '';
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
$active = !empty($_POST['active']) ? 1 : 0;
$acomm = !empty($_POST['acomm']) ? 1 : 0;
$views = !empty($_POST['views']) ? 0 : $row['views'];
$date = !empty($_POST['date']) ? date('Y-m-d H:i:s', time()) : $row['date'];
$cat = !empty($_POST['cat']) ? num($_POST['cat']) : 0;
$desc = !empty($_POST['desc']) ? StripMeta($_POST['desc']) : genDesсriрtion($_POST['title'] . ' ' . $_POST['text']);
$keys = !empty($_POST['keys']) ? StripMeta($_POST['keys']) : genKeywords($_POST['text']);
if (!empty($title) && !empty($text)) {
if (!empty($cat)) {
$is_cat = (int) $db->selectCell( "SELECT * FROM ?_category WHERE `id` = ? LIMIT 1", $cat );
if ( !empty($is_cat) ) {
$q = (bool) $db->query( "UPDATE ?_data SET `cid` = ?, `title` = ?, `desc` = ?, `keys` = ?, `text` = ?, `date` = ?, `active` = ?, `acomm` = ?, `views` = ? WHERE `id` = ?", $cat, $title, $desc, $keys, $text, $date, $active, $acomm, $views, $id );
if ( $q ) {
del_vars('categories');
addMessage('Статья успешно изменена!', 'ok');
gen_red('post', $id);
}
else $error = 'Ошибка! В данный момент не удалось изменить статью!';
}
else $error = 'Ошибка! Раздел не найден в БД. Попробуйте обновить кеш, возможно он устарел!';
}
else $error = 'Ошибка! Неверно указан раздел!';
}
else $error = 'Ошибка! Вы не ввели заголовок или текст статьи!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
if (!empty($error)) addMessage($error,'error');
}

как туда добавить функцию которая запрешает ввести названия существующих статей? Буду очень благодарен.
Изменил: Андрей (19.12.2013 / 21:09)
0
2. Александр 19.12.2013 / 20:27
Пришелец

if (!empty($title) && !empty($text)) {
$is_title = (int) $db->selectCell( "SELECT * FROM ?_category WHERE `title` = ? ", $title );
if ( $is_title > 0) {
$error = 'Ошибка! Статья существует';
}
}
0
3. Cristiano 19.12.2013 / 20:33
Землянин
сейчас попробую.
0
4. Cristiano 19.12.2013 / 21:00
Землянин
К сожалению не работает. Все равно спасибо тебе.
0
5. Cristiano 19.12.2013 / 22:27
Землянин
вот код редактирования статей теперь с этой функцией которая запрещает вводить одинаковые заголовки, но теперь при изменении статьи необходимо изменить и заголовок, так как она считает что это уже 2 с таким названием.
if (!empty($_POST['submit'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$title = !empty($_POST['title']) ? check($_POST['title']) : '';
$text = !empty($_POST['text']) ? check($_POST['text']) : '';
$active = !empty($_POST['active']) ? 1 : 0;
$acomm = !empty($_POST['acomm']) ? 1 : 0;
$views = !empty($_POST['views']) ? 0 : $row['views'];
$date = !empty($_POST['date']) ? date('Y-m-d H:i:s', time()) : $row['date'];
$cat = !empty($_POST['cat']) ? num($_POST['cat']) : 0;
$desc = !empty($_POST['desc']) ? StripMeta($_POST['desc']) : genDesсriрtion($_POST['title'] . ' ' . $_POST['text']);
$keys = !empty($_POST['keys']) ? StripMeta($_POST['keys']) : genKeywords($_POST['text']);
if (!empty($title) && !empty($text)) {
if (!empty($cat)) {
$is_cat = (int) $db->selectCell( "SELECT * FROM ?_category WHERE `id` = ? LIMIT 1", $cat );
$is_post = (int) $db->selectCell( "SELECT * FROM ?_data WHERE `title` = ? LIMIT 1", $_POST['title'] );
if ( !empty($is_cat) ) {
if ( $is_post < 1 && !in_array($_POST['title'])) {
$q = (bool) $db->query( "UPDATE ?_data SET `cid` = ?, `title` = ?, `desc` = ?, `keys` = ?, `text` = ?, `date` = ?, `active` = ?, `acomm` = ?, `views` = ? WHERE `id` = ?", $cat, $title, $desc, $keys, $text, $date, $active, $acomm, $views, $id );
if ( $q ) {
del_vars('categories');
addMessage('Статья успешно изменена!', 'ok');
gen_red('post', $id);
}
else $error = 'Ошибка! В данный момент не удалось изменить статью или вы не внесли изменения!';
}
else $error = 'Ошибка! Статья с таким названием уже есть в базе!';
}
else $error = 'Ошибка! Раздел не найден в БД. Попробуйте обновить кеш, возможно он устарел!';
}
else $error = 'Ошибка! Неверно указан раздел!';
}
else $error = 'Ошибка! Вы не ввели заголовок или текст статьи!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
if (!empty($error)) addMessage($error,'error');
}
Пожалуйста помогите, буду благодарен.
0
6. Александр 19.12.2013 / 22:36
Пришелец
in_array ищет в массиве ключ. у тебя ошибка.
Проверяй с текущим названием данные из формы.
if ($title != $is_cat['title']) {
// Обновляем
}
Но у тебя $is_cat число, сделай чтобы был массив или покажи эту функцию
0
7. Cristiano 19.12.2013 / 22:51
Землянин
Мне нужно не заголовок категорий а заголовок статьи проверяли вот $is_post = (int) $db->selectCell( "SELECT * FROM ?_data WHERE `title` = ? LIMIT 1", $_POST['title'] );
if ( $is_post < 1 && !in_array($_POST['title'])) {
0
8. Александр 19.12.2013 / 22:53
Пришелец
in_array не нужен!
Тебе надо выбрать название статьи и сравнить с тем, что ввели. Все
0
9. Cristiano 20.12.2013 / 00:41
Землянин
Вот этот блог у меня стоит http://profiwm.com/zc/file239 можешь исправить и дать исправленный код?
0
10. Александр 20.12.2013 / 01:03
Пришелец
Я там не зарегистрирован даже
Специально для такй ситуации
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск