par
chegmarco » 16 août 2022, 19:16
Bonjour.
- La ligne 83 de l'erreur que je reçois et que j'ai mise ci-dessous est du fichier UssdNode.php qui contient la déclaration de la variable $item=$items[$i]; dans la méthode recurseMenu ci-dessous.
- La ligne 45 de la même erreur du fichier UssdTree.php contient la déclaration de la variable $node=$this->treeMenu[$name]; dans la méthode getNode ci-dessous.
- La ligne 94 de la même erreur du fichier UssdNode.php contient la déclaration de la variable $title=$node->getTitle(); dans la méthode recurseMenu ci-dessous.
Ma méthode ou fonction
recurseMenu (
UssdNode.php) contient normalement
la liste des menus (
QUE JE CHERCHE A AFFICHER) contenue dans la variable
$title=$node->getTitle();:
Code : Tout sélectionner
function recurseMenu($items,$bufferLimit) {
$objectString="<strong>". $this->getTitle() . "</strong>" . PHP_EOL;
$lastMenu=false;
if(count($items)>0) {
for($i=$this->index;$i<$bufferLimit;$i++){
$item=$items[$i];
/* echo "<pre>";
print_r($item);
echo "</pre>"; */
$num=$i+1;
//get node by name
$userSessions=$_SESSION['userSessions'];
$currUserSession=$userSessions[$this->address];
$node=$currUserSession->getNode($item);
$title=$node->getTitle();
$objectString=$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;
}
Méthode [c]getNode[/c] du fichier
UssdTree.php:
Code : Tout sélectionner
function getNode($name){
$node=$this->treeMenu[$name];
return $node;
}
Le problème c'est que rien ne s'affiche.
Et quand j'essaie le
debug de
$this->recurseMenu($items,$bufferLimit) dans ma méthode (fonction)
toString qui affiche la liste des
$titles en chaînes de caractères:
Code : Tout sélectionner
function toString(){
$objectString='';
$items=$this->children;
$bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1;
echo "<pre>";
print_r($this->recurseMenu($items,$bufferLimit));
echo "</pre>";
do{
$bufferLimit-=1;
$objectString=$this->recurseMenu($items,$bufferLimit);
}while(strlen($objectString>160));
$this->index=$bufferLimit;
return $objectString;
}
Je reçois l'erreur suivante:
Code : Tout sélectionner
Notice: Undefined offset: 3 in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 83
Notice: Undefined index: in C:\laragon\www\ussd\ussdmenu-server-php\UssdTree.php on line 45
Fatal error: Uncaught Error: Call to a member function getTitle() on null in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php:94
Stack trace:
#0 C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php(59): UssdNode->recurseMenu(Array, 4)
#1 C:\laragon\www\ussd\ussdmenu-server-php\UssdUserSession.php(77): UssdNode->toString()
#2 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(51): UssdUserSession->fetchDisplay()
#3 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(43): UssdReceiver->handleChildBearingNode('paybill', '0772247408', '1234567')
#4 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(15): UssdReceiver->handleContinuingRequests('0772247408', '4', '1234567')
#5 C:\laragon\www\ussd\receiver.php(28): UssdReceiver->onMessage(Array)
#6 C:\laragon\www\ussd\receiver.php(36): MyUssdReceiver::process(Array)
#7 {main}
thrown in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 94
URL :
http://localhost/ussd/receiver.php
MSISDN :
Comment afficher correctement la liste des menus représentée par la variable
$title=$node->getTitle(); dans la méthode
recurseMenu ci-dessous ?
Aidez-moi à corriger cette erreur.
Bonjour.
[LIST]
[*]La [B]ligne 83[/B] de l'erreur que je reçois et que j'ai mise ci-dessous est du fichier [B]UssdNode.php[/B] qui contient la déclaration de la variable [B]$item=$items[$i];[/B] dans la méthode [B]recurseMenu[/B] ci-dessous.
[*]
[*]La [B]ligne 45[/B] de la même erreur du fichier [B]UssdTree.php[/B] contient la déclaration de la variable [B]$node=$this->treeMenu[$name];[/B] dans la méthode [B]getNode[/B] ci-dessous.
[*]
[*]La [B]ligne 94[/B] de la même erreur du fichier [B]UssdNode.php[/B] contient la déclaration de la variable [B]$title=$node->getTitle();[/B] dans la méthode [B]recurseMenu[/B] ci-dessous.
[/LIST]
Ma méthode ou fonction [B]recurseMenu[/B] ([B]UssdNode.php[/B]) contient normalement [I]la liste des menus[/I] ([B][I]QUE JE CHERCHE A AFFICHER[/I][/B]) contenue dans la variable [B]$title=$node->getTitle();[/B]:
[CODE]function recurseMenu($items,$bufferLimit) {
$objectString="<strong>". $this->getTitle() . "</strong>" . PHP_EOL;
$lastMenu=false;
if(count($items)>0) {
for($i=$this->index;$i<$bufferLimit;$i++){
$item=$items[$i];
/* echo "<pre>";
print_r($item);
echo "</pre>"; */
$num=$i+1;
//get node by name
$userSessions=$_SESSION['userSessions'];
$currUserSession=$userSessions[$this->address];
$node=$currUserSession->getNode($item);
$title=$node->getTitle();
$objectString=$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;
}[/CODE]
Méthode [c]getNode[/c] du fichier [B]UssdTree.php[/B]:
[CODE]function getNode($name){
$node=$this->treeMenu[$name];
return $node;
}[/CODE]
[B]Le problème c'est que rien ne s'affiche.[/B]
Et quand j'essaie le [B]debug[/B] de [B]$this->recurseMenu($items,$bufferLimit)[/B] dans ma méthode (fonction) [B]toString[/B] qui affiche la liste des [B]$titles[/B] en chaînes de caractères:
[CODE]function toString(){
$objectString='';
$items=$this->children;
$bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1;
echo "<pre>";
print_r($this->recurseMenu($items,$bufferLimit));
echo "</pre>";
do{
$bufferLimit-=1;
$objectString=$this->recurseMenu($items,$bufferLimit);
}while(strlen($objectString>160));
$this->index=$bufferLimit;
return $objectString;
}[/CODE]
Je reçois l'erreur suivante:
[CODE]Notice: Undefined offset: 3 in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 83
Notice: Undefined index: in C:\laragon\www\ussd\ussdmenu-server-php\UssdTree.php on line 45
Fatal error: Uncaught Error: Call to a member function getTitle() on null in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php:94
Stack trace:
#0 C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php(59): UssdNode->recurseMenu(Array, 4)
#1 C:\laragon\www\ussd\ussdmenu-server-php\UssdUserSession.php(77): UssdNode->toString()
#2 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(51): UssdUserSession->fetchDisplay()
#3 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(43): UssdReceiver->handleChildBearingNode('paybill', '0772247408', '1234567')
#4 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(15): UssdReceiver->handleContinuingRequests('0772247408', '4', '1234567')
#5 C:\laragon\www\ussd\receiver.php(28): UssdReceiver->onMessage(Array)
#6 C:\laragon\www\ussd\receiver.php(36): MyUssdReceiver::process(Array)
#7 {main}
thrown in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 94
URL :
http://localhost/ussd/receiver.php
MSISDN :[/CODE]
Comment afficher correctement la liste des menus représentée par la variable [B]$title=$node->getTitle();[/B] dans la méthode [B]recurseMenu[/B] ci-dessous ?
Aidez-moi à corriger cette erreur.