Navigation durch Auslesen von Dateinamen

CrazyChickin

Grünschnabel
Hallo liebe Leutz hier!

Nachdem ich jetzt gegoogelt habe UND hier gesucht habe und nüscht fand, stell ich die Frage nu halt - falls es hier doch irgendwo scho rumturnt, büdde nit hauen, weiß ja nichtmal genau, wonach ich suchen sollt *g* Hab gesucht nach "navigation" und "dateiname", wobei ich bei letzterem schätzungsweise ansatzweise dat fand, wattich suchte...

Egal, WAS ich suche, sollt ich nu auch ma sagen :p

Was ich will:
In ein php-Dokument eine Unternavigation eingliedern.

Wenn ich jetzt z.B. eine Kategorie "Über uns" habe, die wiederum Subcategories hat, hätte ich gerne eine Ausgabe

Über uns >> Fakten >> Gewinne

wobei, die beiden ersten verlinkt sein sollten auf die jeweilige übergeordnete Kategorie.

Was ich nu gerne wüsste:
Ist es möglich, Dateinamen auszulesen und als solch eine Navi auszgeben? Also wenn die Datei ueberuns_fakten_gewinne.php hieße, dass dann anhand der _'s getrennt wird in Links in der Hierarchie, und dass der letzte vor der Dateiendung dann als nichtverlinkter Text ausgegeben wird?

Würd mich riesig freuen, wenn mir da jemand zu helfen weiß, denn diese werte Unternavi macht mir echt Kopfzerbrechen da wiegesagt absoluter . :(

Greetz,
crazy
 
Sischa geht das. Du kannst z.B. mit der Funktion explode arbeiten.
Oder kannst eine Ordner Navigation machen. Also wirklich die Existierenden Ordner auslesen und so eine Navigation erstellen....

MFG
redX
 
ok, kann dir wohl nur bedingt helfen, da ich das selbe Problem hatte, und mit meiner Loesung nicht so ganz sicher bin, aber es geht.
Ich habe eine idex.php, in die ich Inhalte include. Dazu uebergebe ich zwei Parameter in der URL, einen fuer den Ordner, einen fuer die Datei, da mein Inhalt in mehreren Unterordnern ist.
Diese beiden Parameter werden als String behandelt, und somit noch ein bisschen verschoent, (zB >> rangeschrieben, .php muss weg, ect).
Und es funktioniert.
Kannst mal auf hier schauen (achtung Baustelle)
 
redX hat gesagt.:
Sischa geht das. Du kannst z.B. mit der Funktion explode arbeiten.
Oder kannst eine Ordner Navigation machen. Also wirklich die Existierenden Ordner auslesen und so eine Navigation erstellen....

MFG
redX

Wenn ich den Ordner Navi wirklich anlege, mache ich's mir ja umständlicher. Da ginge es statisch - also html-basiert - knapper, is 'n 3-Zeiler :)

explode? Mussi mi ma einlesen, danke für den Tipp :p
 
@supersalzi: Öhm... kannse mir zufällig ma nen Code-Schnipsel zeigen? *liebgugg* Weil dat, wat ich auf deiner Site seh, is ja nu wieder nur html-Ausgabe, wenn ich in die Source gugg. ;)
 
Hi!

Zuerst erstellst du dir einen Array bei dem du den Anzeigenamen den Kurznamen zuordnest:
PHP:
$navi = array(
'ueberuns' => 'Über uns',
'fakten' => 'Fakten',
'gewinne' => 'Gewinne'
);
Und dann erstellst du anhand dessen die Breadcrumps:
PHP:
foreach (explode('_', substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/'), -4) as $sub) 
	echo ' » '.htmlentities($navi[$sub]);
Den Link müsstest du dir selbst reinbasteln :)

Mamphil
 
Hi,
sorry, eigentlich dachte ich, dass ich gestern Nacht noch meinen Code gepostet hatte, aber nun ist er nicht da. Ich war wahrscheinlich so muede, dass ich irgendwie daneben gedrueckt habe.
Ich muss noch ein paar dinge Anmerken:
schau mal hier..
Habe heute gerade einen neuen code gemacht, bzw bin noch dabei. Also ist es nicht schlimm, dass der alte nicht hier ist, allerding fuerchte ich noch probleme damit.
Ich frage mich aber, woran man sieht, ob die paar Links von Hand oder von PHP in den Quellcode geschrieben wurde?
Der Vorteil meiner Loesung ist ganz klar, dass es ganz automatisch geht, also du nichts irgendwo dazufuegen musst wenn du neuen Ordner und Dateien erstellst. Das ganze mache ich mit den Variablen, die ich zwecks includierung sowieso ueber dei URL uebergebe.
Wenn du noch intresse hast, sag bescheid, ich schick dir den code gern, wenn er fertiger ist.
Salzi

Sorry, habe gerade gesehen, dass ich dir doch den richtigen Link gegeben habe. Also hast du doch das Richtige gesehen, und falsch geschlussfogert. PHP schreibt dir einen richtig schoenen html code, du kannst das nicht unterscheiden.
 
Zuletzt bearbeitet:
*lol* @salzi

Genau DAS meinte ich doch *weglach* Das ich eben, da es ja onthefly in html umgesetzt wird, anhand des rechten Mausklicks >> Quelltext nicht sehen kann, wie dein Script ausschaut - so doof binnsch anet ;-)
 
well, wahrscheinlich habe ich verstaendnissprobleme, egal.
Hier poste ich dir mal meine code.
Es sollte bis zu 4 Parametern, sprich zB einer Datei in drei Ordnern tiefer, mitmachen.(mehr brauch in nicht, laesst sich aber problemlos ausdehen)
wie gesagt, ist noch nicht 100%, habe es noch nie mit mehr als 2 Parametern getestet (du bist einfach zu frue :) )

PHP:
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET["c"];
$d = $_GET["d"];
// breadcrump
if(!isset($a)){																
	$pos_a = '» home';
}elseif(!empty($a)and empty($b) or $b == 'index'){												// prueft ob letztes element
	$pos_a = "»$a";
}else{
	$pos_a = "<a href=\"index.php?a=$a&amp;b=index\" class=\"path-link\">»$a</a>";
}
if($b == 'index' or empty($b)){
	$pos_b = '';
}elseif(!empty($b)and empty($c)){
	$pos_b = "»$b";
}else{
	$pos_b = "<a href=\"index.php?a=$b\" class=\"path-link\">»$b</a>";
}

if($c == 'index' or empty($c)){
	$pos_c = '';
}elseif(!empty($c)and empty($d)){
	$pos_c = "»$c";
}else{
	$pos_c = "<a href=\"index.php?a=$c\" class=\"path-link\">»$c</a>";
}

if($d == 'index' or empty($d)){
	$pos_d = '';
}else{
	$pos_d = "»$d";
}

$position = "$pos_a $pos_b $pos_c $pos_d";
Natuerlich ist das jetzt sehr genau fuer mich zugeschnitten. So heist zB jede erste Datei in einem Order/Thema index.php, und dieser Name wird dann eben nicht ausgegeben.
Salzi
 
ich hab das so gelöst ,allerdings funktioniert das nur in zwei ebenen.
also
Hauptebene
Unterebene


HTML:
//in der Anzeigeseite 
-als erstes
<?php
//Auslesen der Einträge
include('open.php');
$aktmenu="Über Uns";
?>
-in der Tabelle
 <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=130>
                   <?php
                   	include('navigation.php');
                   	?>
                </TABLE>

//open.php
<?php
//Auslesen der Einträge die Menu's und sichtbar sind
$sql="select * from navigation where hide=0 order by orde";
$link = mysql_connect("localhost","nutzerefk");
mysql_select_db("intranet", $link);
$result = mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$navigation[$i]=mysql_fetch_array($result);
}
?>

//Navigation.php


<?php
//Ausgeben der Einträge

$overmenu="";
for($i=0;$i<count($navigation);$i++)
{
	if($navigation[$i][havesubmenu]=="0" and $navigation[$i][issubmenu]=="0")
		{
			if($navigation[$i][name]==$aktmenu){$img="open.gif";}else{$img="close.gif";}
			echo "<TR VALIGN=TOP ALIGN=LEFT>";
			echo "<TD WIDTH=130 HEIGHT=24><img src=\"".$img."\" border=\"0\">&nbsp;<A class=\"navi\" HREF=\"".$navigation[$i][link]."\">".$navigation[$i][name]."</A></TD>";
			echo "</TR>";
		}
	if($navigation[$i][havesubmenu]=="1")
		{
			$overmenu=$navigation[$i][name];
			//--------------------------------------------------------------------------
			if($navigation[$i][name]==$aktmenu){$img="open.gif";}else{$img="close.gif";}
			echo "<TR VALIGN=TOP ALIGN=LEFT>";
			echo "<TD WIDTH=130 HEIGHT=24><img src=\"".$img."\" border=\"0\">&nbsp;<A class=\"navi\" HREF=\"".$navigation[$i][link]."\">".$navigation[$i][name]."</A></TD>";
			echo "</TR>";
			//--------------------------------------------------------------------------
			//Anfang FOR
			for($x=0;$x<count($navigation);$x++)
				{
					//Anfang IF wenn $aktmenu = Service
					if($aktmenu==$navigation[$i][name] and $navigation[$x][menu]==$navigation[$i][name])
						{
							//--------------------------------------------------------------------------
							if($navigation[$x][name]==$aktmenu){$img="open.gif";}else{$img="close.gif";}
							echo "<TR VALIGN=TOP ALIGN=LEFT>";
							echo "<TD WIDTH=130 HEIGHT=24>&nbsp;&nbsp;<img src=\"".$img."\" border=\"0\" width=\"14\" height=\"13\">&nbsp;<A class=\"subnavi\" HREF=\"".$navigation[$x][link]."\">".$navigation[$x][name]."</A></TD>";
							echo "</TR>";
							//--------------------------------------------------------------------------
						}//Ende IF
					else
					{
						for($y=0;$y<count($navigation);$y++)
							{
								if ($aktmenu==$navigation[$y][name])
									{
										if($navigation[$y][menu]==$navigation[$i][name])
											{
											if($navigation[$x][menu]==$navigation[$i][name]){														//--------------------------------------------------------------------------
							if($navigation[$x][name]==$aktmenu){$img="open.gif";}else{$img="close.gif";}
							echo "<TR VALIGN=TOP ALIGN=LEFT>";
							echo "<TD WIDTH=130 HEIGHT=24>&nbsp;&nbsp;<img src=\"".$img."\" border=\"0\" width=\"14\" height=\"13\">&nbsp;<A class=\"subnavi\" HREF=\"".$navigation[$x][link]."\">".$navigation[$x][name]."</A></TD>";
							echo "</TR>";
							//--------------------------------------------------------------------------
											}
											}
									}
							}
					  }
				}//Ende FOR
		}
}

?>

Das Skript hat mich 3 Tage gekostet


MfG
 
Zurück