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

Печать RSS
341

C
Автор
Землянин
0
Здарова, вот код редактирования статей
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
if (!empty($title) && !empty($text)) {
    $is_title = (int) $db->selectCell( "SELECT * FROM ?_category WHERE `title` = ? ", $title );
        if ( $is_title > 0) {
            $error = 'Ошибка! Статья существует';
        }
}
C
Автор
Землянин
0
сейчас попробую.
C
Автор
Землянин
0
К сожалению не работает. Все равно спасибо тебе.
C
Автор
Землянин
0
вот код редактирования статей теперь с этой функцией которая запрещает вводить одинаковые заголовки, но теперь при изменении статьи необходимо изменить и заголовок, так как она считает что это уже 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
in_array ищет в массиве ключ. у тебя ошибка.
Проверяй с текущим названием данные из формы.
if ($title != $is_cat['title']) {
// Обновляем
}
Но у тебя $is_cat число, сделай чтобы был массив или покажи эту функцию
C
Автор
Землянин
0
Мне нужно не заголовок категорий а заголовок статьи проверяли вот $is_post = (int) $db->selectCell( "SELECT * FROM ?_data WHERE `title` = ? LIMIT 1", $_POST['title'] );
if ( $is_post < 1 && !in_array($_POST['title'])) {

Пришелец
0
in_array не нужен!
Тебе надо выбрать название статьи и сравнить с тем, что ввели. Все
C
Автор
Землянин
0
Вот этот блог у меня стоит http://profiwm.com/zc/file239 можешь исправить и дать исправленный код?

Пришелец
0
Я там не зарегистрирован даже
Специально для такй ситуации
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск