Bonjour.
Je veux pouvoir afficher les liste de Menu dans ma fonction recurseMenu par 5 à chaque fois qu'on entre 99. Next comme ceci:
[1, 2, 3, 4, 5] => 99 => [6, 7, 8, 9, 10] => 99 => [11, 12].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 function toString() { $objectString=''; $items=$this->children; $bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1; do { $bufferLimit-=1; $objectString=$this->recurseMenu($items,$bufferLimit); } while(strlen($objectString>160)); $this->index=$bufferLimit; 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) { $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; }
Là, avec la fonction recurseMenu, affiche la liste totale des 12 menus:
Et quand j'essaie d'ajouter une condition $i >= $bufferLimit avec break dans la boucle foreach de la fonction recurseMenu comme ceci:
Les menus s'affichent en 5 en premier. Mais quand on entre la touche 99, au lieu de voir SEULEMENT AFFICHER le 2ème bloc de la liste de 6, 7, 8, 9, 10, on voit apparaître ce 2ème bloc juste en dessous du 1er bloc 1, 2, 3, 4, 5 comme ceci (1, 2, 3, 4, 5, 6, 7, 8, 9, 10):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 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; } ... ... ... } } }
Comment donc modifier la fonction recurseMenu pour afficher les menus par liste de 5 au lieu de voir afficher en dessous du bloc de liste précédent à chaque fois qu'on entre la touche 99 (Next) ???
Partager