我需要动态创建一个字符串,以将其作为电报中的嵌入式键盘打印

我正在编程一个具有嵌入式按钮的电报机器人。要打印嵌入式按钮,我首先需要设置一个“键盘”。


“键盘”由我打印时将出现的按钮组成。


嵌入式键盘示例是这样的:


$tastieraStart='[{"text":"Menu","callback_data":"StampaMenu"},{"text":"Carrello","callback_data":"VisualizzaCarrello"}],[{"text":"Prezzario","callback_data":"Prezzario"}]';

此键盘在第一行中可视化2个按钮(Menu和Carrello),在第二行中可视化1个按钮(prezzario)


就我而言,我需要创建一个键盘来动态地从数据库中获取数据



/*THIS IS HOW I USUALLY PRINT A BOT INLINE KEYBOARD*/


$tastieraStart='[{"text":"Menu\n'.$menu.'","callback_data":"StampaMenu"},{"text":"Carrello\n'.$carrello.'","callback_data":"VisualizzaCarrello"}],[{"text":"Prezzario\n'.$prezzario.'","callback_data":"Prezzario"}]';

editMessageText($queryUserId,$querymsgid,"Benvenuto ".$name.", da oggi sarò il tuo barista personale! \xF0\x9F\x98\x89 \nCome posso servirti?",$tastieraStart,"inline");

在下面看到的代码中,我仅选择所需的元素并将其添加到键盘。该代码有效,如果我尝试打印键盘,它将以正确的格式打印。


当我想将其用作键盘时,我的机器人仅打印“ 1”。我不知道这个“ 1”是从哪里来的。



if($querydata=="Freddo")

    {


        $CONT="SELECT COUNT(*) AS totale FROM ListinoProdotti WHERE categoria='freddo'";

        $resultCONT=$conn->query($CONT);

        $row = $resultCONT->fetch_assoc();

        $COUNT=$row['totale'];

        editMessageText($queryUserId,$querymsgid,$COUNT);



        $QueryFreddo="SELECT * FROM ListinoProdotti WHERE categoria='freddo'";

        $resultFreddo=$conn->query($QueryFreddo);  

        $row = $resultFreddo->fetch_assoc();

        $tastieraTemp="'";

        for($i=0;$i<$COUNT;$i++)

        {


            $prezzoTemp=$row['prezzo'];


            $prodottoTemp=$row['prodotto'];


            $tastieraTemp=$tastieraTemp."[{'text':\"".$prodottoTemp.$prezzoTemp."\",'callback_data':\"POSVER\"}]";


            if($i<=$resultCONT)

            {

                $tastieraTemp=$tastieraTemp."'";

            }

            else

            {

                $tastieraTemp=$tastieraTemp.",";

            }


        }

        $tastieraFreddo=$tastieraTemp;


        editMessageText($queryUserId,$querymsgid,"Seleziona ciò che desideri ordinare:freddo",$tastieraFreddo,"inline");

        exit();

    }


这也是我用来编辑上一个键盘的功能



侃侃尔雅
浏览 119回答 1
1回答

慕村225694

我解决了这个问题...基本上,这是一个简单的解决方案:p我将粘贴正确的代码if($querydata=="Freddo"){&nbsp; &nbsp; $CONT="SELECT COUNT(*) AS totale FROM ListinoProdotti WHERE categoria='freddo'";&nbsp; &nbsp; $resultCONT=$conn->query($CONT);&nbsp; &nbsp; $row = $resultCONT->fetch_assoc();&nbsp; &nbsp; $COUNT=$row['totale'];&nbsp; &nbsp; editMessageText($queryUserId,$querymsgid,$COUNT);&nbsp; &nbsp; $QueryFreddo="SELECT * FROM ListinoProdotti WHERE categoria='freddo'";&nbsp; &nbsp; $resultFreddo=$conn->query($QueryFreddo);&nbsp;&nbsp;&nbsp; &nbsp; $row = $resultFreddo->fetch_assoc();&nbsp; &nbsp; //$tastieraTemp="'";&nbsp; &nbsp; for($i=0;$i<$COUNT;$i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $prezzoTemp=$row['prezzo'];&nbsp; &nbsp; &nbsp; &nbsp; $prodottoTemp=$row['prodotto'];&nbsp; &nbsp; &nbsp; &nbsp; $tastieraTemp=$tastieraTemp."[{\"text\":\"".$prodottoTemp.$prezzoTemp."\",\"callback_data\":\"POSVER\"}]";&nbsp; &nbsp; &nbsp; &nbsp; if($i<=$resultCONT)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tastieraTemp=$tastieraTemp."";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tastieraTemp=$tastieraTemp.",";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; $tastieraFreddo=$tastieraTemp;&nbsp; &nbsp; editMessageText($queryUserId,$querymsgid,"Seleziona ciò che desideri ordinare:freddo",$tastieraFreddo,"inline");&nbsp; &nbsp; exit();}
打开App,查看更多内容
随时随地看视频慕课网APP