Как заменить строку на картинку, если есть результат выборки в БД?

К примеру, вот да вывод стикеров, как смайлы, с текста в картинку

function stickers($text) {
    global $user, $user_id, $mysqli;

    $res = $mysqli->query("SELECT * FROM `stickers`");
    while ($array = $res->fetch_array()){
        $text = str_replace($array['name'],' <img class="stic" 
        src="/files/stickers/'.$array['name'].'.png"> ',$text);
    }

    return $text;

}

Если у пользователя нет этих стикеров в бд stickers_users, то, если он пытается отправить стикер, он отображался просто как текст, а не картинка, ну или писало, что стикер не активен.

Нужно для того, чтобы те у кого их нету не могли их юзать.


Ответы (1 шт):

Автор решения: mepihindeveloper

Надо привести структуру БД для конкретного ответа. А так надо сделать в цикле проверку наподобиe такой:

// Сделать выборку из таблицы stickers_users по user_id и sticker_id и записать ее в переменную stickerUser
if (!$stickerUser) {
    continue;
}

Решение временное и может отличаться от структуры ваших данных, но суть в том, чтобы сначала получить массив стикеров юзера до цикла, а потом сделать поиск в массиве на каждом этапе цикла. Либо, можно делать запрос в БД каждый шаг цикла, но это не очень хорошее решение из-за нагрузки.

→ Ссылка