php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-09-2006, 22:32
mukraker
 Master
Links : Onlinestatus : mukraker ist offline
Registriert seit: Jul 2002
Beiträge: 836
mukraker ist zur Zeit noch ein unbeschriebenes Blatt
mukraker eine Nachricht über ICQ schicken
Standard ListenNAvigation aus Array erzeugen

Ich möchte aus einem Array eine Navigation (Liste) erzeugen.
Die Navigation aktivePfade, Startseiten etc. anbieten - funzt auch soweit.

Was mir jetzt noch fehlt. Ich möchte jeder Ebene (Layer) eine ID zuweisen können.
PHP-Code:
$tmp str_replace('{$layer}'$layer$this->navTpl['layer'] ); 
Ich habe es an dieser Stelle im Code versucht, erhalte dann aber immer die Selbe ID.

[b]Eine Id Könne so aussehen[b]
<ul id="3">...</ul>


Hat jmd Ideen?



PHP-Code:
<?php
class Navigation 

    var 
$_url;
    var 
$_urlArray
    var 
$_page;
    var 
$_pathArray;
    var 
$_invPathArray;
    var 
$_depth;
    
    var 
$showEmptyFolder;
    var 
$maxDepth;
    var 
$activePath;
    var 
$showDepth;
    var 
$showStartPage;
    
    
// nav Tpl
    
var $navTpl;
    
    
// nav/ folder Array
    
var $navArray;
    
    function 
Navigation($navArray$navTpl
    {
        
$this->navTpl $navTpl;
        
$this->navArray $navArray;
        
$this->_urlArray = array();
        
$this->_pathArray = array();
    }
    
    function 
_getStartPageUrl($folder) {
        foreach(
$folder as $key => $subfolder) {
            if(
$subfolder['start'] == 1) {
                return 
$subfolder['link'];
            }        
        }
    }
    
    function 
_showFolder($folder) {
        
$tmp "";    
        if((
$this->_depth $this->maxDepth) or ($this->maxDepth == "0")) {
            
// new layer?
            
if (is_array($folder)) {
                
                
// loop array
                
$layer "";
                foreach(
$folder as $key => $subfolder) {
                    
// folder, evtl kann irgendwie auf den type verzichtet werden?
                    
if (is_array($subfolder[0]) || $subfolder['type'] == "folder" ) {
                        
// increase depth
                        
$this->_depth ++;
                        
                        
                            
// Unterordner Rekursiv anzeigen
                        
if(in_array($subfolder['folderLabel'], $this->_invPathArray) && $this->activePath ) {
                            
$subsub "\n".$this->_showFolder($subfolder); 
                        } elseif(
$this->_depth $this->showDepth) {
                            
$subsub "\n".$this->_showFolder($subfolder); 
                        
                        } else {
                            
$subsub "";
                        }
                        
                        
// active folder?
                        
                        
if(in_array($subfolder['folderLabel'], $this->_invPathArray) && $this->activePath) {
        
                            
$tmp_folder str_replace('{$folder}'$subsubstr_replace('{$label}'$subfolder['label'], $this->navTpl['folderactive']));
                        } else {
                            
$tmp_folder str_replace('{$folder}'$subsubstr_replace('{$label}'$subfolder['label'], $this->navTpl['folder']));
                        }
                        
                        
                        
// link der startseite
                        
$tmp_folder str_replace('{$link}'$this->_getStartPageUrl($subfolder), $tmp_folder);

                        
                        
$layer .= $tmp_folder;
                        
                    
// _page?
                    
} else {
                        
// dont show the folder data
                        
if (is_array($subfolder)) {
                            
//startseite anzeigen?
                            
if($subfolder['start'] &&  $this->showStartPage){
                                
// active _page
                                
if($subfolder['link'] == $this->_url) {
                                    
$tmp_page str_replace('{$label}'$subfolder['label'], $this->navTpl['pageactive']);
                                } else {
                                    
$tmp_page str_replace('{$label}'$subfolder['label'], $this->navTpl['page']);
                                }
                                
$tmp_page str_replace('{$link}'$subfolder['link'], $tmp_page);
                                
$layer .= $tmp_page;
                            } elseif ( !
$subfolder['start'] ) {
                                
// active _page ! ACHTUNG wiederholung von oben 
                                
if($subfolder['link'] == $this->_url) {
                                    
$tmp_page str_replace('{$label}'$subfolder['label'], $this->navTpl['pageactive']);
                                } else {
                                    
$tmp_page str_replace('{$label}'$subfolder['label'], $this->navTpl['page']);
                                }
                                
$tmp_page str_replace('{$link}'$subfolder['link'], $tmp_page);
                                
$layer .= $tmp_page;
                            
                            
                            }
                        }
                    }

                }  
// end foreach      
                
                // new layer
                
$tmp str_replace('{$layer}'$layer$this->navTpl['layer'] );  
                
                
            } else {
                
vd("Fehler: Kein Array übergeben");
            }
            return 
$tmp;
        }
        
    }


     
    function 
_doNav() 
    {
        
$_activeDepth 0;
        
$nav ="";
        
$nav .= $this->navTpl['start'];
        
$nav .= $this->_showFolder($this->navArray);
        
$nav .= $this->navTpl['end'];
        
        return 
$nav;

    }
    
    function 
display() 
    {
        echo 
$this->_doNav();
    }
    
    function 
getNavSource() 
    {
        return 
$this->_doNav();
    }
    
    function 
setActive($url
    {
        
$this->_url $url;
        
$this->_urlArray split("/"$url);
        
        
$this->_page array_pop($this->_urlArray);
        
$this->_pathArray $this->_urlArray;
        
$this->_invPathArray array_reverse($this->_urlArray);;
    }
  
}
?>
aufruf:
PHP-Code:
// tempalte 1
$navArray = array();
$navArray[] = array(    "label" => "Produkte"
                        
"type" => "folder");

    
$navArray[0][1] = array (    "start" => true
                                
"type"=> "folder"
                                
"label" => "Silos",
                                
"folderLabel" => "Silos"
                            
);
                            
                            
        
$navArray[0][1][0] = array (    "start" => true
                                        
"type"=> "page"
                                        
"label" => "Aluminium-Silos"
                                        
"link" => 
                                        
"www/Produkte/Silos/Aluminium-Silos.html"
                                    
);
        
$navArray[0][1][1] = array (    "start" => false
                                        
"type"=> "page"
                                        
"label" => "Edelstahl-Silos"
                                        
"link" => "www/Produkte/Silos/Edelstahl-Silos.html"
                                    
);
                                    
    
$navArray[0][2] = array (    "start" => true
                                
"type"=> "folder"
                                
"label" => "Schüttgutbehalter",
                                
"folderLabel" => "Schuttgutbehalter"
                            
);
                            
                            
                            
        
$navArray[0][2][0] = array (    "start" => true
                                        
"type"=> "page"
                                        
"label" => "Tagesbehälter"
                                        
"link" => 
                                        
"www/Produkte/Schuttgutbehalter/Tagesbehalter.html"
                                    
);
        
$navArray[0][2][1] = array (    "start" => false
                                        
"type"=> "page"
                                        
"label" => "Schüttgut-Container"
                                        
"link" => 
                                        
"www/Produkte/Schuttgutbehalter/Schuttgut-Container.html"
                                    
);



$navTpl = array();
$navTpl1['start'] = '<div id="ULnav1">';
$navTpl1['end']= '</div> ';
$navTpl1['layer']= '<ul>{$layer}</ul> ';
$navTpl1['page']= '<li><a href="{$link}">{$label}</a></li>';
$navTpl1['pageactive']= '<li><strong><a href="{$link}" class="active">{$label}</a></strong></li>';
$navTpl1['folder']= '<li><a href="{$link}" >{$label}</a>{$folder}</li>';
$navTpl1['folderactive']= '<li><strong><a href="{$link}" class="active">{$label}</a></strong>{$folder}</li>';


$Navigation1 = new Navigation($navArray$navTpl1);
$Navigation1->showEmptyFolder true;
$Navigation1->maxDepth 0;
$Navigation1->showDepth 2;
$Navigation1->activePath true;
$Navigation1->showStartPage false;
$Navigation1->setActive($url);
$navSource1 $Navigation1->getNavSource(); 
__________________
thx Mukraker
Mit Zitat antworten
  #2 (permalink)  
Alt 21-09-2006, 00:34
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: ListenNAvigation aus Array erzeugen

Zitat:
Original geschrieben von mukraker
Eine Id Könne so aussehen
<ul id="3">...</ul>
Nein, könnte sie nicht.


Und nachdem du dich darüber informiert hast, wie eine ID in HTML aussehen darf, brichst du bitte deinen Code um - bist lang genug dabei hier, um das zu wissen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 21-09-2006, 09:25
mukraker
 Master
Links : Onlinestatus : mukraker ist offline
Registriert seit: Jul 2002
Beiträge: 836
mukraker ist zur Zeit noch ein unbeschriebenes Blatt
mukraker eine Nachricht über ICQ schicken
Standard

es ging mir darum, dass ich nicht weiß, an welche stelle im code ich die ID einfügen kann.

$tmp = str_replace('{$layer}', $layer, $this->navTpl['layer'] );
$tmp = str_replace('{$depth}', $this->_depth, $tmp );


wenn ich es so mache, ist die depth überall gleich der höchsten depth.
__________________
thx Mukraker

Geändert von mukraker (21-09-2006 um 09:39 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 21-09-2006, 10:09
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Breche jetzt den Code um, sonst fliegt der Thread auf den Müll.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 21-09-2006, 10:15
mukraker
 Master
Links : Onlinestatus : mukraker ist offline
Registriert seit: Jul 2002
Beiträge: 836
mukraker ist zur Zeit noch ein unbeschriebenes Blatt
mukraker eine Nachricht über ICQ schicken
Standard

was meinst du?, der code bricht doch um - oder hast du das nun gemacht


Neueste Version ist hier zu finden. Das Problem ist noch nicht gelöst!
http://nopaste.php-q.net/241205
__________________
thx Mukraker

Geändert von mukraker (21-09-2006 um 10:18 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 21-09-2006, 10:59
Trashar
 PHP Senior
Links : Onlinestatus : Trashar ist offline
Registriert seit: Dec 2001
Ort: /root/
Beiträge: 1.366
Trashar ist zur Zeit noch ein unbeschriebenes Blatt
Trashar eine Nachricht über ICQ schicken Trashar eine Nachricht über AIM schicken
Standard

Zitat:
Original geschrieben von mukraker
[B]was meinst du?, der code bricht doch um - oder hast du das nun gemacht
wir müssen hier horizontal scrollen um deinen code zu lesen.. und das wollen wir nicht!
Mit Zitat antworten
  #7 (permalink)  
Alt 22-09-2006, 00:46
petro_0
 Registrierter Benutzer
Links : Onlinestatus : petro_0 ist offline
Registriert seit: Jan 2006
Ort: Fürth
Beiträge: 175
petro_0 ist zur Zeit noch ein unbeschriebenes Blatt
Standard sehr langer code...

also ich bin auch neu würd es aber auch nicht so machen;o(
aber immer wieder schön, wenn man mal anderer Leute Scripte lesen kann und eben auch sieht das andere die Fehler machen..hehe!
__________________
gruss pedro

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:11 Uhr.