PHP Запись текста в переменную

linmsqn

Участник
Автор темы
337
9
Вообщем, написан бот на PHP, имеется определенная команда, которая выполняет поиск по БД и далее скидывает результат поиска в сообщении. К сообщению идет каллбек кнопка, по нажатию которой я хочу создать ссылку, чтобы ссылка вела на определенную страницу - нужно использовать текст из переменной, чтобы перекинуло на нужную страницу, но текст из переменной не появляется почему-то. Как исправить - не знаю

Код самой команды:
PHP:
    $texttest = $vk->buttonText('test', 'blue', ['user' => 'ulink']);

    if(in_array($cmd, ['юзер'])) {
        try {
            $uid = implode(" ", $args);
            if($uid == '') {
                $vk->reply("Не указан аргумент, пример: (юзер 1)");
                exit;
            }
            $result = $mysqli->query("SELECT * FROM `users` WHERE id=$uid");
            while($row = $result->fetch_assoc()) {   
                $uidinfo2 = $row['username']; // Условно - abcdef
            }
            if ($uidinfo1 != '') {
                $list .= "ЛОГИН - ".$uidinfo2;
                $vk->sendButton($id, $list, [[$texttest]], true);
            } else {
                $vk->reply('Не найдено в таблице');
            }
        }
        catch (Exception $e) {
            $vk->reply("Ошибка: ".$e->getMessage() );
        }
    }

Действие по нажатию кнопки:
PHP:
    if ($payload) {       
        if ($payload['user'] == 'ulink') {
            $vk->reply("Ссылка на профиль: https://site.com/$uidinfo2");
            // ДОЛЖНО ВЫВЕСТИ - https://site.com/abcdef
            
            // ВЫВОДИТ - https://site.com/
            // То есть вывод тупо без нужного параметра
        }       
    }
 

zzalupka

Участник
48
22
Проблема заключается в том, что переменная $uidinfo2 находится внутри области видимости цикла while, а не доступна внутри обработчика каллбека кнопки. Вы можете объявить переменную за пределами цикла, а затем присвоить ей значение внутри цикла, чтобы она была доступна и в обработчике каллбека кнопки:

Код:
if(in_array($cmd, ['юзер'])) {

 try {

$uid = implode(" ", $args);

if($uid == '') {

$vk->reply("Не указан аргумент, пример: (юзер 1)");

 exit;

        }

$result = $mysqli->query("SELECT * FROM `users` WHERE id=$uid");

$uidinfo2 = '';

while($row = $result->fetch_assoc()) {

$uidinfo2 = $row['username']; // Условно - abcdef

        }

if ($uidinfo2 != '') { //исправлено с $uidinfo1 на $uidinfo2

$list .= "ЛОГИН - ".$uidinfo2;

$vk->sendButton($id, $list, [[$texttest]], true);

} else {

$vk->reply('Не найдено в таблице');

        }

    }

catch (Exception $e) {

$vk->reply("Ошибка: ".$e->getMessage() );

    }

}



if ($payload) {

if ($payload['user'] == 'ulink') {

$vk->reply("Ссылка на профиль: https://site.com/$uidinfo2");

    }     

}

Теперь переменная $uidinfo2 будет доступна и внутри обработчика каллбека кнопки и ссылка будет формироваться правильно.