Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

Re: Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

par chegmarco » 17 août 2022, 22:20

Quand je débugue lors du 1er appel à "99. Next", je reçois: comme valeur de $len = 12, de $margin = 12 et de $this->index = 0.
Quand je débugue lors du 2ème appel à "99. Next", je reçois: comme valeur de $len = 12, de $margin = 7 et de $this->index = 5.
Quand je débugue lors du 3ème appel à "99. Next", je reçois: comme valeur de $len = 12, de $margin = 2 et de $this->index = 10.


Voici mon code avec le débugage:

Code : Tout sélectionner

function getBufferLimit() { $len=count($this->children); $margin=$len-$this->index; echo "<pre>"; echo $len; echo "</pre>"; echo "<pre>"; echo $margin; echo "</pre>"; echo "<pre>"; echo $this->index; echo "</pre>"; 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". }
Comment donc scinder l'affichage des menus par 5 à chaque appel de "99. Next" ???

Merci de m'aider s'il vous plaît.

Re: Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

par chegmarco » 17 août 2022, 17:37

Merci pour votre réponse. Mais $objectString représente tout ou l'ensemble du contenu qui s'affiche sur l'écran contenu de la page dans la fonction recurseMenu:

Code : Tout sélectionner

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; }
Vraiment aidez-moi s'il vous plaît à résoudre ce problème.

Re: Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

par Spols » 17 août 2022, 09:25

salut, de nouveau j'ai rien compris mais cette ligne a des parenthèse mal placées

}while(strlen($objectString>160));

Comment modifier ma fonction comme dans un système de pagination pour qu'il n'affiche que les 6 prochains menus ?

par chegmarco » 17 août 2022, 04:46

Bonjour.

J'ai un petit nouveau bug de changement d'affichage de menu de mon projet USSD (ce que j'appelle: "PAGINATION") qui pourtant fonctionnait avant que je ne fasse des modifications dans une autre partie de mon projet.

Image

Comme vous pouvez le constater sur la capture d'écran que je viens de vous envoyer, la Page suivante (7 à 12) sélectionnée en bleu sur cette capture d'écran, du Menu apparait juste en dessous de l'index alors que quand on envoie le message "99" qui actionne l'option "Next", la 1ère liste de Menu de l'index par défaut (1 à 6) devrait disparaître et laisser place à la liste de Menus suivante (7 à 12).

LE CODE QUI GERE L'AFFICHAGE DES MENUS EST LE SUIVANT:

Code : Tout sélectionner

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+6; //Permet de définir le Nombre de Menu à afficher au niveau de l'index "/ussd/receiver.php" dont le Menu est "/ussd/MyTree.php". }
Comment donc modifier le return $this->index+6 dans ma fonction getBufferLimit pour qu'il affiche SEULEMENT les 6 prochaines liste de Menu même quand on clique sur l'action "99. Next" au lieu de les afficher en dessous des précédents comme on le voit actuellement sur la capture d'écran ci-dessus sachant qu'elle est également utilisé dans la fonction "toString" ci-dessous ???

Merci de m'aider s'il vous plaît.