 |

14.02.2023, 02:03
|
|
Постоянный
Регистрация: 29.05.2020
Сообщений: 331
С нами:
3136519
Репутация:
73
|
|
Вообщем, написан бот на 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/
// То есть вывод тупо без нужного параметра
}
}
|
|
|

19.03.2023, 18:34
|
|
Участник форума
Регистрация: 27.08.2017
Сообщений: 143
С нами:
4584912
Репутация:
83
|
|
|
|
|

19.03.2023, 18:39
|
|
Познающий
Регистрация: 16.03.2023
Сообщений: 49
С нами:
1666070
Репутация:
13
|
|
Проблема заключается в том, что переменная $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 будет доступна и внутри обработчика каллбека кнопки и ссылка будет формироваться правильно.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|