【发布时间】:2022-08-24 22:59:03
【问题描述】:
我有一个更改我的 USSD 项目的菜单显示的小新错误(我称之为:\"分页\") 但是,在我对项目的另一部分进行更改之前,它起作用了。正如您在以下屏幕截图中看到的那样:
SCREEN OF DISPLAYING OF THE MENU LIST
function toString(){
$objectString=\'\';
$items=$this->children;
$bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1;
echo \"<pre>\";
echo $this->getBufferLimit()+1;
echo \"</pre>\";
do{
$bufferLimit-=1;
$objectString=$this->recurseMenu($items,$bufferLimit);
}while(strlen($objectString>160));
$this->index=$bufferLimit;
/* echo \"<pre>\";
echo $this->index;
echo \"</pre>\"; */
/* echo \"<pre>\";
echo $objectString;
echo \"</pre>\"; */
return $objectString;
}
function getBufferLimit() {
$len=count($this->children);
$margin=$len-$this->index;
if($margin<5)
return $this->index+$margin;
else
return $this->index+5; //Permet de définir le Nombre de Menu à afficher au niveau de l\'index \"/ussd/receiver.php\" dont le Menu est \"/ussd/MyTree.php\".
}
function recurseMenu($items,$bufferLimit) {
$objectString=\"<strong>\". $this->getTitle() . \"</strong>\" . PHP_EOL;
$lastMenu=false;
if(count($items)>0) {
foreach ($items as $i => $item) {
if ($i >= $bufferLimit){
break;
}
$num = $i + 1;
//get node by name
$userSessions = $_SESSION[\'userSessions\'];
$currUserSession = $userSessions[$this->address];
$node = $currUserSession->getNode($item);
$title = $node->getTitle();
$objectString .= PHP_EOL . $num . \'. \' . $title;
}
} else {
$objectString=$objectString.PHP_EOL . \'NO DATA AVAILABLE, TRY AGAIN LATER\';
}
$lastMenu=$bufferLimit==count($items);
$objectString=$objectString . PHP_EOL . PHP_EOL . \"<strong>0. Exit</strong>\";
if($this->getParent() != \'0\'){
$objectString=$objectString . PHP_EOL . \"<strong>#. Back</strong>\";
}
if($lastMenu===false){
$rem=count($items)-$this->index;
$objectString=$objectString . PHP_EOL . \"<strong>99. Next (\".$rem.\")</strong>\";
}
return $objectString;
}
正如您在我刚刚发送给您的屏幕截图中看到的那样,在此屏幕截图中以蓝色选择的下一页(7 到 12)菜单显示在索引下方,而当我们发送消息“99”时这会激活 \"Next\" 选项,默认索引的第一个菜单列表(1 到 6)应该消失并让位于下一个菜单列表(7 到 12)。
当我尝试在上面的 \"toString\" 函数中调试 \"$this->getBufferLimit()+1\" 时,如下所示:
echo \"<pre>\";
echo $this->getBufferLimit()+1;
echo \"</pre>\";
- 该第一\"
99. Next\" 的条目返回给我6。 - 该第二\"
99. Next\" 的输入返回给我11。 - 该第三\"
99. Next\" 的条目返回给我13。
我指定当前有 12 个菜单,我每次按 \"99. Next\" 时尝试分批显示 5 个菜单。
那么如何修改我的\"getBufferLimit\"函数中的\"return $this->index+5\"这样即使我们单击“99. Next”操作,它也只显示接下来的 6 个菜单列表,而不是在上面的屏幕截图中当前看到的之前的列表下方显示它们,因为知道它也用于“@” 987654343@\"函数下面???
谢谢请帮帮我。
标签: php