PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Dynamische Navigation (https://www.php-resource.de/forum/php-developer-forum/87687-dynamische-navigation.html)

andygyr 19-10-2007 19:32

Dynamische Navigation
 
Hallo zusammen..

Ich möchte eine Dynamische navigation machen.
Navigation:

Community
- Forum
- Mitarbeiter

Ich möchte das Man in einer PHP Datei(ohne MySQL) diese Dynamische navigation verwalten kann.

Dabei muss folgendes beachten:
- Der Link enthält ein Namen, Datei, Get-Variabel, Untergeordnete Katekorie
- Die Kategorie kann auch verlinkt werden.

Ich hab das mit mehrdimensinalen Array's versucht, bin jedoch nicht uaf eine schlaue lösung gekommen.

Die datei sollte dan unfegähr so aussehen:
PHP-Code:

<?php
$titel 
= array();
$link = array();

$titel['Titelname'] = 'verlinkung';
$link['Get Variabel'] = 'verlinkung';

?>

Da kann ich aber folgendes nicht festlegen:
1. Linkname
2. Untergeordneter Titel

Also ein link ist immer einem Titel untergeordnen.



Ich hoffe ihr versteht mein Problem, ansonsten fragt was ihr nicht versteht ;)

Gruss Andy

TobiaZ 19-10-2007 19:42

das was du da versucht hast, ist wenig mehrdimensional.

wo ist das problem?

PHP-Code:

$nav[] = array('titel' => 'Startseite''datei' => 'index.php''get' => array(), 'subs' => array()); 

get muss natürlich nicht unbedingt ein array sein.

In subs speicherst du dann ggf. mehrere Arrays der gleichen Struktur.

Ist dein Problem verstanden?
Es gibt natürlich 100e möglichkeiten

andygyr 19-10-2007 20:06

Danke erstmal für deine schnelle antwort.

Ja, ich weiss das was ich oben geschrieben habe ist nicht mehrdimensional. Ich hab es aber bei mir mit mehreren arrays probiert.

Eigendlich dachte ich das die ganze datei ein bisschen übersichtlicher gestaltet werden sollte.
Dass heisst sie silte eigendlich genau gleich dargestellt sein wie schlussendlich die navigation.

Code:

Titel (array oder was auch immer)
Link (array oder was auch immer)
Link ...

Titel (array oder was auch immer)
Link (array oder was auch immer)
Link ...

Titel (array oder was auch immer)
Link (array oder was auch immer)
Link ...

ca so.

Gibt es evetuell nich ne möglichkeit das ganze nicht in dieser
[code]$a = array(a, b, c);
struktur zu machen sondern in dieser:
Code:

$a = array();
$a[] = 'a';

zu machen?

Das würde das ganze shcon ein bisschen übersichtlicher machen.

Vielleicht kennt auch jemand noch einen guten link wo ich mehr über diese 'blöden' mehrdimensionel arrays erfahre..
:D

3DMax 19-10-2007 20:46

Zitat:

Original geschrieben von andygyr
Gibt es evetuell nich ne möglichkeit das ganze nicht in dieser
[code]$a = array(a, b, c);
struktur zu machen sondern in dieser:
Code:

$a = array();
$a[] = 'a';


klar geht das.
für mehrere dimensionen dann halt so:
PHP-Code:

$nav['index_1'][]='a';
$nav['index_1'][]='b';
// ...
$nav['index_9'][]='x';
$nav['index_9'][]='y'

für die zweite dimension kannst du natürlich auch assoziative keys verwenden. [] inkrementiert lediglich numerische indizies (bei 0 beginnend)

highrise 19-10-2007 20:51

klar gibt es die... wenn du das für leute schreibst, die es verstehen sollen, ohne es zu verstehen etwa so:

PHP-Code:

$ein_link['name']='Link eins';
$ein_link['uri']='seite1.htm'//und so weiter
$menu[]=$ein_link;

$ein_link['name']='Link zwei';
$ein_link['uri']='seite2.htm'//bla blubber
$menu[]=$ein_link

damit hättest du dann die ersten beiden einträge im array...

zugreifen kannst du darauf dann auch mit
$menu[0]['name'] bzw. $menu[1]['name'] und so weiter...

wenn du das ganze dann auch noch mit untermenüpunkten brauchst, dann legst du einfach ein menü ins menü und schreibst ne funktion zum anzeigen, die rekursiv aufgerufen werden kann in einer schleife... also zum beispiel so:

PHP-Code:

function zeige_menu($welches,$einruecken) {
  foreach (
$welches as $a_link) {
     
//schreibe $einruecken mal ein geschütztes leerzeichen
     //code zum hinschreiben des namen und link etc.
     
if (isset($a_link['untermenu'])) zeige_menu($a_link['untermenu'],$einruecken+4);
     
//schreibe einen absatz
  
}
}

//und dann zum anzeigen einfach so aufrufen:
zeige_menu($hauptmenu,0); 

in $hauptmenu[]['untermenu'] steckt dann einfach wieder ein komplettes menü-array...

das ganze funktioniert dann in beliebiger tiefe, bis der bildschirm voll ist...

aber wie gesagt, es gibt 100e möglichkeiten

greetz, high

andygyr 20-10-2007 13:52

Hmm Danke :)

Das mit der Funktion checke ich nicht. Ich denke aber ich brauche dies auch nicht. Trotzdem Danke.

Ich hab das mal so probiert:
PHP-Code:

$ein_link['titel'] = 'titel1'// Neuer Titel

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link einsa';
$ein_link['get'] = 'lkink1a';
$ein_link['datei'] = 'seite1.ahtm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;


$ein_link['titel'] = 'titel2'// Neuer Titel

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1.htm';

// Links erstellen
$menu[]=$ein_link;

// Neuer Link
$ein_link['name'] = 'Link eins';
$ein_link['get'] = 'lkink1';
$ein_link['datei'] = 'seite1x.htm';

// Links erstellen
$menu[]=$ein_link;

$navigation '';
$titel = array();
$name = array();
$get = array();
$datei = array();

$c count($menu)-1;
for (
$i=0$i<=0$i++)
{
foreach (
$menu[$i] as $a => $b)
{
    if(
$a=='name') { 
        
$name[] = $b;
    } elseif (
$a=='get') {
        
$get[] = $b;
    } elseif (
$a=='datei') {
        
$datei[] = $b;
    } elseif (
$a=='titel') {
        
$titel[] = $b;
    }
}
}

$cc count($get);
for (
$i=0;$i<=$cc;$i++) 
{
    echo 
'<a href="'.$datei[$i].'">'.$name[$i].'</a> - Get Variabel: '.$get[$i].' Gehört zum titel: '.$titel[$i].'<br>';


Ist mehr ne testausgabe.
Das Problem ist: das die arrays $name, $get, $datei und $titel je nur ein wert drin haben.
Wiso?

highrise 20-10-2007 14:17

weil du ziemlich genau von 0 bis 0 zählst....

for ($i=0; $i<=0; $i++)

ergo nur ein durchlauf durch die schleife. anyway... den schleifenkram kannst du sowieso um einiges glücklicher lösen, aber für nen test sollte es reichen, wenn du nicht $i<=0 sondern eben $i<=$c schreibst...

greetz, high

andygyr 20-10-2007 16:16

Oh..
ja, logisch :S ^^


Aber wie kann ich das machen, ohne so viele schleifen?

TobiaZ 20-10-2007 16:21

Verstehe das Problem nicht?

andygyr 20-10-2007 16:58

Nunja, ich kann nun jeden einzelnen link ausgeben, mit dazugehöriger GET variabel und titel.

Wie kann ich jetzt alle die den gleichen titel haben unter diesen Titel ordnen?

TobiaZ 20-10-2007 17:02

Warum sollten mehrere Navigationselemente den gleichen bzw. selben Titel haben???

andygyr 20-10-2007 17:14

Viellicht ist Titel nicht das richtige wort. Kategorie wär wohl besser.
In meiner Text-Navigation will ich das folgendermasten machen:

Aktuell
******
- News
- Updates

Community
*********
- Forum
- Disclaimer

Und da währen dann Cummunity und Aktuell die Titel.
Und die untergeordneten Links sind bei Aktuell news, Updates. Und bei Cummunity Forum, Disclaimer.

TobiaZ 20-10-2007 17:53

Wie sieht denn die aktuelle Array-Struktur aus?

andygyr 20-10-2007 18:01

so:
Code:

array(8) {
  [0]=>
  array(4) {
    ["titel"]=>
    string(6) "titel1"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [1]=>
  array(4) {
    ["titel"]=>
    string(6) "titel1"
    ["name"]=>
    string(10) "Link einsa"
    ["get"]=>
    string(7) "lkink1a"
    ["datei"]=>
    string(11) "seite1.ahtm"
  }
  [2]=>
  array(4) {
    ["titel"]=>
    string(6) "titel1"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [3]=>
  array(4) {
    ["titel"]=>
    string(6) "titel1"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [4]=>
  array(4) {
    ["titel"]=>
    string(6) "titel2"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [5]=>
  array(4) {
    ["titel"]=>
    string(6) "titel2"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [6]=>
  array(4) {
    ["titel"]=>
    string(6) "titel2"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(10) "seite1.htm"
  }
  [7]=>
  array(4) {
    ["titel"]=>
    string(6) "titel2"
    ["name"]=>
    string(9) "Link eins"
    ["get"]=>
    string(6) "lkink1"
    ["datei"]=>
    string(11) "seite1x.htm"
  }
}

Dieses array habe ich aber oben schon verarbeitet.

TobiaZ 20-10-2007 18:18

Ist doch unfug. Warum überträgst du meinen Vorschlag nicht auf dein problem?

$navi[] = array('title' => 'Aktuell', 'subs' => array(
array('name' => 'News', 'file' => 'news.php', ...),
array('name' => 'Updates', 'file' => 'updates.php', ...)));
$navi[] = array('title' => 'Community', 'subs' => array(...));


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:14 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG