Получить значение из БД

Всем добрый день. Может кто-нибудь подсказать, как получить значение из базы данных? В моём случае в таблице blog_user находиться поле «usersup», нужно получить значение по ID пользователя и ID блога.

14 комментариев

0
Вам нужно узнать какой id у пользователя? А то не совсем четко сформулирован вопрос. Либо мне уже пора идти спать ))
0
Нет, мне нужно было, чтобы у каждого пользователя была возможность оставлять что-то типа заметки к каждому блогу, на который он подписан(кстати, как заметки у пользователей). Поэтому я создал в таблице blog_user — где хранятся отношения пользователя и блога колонку usersup.
-1
Подобие @user?
0
На деле не проверял, но должно так работать:
// Получаем отношение блог-юзер
$oBlogUserRel = E::ModuleBlog()->GetBlogUserByBlogIdAndUserId($iBlogId, $iUserId);
// Получаем значение поля usersup
$sUsersup = $oBlogUserRel->getUsersup();
0
Увы, не работает, или я что-то не так делаю. Видимо getUsersup() надо где-то описывать?
Fatal error: Call to a member function getUsersup() on a non-object in common/classes/widgets/WidgetUsersup.class.php on line 11
Отредактирован:
0
Ну так, смотрите что пишет ошибка

Фатальная ошибка: ошибка функции члена ( гугл жжот )
+1
Я надеюсь, это под Альто 1.1 все делается? Код я для этой версии дал.

Но тут есть деталь: отношение блог-юзер возникает, когда юзер на этот блог подписывается. Иначе будет возвращаться null. Поэтому скорректируем так:
// Получаем отношение блог-юзер
$oBlogUserRel = E::ModuleBlog()->GetBlogUserByBlogIdAndUserId($iBlogId, $iUserId);
// Если отношение задано, ...
if ($oBlogUserRel) {
    // ... то получаем значение поля usersup
    $sUsersup = $oBlogUserRel->getUsersup();
} else {
    // ... иначе присваиваем пустую строку
    $sUsersup = '';
}
Здесь метод getUsersup() можно не задавать явно, по умолчанию будет возвращать значение поля usersup, полученное в запросе к базе
0
Большое спасибо, работает. ) И да, под Альто 1.1 делается.
Отредактирован:
0
Дико извиняюсь, а не подскажите, как обновлять это значение? Здесь уже надо прописывать setUsersup?
0
Я попытался в блог маппере сделать функцию(по аналогии с UpdateRelationBlogUser, обновляющей отношения пользователя с блогом):
public function UpdateUsersup(ModuleBlog_EntityBlogUser $oBlogUser, $usersup) {

        $sql = "
            UPDATE ?_blog_user
            SET 
                usersup = ?d
            WHERE
                blog_id = ?d 
                AND
                user_id = ?d
            ";
        $xResult = $this->oDb->query($sql, $usersup, $oBlogUser->getBlogId(), $oBlogUser->getUserId());
        return $xResult !== false;
    }

После чего сделал кнопку в виджете:
<button type="submit" onclick="E::ModuleBlog()->UpdateUsersup()">{$aLang.your_name_in_game}</button>

Когда не вышло, я решил сделать функцию в Blog.class.php, опять же, по аналогии с имеющейся:
public function UpdateUsersup(ModuleBlog_EntityBlogUser $oBlogUser, $usersup) {

        $bResult = $this->oMapper->UpdateUsersup($oBlogUser, $usersup);
        if ($bResult) {
            E::ModuleCache()->CleanByTags(
                array("blog_relation_change_{$oBlogUser->getUserId()}",
                      "blog_relation_change_blog_{$oBlogUser->getBlogId()}")
            );
            E::ModuleCache()->Delete("blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}");
            return $bResult;
        }

Однако ничего из этого не помогло(
Отредактирован:
0
<button type="submit" onclick="E::ModuleBlog()->UpdateUsersup()">{$aLang.your_name_in_game}</button>

Ээээ тут надо javascript`ом дергать, однако. Про остальное не скажу.
Отредактирован:
0
Пробовал javascript'ом, но не вышло. ((
+1
Разве такой синтаксис уместен?
Я не разбираюсь в смарти, но разве так можно?

onclick="E::ModuleBlog()->UpdateUsersup()"
Отредактирован:
0
Нет конечно. Ни синтаксис ни подход не верен. Надо писать аяксовый обработчик и через JS его дергать.
Отредактирован:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.