(reines) php menü erstellen

  • #1
2

2beers

Guest
hola!

ich möchte in meine bestehende website ein menü einbauen in der form:

menu1
1. txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-
menu2
2. txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-txt-
[...]

wobei txt ausschließlich zu sehen sein soll wenn man auf die jeweilige überschrift klickt.

Dazu hätte ich hier eine feine anleitung gefunden bei der mir aber wenn ichs recht sehe ein teil fehlt:

-> Ich schreib also (lt. dieser Anleitung) in die index.php:
<?php include('menu.php');?>

-> und in die menu.php:
<?php
echo'
<ul>
<li><a>menu1</a></li>
<li><a>menu2</a></li>
<li><a>menu3</a></li>
</ul>
';?>

soweit sogut - damit hab ich mal eine liste.
Laut der Anleitung auf der Site gehts denn so weiter:

Jetzt werden die Links im obigen Beispiel jeweils ersetzt durch:

If ($var1!='menu1') {echo'<li><a
href=index.php?var1=menu1>menu1</a></li>';}
Else {include('text1.php');}


Jo - nur wenn ich statt <li><a>menu1</a></li>[/] obiges schreibe hat det nicht die gewünschte wirkung... und ich versteh nicht warum <a href=index.php?var1=menu1>menu1</a> da steht. ich mein in der index.php hab ich nur den verweis auf die menu.php drin - also was macht diese referenz da drin?
muß ich noch mehr in der index.php editieren?

regards

[red]EDIT by PCDJoshua:
Link korrigiert, Tags waren falsch[/red]
 
  • #2
Könnte z.B. so aussehen:

menu.php
Code:
<?php
...
if($_REQUEST['m']) {
	switch ($_REQUEST['m']) {
		case 1: $m1 = <li>Text Menu 1</li>; break;
		case 2: $m2 = <li>Text Menu 2</li>; break;
		case 3: $m3 = <li>Text Menu 3</li>; break;
		default: $m1 = $m2 = $m3 = false;
	}
}
echo <li><a href='index.php?m=1'>Menu 1</a></li>
     $m1
	 <li><a href='index.php?m=2'>Menu 2</a></li>
	 $m2
	 <li><a href='index.php?m=3'>Menu 3</a></li>
     $m3;
...
?>

index.php
Code:
<?php
...
include menu.php;
...
?>

Durch den Include Befehl ist die menu.php ein Teil von index.php geworden. Alles was in der menu.php steht hat ab dem Include Befehl auch für die index.php Gültigkeit.


gruss conny
 
  • #3
phantastisch!
großartig! - das geht ja richtig :)

muchas grazias!
:D

jetzt will ich natürlich mehr :)

kann ich die aufzählungszeichen von den untermenüs entfernen? oder is das einfach so wenn eine list erstellt wird?

ja und denn hab ich da heute diese feine site für dhtml gefindet:
http://www.dhtmlcentral.com/script/search.asp?category=menu
kann man sich gleich ansehen, wie die menüs aussehen, alles gratis code schnippsel & recht nette menüs tw.

Da ich jetzt aber nicht auch noch DHTML anfangen will - meine frage:
kennt wer eine ähnliche site für php?
also möglichst mit vorschau, schöner code erklärung...?

oder gibts eine *einfache* möglichkeit in eine bestehende php site dhtml einzubauen?
also mit einfach meine ich - ich hab keine ahnung von dhtml; html - nahezu nur über WYSIWYG oberflächen & mit php fang ich gaaaanz langsam mal an, ein bisschen die logischen zusammenhänge zu durchschauen :)
 
  • #4
2beers schrieb:
kann ich die aufzählungszeichen von den untermenüs entfernen? oder is das einfach so wenn eine list erstellt wird?

Wenn wir jetzt von meinem Beispiel ausgehen, brauchst du nur die <li> Tags zu entfernen.

Code:
<?php
...
if($_REQUEST['m']) {
 switch ($_REQUEST['m']) {
  case 1: $m1 = Text Menu 1; break;
  case 2: $m2 = Text Menu 2; break;
  case 3: $m3 = Text Menu 3; break;
  default: $m1 = $m2 = $m3 = false;
 }
}
...
?>

Das mit dem DHTML muß ich mir erstmal anschauen ;) ;)

gruss conny

OK, lass es.

NOTE: This script has some problems in NS6 for PC and IE5.2 for the MAC. I am currently working on fixing that.

Da steht zwar, das es gefixt wird, aber die Seite wurde zum letzten Mal am 01.08.2002 aktualisiert, was sagt uns das ;D ;D

Da gehts nicht weiter.

Aber wenn du sowieso noch am lernen bist, ist DHTML im Anfangsstadium eh nicht zu empfehlen.
Ich mache diesen Beruf nun seit mehreren Jahren, und greife trotzdem äußerst ungern auf DHTML zurück.

OK, wenns richtig klappt ists ne schöne Sache, aber es muss erstmal richtig klappen ;) ;)

Also wie gesagt beim lernen nicht so viele Sachen auf einmal anfangen.
 
  • #5
oooooch ja also da hätt ich ja schön langsam auch selbst mal draufkommen können das
<li> einfach für list steht ganauso wie <b> f blod, i - italic... naaaaaaajaaaaa mühsam ernährt sich das eichhörnchen ...

danke - echt geil mal einen code zu kriegen der zu verstehen is & denn auch noch so funktioniert wie er da steht!

cheers!

achja - und geh ma pennen - is ja schon spät ;D
 
  • #6
Moin, moin!

noch eine ergänzende Frage:

Wie kann ich die einzelnen Menüpunkte dazu bringen bei einem 2. Klick wieder zuzuklappen?

danke
2beers
 
  • #7
Hi,

wllst du die menu.php nur zur Steuerung des Menüverhaltens einsetzen, solltest du die Ausgabe in eine Variable packen, und den Echo-Befehl erst in der index.php aufrufen. ;)
Ich hab die Sache mal für dich etwas renoviert.

menu.php
Code:
<?php
// Per Default alle Werte für open/close auf 2 stellen
// somit wird erreicht, das sich das Menu beim ersten Klick öffnet.
// Steht der Wert auf 1, würde sich das Menu erst beim 2. Klick öffnen
$o1 = $o2 =$o3 = 2;

if($_REQUEST['m']) {
	switch ($_REQUEST['m']) {
		// Wenn Menu 1 gewählt wurde
		case 1: {
			// Wenn o1 den Wert 2 hat, zeige das Menu, ansonsten nicht.
			$m1 = ($_REQUEST['o1'] == 2) ? Text Menu 1 : false; 
			// Wenn o1 den Wert 2 hat, setze ihn auf 1 und umgekehrt.
			$o1 = ($_REQUEST['o1'] == 2) ? 1 : 2;
			break;
		}
		case 2: {
			$m2 = ($_REQUEST['o2'] == 2) ? Text Menu 2 : false; 
			$o2 = ($_REQUEST['o2'] == 2) ? 1 : 2;
			break;
		}
		case 3: { 
			$m3 = ($_REQUEST['o3'] == 2) ? Text Menu 3 : false; 
			$o3 = ($_REQUEST['o3'] == 2) ? 1 : 2;
			break;
		}
		default: {
			$m1 = $m2 = $m3 = false;
		}
	}
}
$menu = <li><a href='index.php?m=1&o1=$o1'>Menu 1</a></li>
        $m1
	    <li><a href='index.php?m=2&o2=$o2'>Menu 2</a></li>
	    $m2
	    <li><a href='index.php?m=3&o3=$o3'>Menu 3</a></li>
        $m3;
?>

index.php
Code:
<?php
....
include menu.php;
echo $menu;
....
?>

gruss conny
 
  • #8
mui bien!, herrrrrlich, fantastico! mmmmh!

conny ich liebe dich - allerfeinsten dank auch! :)
 
  • #9
2beers schrieb:
.....
conny ich liebe dich
.....

Ähmm, das lassen wir doch lieber ;) ;D

Ansonsten, gerne wieder ;)


gruss conny
 
  • #10
Das script von Conny kann man noch um einiges optimieren, dadurch fallen einige unnötige if abfragen weg und man brauch eine variable weniger im link :)

Code:
<?php
function admmenu() {
$m1 = $m2 = $m3 = false;
if($_REQUEST['m']) {
	switch ($_REQUEST['m']) {
		case 1: {
			$m1 = Text Menu 1; 
			break;
		}
		case 2: {
			$m2 = Text Menu 2; 
			break;
		}
		case 3: { 
			$m3 = Text Menu 3; 
			break;
		}
		default: {
			$m1 = $m2 = $m3 = false;
		}
	}
}
return $menu = <li><a href='index.php?m=1'>Menu 1</a></li>
      	<br>$m1
	    	<li><a href='index.php?m=2'>Menu 2</a></li>
	    	<br>$m2
	    	<li><a href='index.php?m=3'>Menu 3</a></li>
      	<br>$m3;
}
?>

* Code-Tags eingefügt *
 
  • #11
dnake.---probiers morgen mal aus...
 
  • #12
Hi ich habe mir das mit dem menü mal angesehen...
Nun noch ne frage da das jea solo geht kann cih doch bestimmt in dem menü auch andere Sachen anezigen lassen. oder?
ich nutzte ein XT Shop und würde dieses Menü gern in dem Adminmenü haben, da mich diese vielen punkte immer irritieren.

habe mal folgendes ausprobiert:

Code:
<?php

 $admin_access_query = xtc_db_query(select * from  . TABLE_ADMIN_ACCESS .  where customers_id =-> . $_SESSION['customer_id'] .->);
 $admin_access = xtc_db_fetch_array($admin_access_query); 

function admmenu() {
$m1 = $m2 = $m3 = false;
if($_REQUEST['m']) {
switch ($_REQUEST['m']) {
case 1: {
$m1 = echo ('<div class=dataTableHeadingContent><b>'.BOX_HEADING_CUSTOMERS.'</b></div>');
 if (($_SESSION['customers_status']['customers_status_id'] ==->0') && ($admin_access['customers'] ==->1')) echo-><a href=' . cns_href_link(FILENAME_CUSTOMERS,->',->NONSSL') .-> class=menuBoxContentLink> -' . BOX_CUSTOMERS .-></a><br>';
 if (($_SESSION['customers_status']['customers_status_id'] ==->0') && ($admin_access['customers_status'] ==->1')) echo-><a href=' . cns_href_link(FILENAME_CUSTOMERS_STATUS,->',->NONSSL') .-> class=menuBoxContentLink> -' . BOX_CUSTOMERS_STATUS .-></a><br>';
 if (($_SESSION['customers_status']['customers_status_id'] ==->0') && ($admin_access['orders'] ==->1')) echo-><a href=' . cns_href_link(FILENAME_ORDERS,->',->NONSSL') .-> class=menuBoxContentLink> -' . BOX_ORDERS .-></a><br>';
break;
}
?>

vieleicht kann mir da auch jemand weiter helfen?
Gruss
Fire
 
  • #13
Da du ja die Werte von $admin_access in der Funktion verwenden willst musst du dies der Funktion erst bekannt machen.

Code:
<?php
$admin_access_query = xtc_db_query(select * from  . TABLE_ADMIN_ACCESS .  
                                where customers_id =-> . $_SESSION['customer_id'] .->);
$admin_access = xtc_db_fetch_array($admin_access_query);

function admmenu() {
  global $admin_access;
  .....
  .....
}
?>
 
  • #14
ja okay so weit verstanden...
Wenn ich allerdings die admin_access innerhalb der funktion bekannt gebe
habe ich immer noch das problem das ich keine ahnung habe wie die nun angezeigt bekomme.? erst einmal danke für deine hilfe conny ich schließe mcih den anderen mal an.

Auf der Seite zum Beispiel xy.php wir das dann so aufgerufen oder?
Code:
<?php

include('column_left.php');
adminmenu($m);
?>

oder habe ich da einen denkfehler?

Das ist ja nicht der einzigste eintrag dort in der datei.
Das erden dann so locker 11 Cats die ich in die Funktion schreibe.
Wäre echt cool wenn wir das gelöst kriegen würde.
Lieben gruss Fire
 
  • #15
Hy, Leute
Ich habe jetzt dieses Menü in meine Seite eingebaut aber jetzt hab ich das Problem das die submenüs nicht geöffnet bleiben wenn ich diese anklicke. Die Seite wird zwar aufgerufen aber das menü spring wieder zu, kann mir da vielleicht jemand einen Rat geben?
 
  • #16
Wie hast du es denn eingebaut ? poste bitte mal deinen Code ;)
 
Thema:

(reines) php menü erstellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben