Анекдоты для Johncms 5.x

2.02K
.
Hey guys! Finally I'm gonna change status!?
Dezaktivator, Чем хорош php, всегда, все работает как надо
Надо добавить индексы
ALTER TABLE `anekdot` ADD INDEX ( `type` ) ;
 -- mod не стоит использовать в имени столбца
ALTER TABLE `anekdot` ADD INDEX ( `mod` ) ;

a lot of hindu code
// example
    case 'plus':
    case 'minus':

    if ($user_id) {

        $res = mysql_fetch_assoc(mysql_query("SELECT refid, rating_users FROM `anekdot` WHERE `id` = '".$id."'"));
        $user_rat = explode('|', $res['rating_users']);
        if (!in_array($user_id, $user_rat)) {
            $rating = 1; if ($act == 'minus') { $rating = -1; }
            mysql_query("UPDATE `anekdot` SET `rating` = `rating`+".$rating.", `rating_users` = '".$user_id."|".$res['rating_users']."' WHERE `id` = '".$id."'");
            die(header('Location: ?act=catalog&id='. $res['refid'] . $uri));
        } else {
            echo functions::display_error($lng_an['rating_error'], '<a href="?">'.$lng_an['title'].'</a>');
        }
    } else {
        die(header('Location: ?'));
    }

        break;
.
kantry, да, индусский код имеет место - похоже автор писал его ещё во времена отсутствия каких-то стандартов... Кстати, на счёт записей вида
if ($act == 'minus') { $rating = -1; }
Так тоже не хорошо писать. В таких случаях (если условие короткое, и его можно записать в одну строку) нагляднее использовать сокращённый тернарник
$act != 'minus' ?: --$rating;
Ну или обычный
$rating = $act == 'minus' ? -1 : 0;
А если пугают тернарные операторы (запутывают логику, и т.п.), то уж лучше не экономить строки, и писать придерживаясь стандартов
if ($act == 'minus') {
    --$rating;
}
.
Hey guys! Finally I'm gonna change status!?
ДоХтор, Я для Dezaktivator-а написал, только с той целью что бы он раз уж залез в скрипт, то и доводил бы его до ума
П.С. Ошибочные примеры не давай больше
$act != 'minus' ?: --$rating - вернет или true или $rating
.
ДоХтор
# kantry (24.12.2017 / 13:01)
$act != 'minus' ?: --$rating - вернет или true или $rating
Ты шутишь что ли?? Открой мануал в разделе тернарных операторов, да почитай.
UPD: Смотреть демо (для отображения результата кликнуть по кнопке Execute code).

P.S.: Ты перепутал сокращённую запись тернарного оператора с коалесцентным: Оператор объединения с null
.
kantry, с удовольствием тебе отвечу, Я не шарю в этом настолько, что бы что то улучшить. Максимум это правка мелких багов (в основном при помощи Доктора) да ошибки синтаксиса могу иногда убрать самостоятельно.
Но например
'.$cat['text'].'
впихнуть в
$textl = $lng_an['title'];
Что бы титл получился Анекдоты | Категория у меня не получилось.
.
Hey guys! Finally I'm gonna change status!?
Dezaktivator, Самое простое сделать так))
$textl = $lng_an['title'] . ' | ' . $cat['text'];
.
Hey guys! Finally I'm gonna change status!?
ДоХтор, Может перепутал Только с какого перепуга у тебя рейтинг 0 стал? Там $rating = 1; и после декремента он ну никак в -1 не превратится
.
# kantry (24.12.2017 / 18:39)
Dezaktivator, Самое простое сделать так))
$textl = $lng_an['title'] . ' | ' . $cat['text'];
Пришлось добавлять запрос иначе не определялось
require_once('../incfiles/core.php');
$lng_an = core::load_lng('anekdot');
$cat = mysql_fetch_assoc(mysql_query("SELECT `text` FROM `anekdot` WHERE `id` = '".$id."'"))
$textl = $lng_an['title'] . ' | '.$cat['text'];
require_once('../incfiles/head.php');
.
# kantry (24.12.2017 / 18:41)
ДоХтор, Может перепутал Только с какого перепуга у тебя рейтинг 0 стал? Там $rating = 1; и после декремента он ну никак в -1 не превратится
Что значит "с какого перепугу"? Ты нормально не умеешь мысли выражать? ... Если под этим ты подразумевал "почему в переменной 0 а не 1?", то это не имеет значения, т.к. на принцип работы тернарного оператора это никак не влияет.

Проще говоря, значение переменной взято для демонстрации работы тернарников. В следующий раз, прежде чем заявлять о не корректности приведенных примеров, сперва убедись в этом сам. А то это выглядит как попытка троллинга
.
Hey guys! Finally I'm gonna change status!?
ДоХтор, А мне так наоборот показалось что ты мысли не верно выражаешь
Речь шла о конкретном куске кода $rating = 1; if ($act == 'minus') { $rating = -1; }
Твое пример сюда не подойдет.
Всего: 53