UPDATE 2: Ich wusste zu wenig über die tricks und probleme von php4 .... scroll down for resolving of this issue - THX
UPDATE: es sieht ganz so aus, als ob php4 die datenstruktur objekt in objekt nicht unterstützt ... unter php5 funktioniert es problemlos --- kann mir jemand mit mehr erfahrung in solchen details dies bestätigen? merci im voraus!
functions/menu.php:
menu in aktion:
dieser code funktioniert unter php5 problemlos und generiert das menu mit submenu
der server, auf dem dieser code definitiv laufen sollte, benutzt php4 ... der code liefert keine fehler, warnungen oder irgendetwas komisches ... das submenu wird aber nicht in das hauptmenu gebunden:
tut nicht das, was es soll ... wieso, weiss ich jedoch auch nicht, da alles nicht php5 spezifisch ist
bin für jede hilfe dankbar
grüesslis - dp
[edit by waq]bunt is hübscher[/edit]
UPDATE: es sieht ganz so aus, als ob php4 die datenstruktur objekt in objekt nicht unterstützt ... unter php5 funktioniert es problemlos --- kann mir jemand mit mehr erfahrung in solchen details dies bestätigen? merci im voraus!
functions/menu.php:
PHP-Code:
<?
class menuentry{
var $name;
var $short;
var $linksSubmenu;
var $isTitle;
var $submenu;
function menuentry($Tshort, $Tname, $TisTitle){
$this->short = $Tshort;
$this->name = $Tname;
$this->linksSubmenu = 0;
$this->isTitle = $TisTitle;
}
function addSubmenu($submenu){
$this->submenu = $submenu;
$this->linksSubmenu = 1;
}
function linksSubmenu(){
return $this->linksSubmenu;
}
}
class menu
{
var $entries;
function addEntryT($short, $name){ // Titel
$this->entries[count($this->entries)] = & new menuentry($short, $name, 1);
}
function addEntry($short, $name){ // normal
$this->entries[count($this->entries)] = & new menuentry($short, $name, 0);
}
function getEntry($short){
$liste = $this->entries;
for($a = 0; $a < count($liste); $a++) {
if($liste[$a]->short==$short){
return $liste[$a];
}
}
}
}
function MenuAusgabe($menu, $baseurl){
$alles=$menu->entries;
for($i=0; $i<count($alles); $i++){
if($alles[$i]->isTitle==1){ // TITEL
echo "<div>".$alles[$i]->name."</div>\n";
}
elseif($alles[$i]->short==$_GET['show']){ // AKTIV
echo "\t<a class='aktiv' href='".$baseurl."?show=".$alles[$i]->short."'>".
$alles[$i]->name."</a> \n";
if($alles[$i]->linksSubmenu==1){ // SUBMENU EXISTIERT!
$submenu=$alles[$i]->submenu;
$hermitdendaten=$submenu->entries;
for($s=0; $s<count($hermitdendaten); $s++){
if($hermitdendaten[$s]->short==$_GET['subcat']){
echo "\t\t[url='".$baseurl."?show=".$alles[$i]->short."&subcat=".$hermitdendaten[$s]->short."']".$hermitdendaten[$s]->name."[/url] \n";
}else{
echo "\t\t[url='".$baseurl."?show=".$alles[$i]->short."&subcat=".$hermitdendaten[$s]->short."']".$hermitdendaten[$s]->name."[/url] \n";
}
}
}
}else{ // NICHT AKTIV
echo "\t<a href='".$baseurl."?show=".$alles[$i]->short."'>".
$alles[$i]->name."</a> \n";
}
}
}
?>
PHP-Code:
<?
/* alles für das menu ist unter functions/menu.php deklariert */
define('FUNCTIONS_DIR', '/home/httpd/vhosts/calcutta-project.ch/httpdocs/functions/');
require_once(FUNCTIONS_DIR.'menu.php');
/* Build Menu: */
$hauptmenu = new menu;
$hauptmenu->addEntryT("titel1", "Calcutta Project Basel");
$hauptmenu->addEntry("partner", "Partner");
$hauptmenu->addEntry("sponsoren", "Sponsors");
$hauptmenu->addEntryT("titel2", "NGO's");
$hauptmenu->addEntry("ngosCH", "Switzerland");
$Eintrag_ngosCH = $hauptmenu->getEntry("ngosCH");
$ngosCH = new menu;
$ngosCH->addEntry("umwelt", "Environnement");
$ngosCH->addEntry("armut", "Poverty");
$Eintrag_ngosCH->addSubmenu($ngosCH);
$hauptmenu->addEntry("ngosE", "World");
$Eintrag_ngosE = $hauptmenu->getEntry("ngosE");
$ngosE = new menu;
$ngosE->addEntry("umwelt", "Environnement");
$ngosE->addEntry("armut", "Poverty");
$Eintrag_ngosE->addSubmenu($ngosE);
$hauptmenu->addEntryT("titel3", "India");
$hauptmenu->addEntry("calcutta", "Calcutta");
$hauptmenu->addEntry("india", "General");
/*
echo "<pre>";
echo print_r($hauptmenu);
echo "</pre>";
*/
/* WRITE MENU */
echo "<div class='sideBox LHS'>";
MenuAusgabe($hauptmenu, "/pub/links.en.php");
echo "</div>";
?>
der server, auf dem dieser code definitiv laufen sollte, benutzt php4 ... der code liefert keine fehler, warnungen oder irgendetwas komisches ... das submenu wird aber nicht in das hauptmenu gebunden:
Code:
$Eintrag_ngosE = $hauptmenu->getEntry("ngosE"); $ngosE = new menu; $ngosE->addEntry("umwelt", "Environnement"); $ngosE->addEntry("armut", "Poverty"); $Eintrag_ngosE->addSubmenu($ngosE);
bin für jede hilfe dankbar
grüesslis - dp
[edit by waq]bunt is hübscher[/edit]
Kommentar