Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit PHP Menu erstellen
Original geschrieben von Tex Hex
Moin.... sooo das wird mein erster Post hier :D
Hab mir die letzte Woche schon nen Wolf agbesucht quer durchs Net um eine möglichst schnelle Lösung für mein Problem zu finden... naja hat alles nicht so geklappt wie ich mir das dachte :D
Ich bin eigenltich üüüberhaupt nicht Fit in PHP ... bin eher für C/C++ Sachen zuständig. Muß aber jetzt leider das hier machn
Habs mal einfach in ein kleines Pic gepackt damit man in etwa sehen kann was ich zu erledign hab :/
http://www.s-o-s.info/Pix/phpmenu.gif
Wie auf dem Bild zu sehn soll über ein paar Navigationsbuttons im oberen Frame - ein Php - Menü im Leftframe geöffnet werden, dass sich dynamisch über eine Datenbank die ganzen Menüpunkte holt.
Die Submenüs solln dann im Mainframe die entsprechende Site z.B halt mit dem zu streamenden Video - öffnen.
Njo ... hab schon s ganze Forum durchgestöbert mit div. Anfragen über Menüs/Dropdown/Datenbankabfragen etc. aber nichts wirklcih geeignetes gefunden bzw. hab ich vor ner Woche das erste mal in ein Php Buch gelugt und bin jetzt gerade erst dabei mir da was anzueignen...
Wies ungefähr zu machen ist habich in etwa verstanden, die commands für die Datenbankabfrage kenn ich auch schon :D jaja nur n gesamtes Script .... hmm da würdich wahrscheinlich noch 3 Wochen dran sitzen ;)
Deswegen meine groooooße Bitte ... könnt ihr mir da ein bischl unter die Arme greifen?
P.s ich hab irgendwas mal aufgefangen von wegen - ohne Frames, in Tabellen dargestellte/aktualisierte Seiten!? - wenns so geht wärs natürlich uch goil dann müsst ich keine Frames verwenden.... aber naja ... ein einfaches Menü würd mich schon glücklich machen ;)
Thx a lot - Tex
Original geschrieben von Wotan
Das beste ist du machst das über Tabellen und einer .htaccess-Datei
Deine index.php sollte dann folgenden Aufbau haben:
<table>
<tr>
<td colspan="2">
<?
include_once("header.php");
?>
</td>
</tr>
<tr>
<td>
<?
inluce_once("$nav");
?>
</td>
<td>
<?
include_once("$body");
?>
</td>
</tr>
<tr>
<td colspan="2">
<?
include_once("footer.php");
?>
</td>
</tr>
</table>
Beachte dazu aber folgenden Thread:
http://www.php-resource.de/forum/showthread.php?s=&threadid=17825
Jetzt kannst du per
<a href="/video1/">Video 1</a>
und der .htaccess
RewriteEngine on
#video 1
RewriteRule ^video1/$ index.php?body=home.php&nav=nav.video1.php
Die unterschiedelichen Menus aufrufen.
Und somit auch die Verschiedenen Submenus machen.
Wenn du dazu Fragen hast stell sie doch einfach im PHP-Dev Forum.
Tjo... irgendwie is was mit meinem Post schiefgelaufen... also nochmal
e: argh .. warum sagt mir keiner dass der post verschobn wurde ^^
Meine Problematik habich oben aufgeführt und einen Lösungsvorschlag... da ich hierher verwiesen wurde habich hier mal dazugepostet
Bis jetzt bin ich immer von einer Lösugn in Frames ausgegangen ... wenns allerdings in Tabellen funktionieren würde, wär ich davon natürlich nicht abgeneigt .. nur das Menü sollte sich halt nicht dauernd mitaktualisieren...
Von Tabellen hab ich in dem Fall allerdings überhaupt keine Ahnung.. gibts dazu irgendwo ein Beispiel das man sich anschaun kann?
Ich sitz hier vor nem Haufen Codeschnippseln und etlichen Forumseinträgen und verlier langsam den Überblick
:dontknow:
Ich hoff ihr könnt mir n bisschen weiterhelfen..
many thx ... Tex
mrhappiness 08-05-2003, 14:45 wenn du ohne frames arbeitest, wird die seite neu geladen inklusive menü
das is aber nich weiter tragisch, da es ja bloß text is, evtl. anzuzeigende bilder holt der browser eh ausm cache
ich würd dir vorschlagen, deine seite so aufzubauen<html ...
der ganze header kram hier
</head>
<body>
<div id="header">Kopf der Seite</div>
<div id="nav">Navigation (als Liste mit <li> zum Beispiel</div>
<div id="content">der inhalt</div>
</body>
</html>das ding speicherst du als index.php und änderst "Kopf der Seite" ab in <?php include('header.php'); ?> in der header.php steht dann zum beispiel sowas:<h1>Überschrift 1</h1>
<p>
<a href="index.php?cat=video">Videos</a>
<a href="index.php?cat=data">Daten</a>
</p>die navigation hast du ebenfalls in ner externen datei, die du analog zum header einbindest, hier kannst du schauen, was in $_GET['cat'] steht und dein menü dementsprechend anzeigen
werd wohl nicht drumrumkommen Frames zu verwenden ...
wird aus design/verwaltungstechnischen gründen nicht gehn... hab das nochmal durchdacht
njo... *grübelgrübel* ..... *indenscriptswühl*
mrhappiness 08-05-2003, 15:16 und was is das killerargument für frames?
Aaaalso ... das ganze ist keine private HP sondern für eine Firma....
ich hab das jetzt noch mal genauer durchgesprochen wie und was sie haben wollen (ist grad erst am entwickeln) und es muss
1. deswegen mit Frames sein, weil Top/Leftframe sich nicht mitm Mainframe mitändern sollen.... d.h das Design soll getrennt sein
2. wird teilweise im Mainframe auf eine andere HP verlinkt was somit in der Tabelle auch nicht funktionieren würde...
bis jetzt wusste ich nur dass ich ein dynamisches menü mit db unterstützung brauche... und so wies jetzt aussieht muss das wohl in Frames gelöst werden....
:)
Greets - Tex
Original geschrieben von Tex Hex
1. deswegen mit Frames sein, weil Top/Leftframe sich nicht mitm Mainframe mitändern sollen.... d.h das Design soll getrennt sein
wenn du das prinzip von parameterübergaben und davon abhängiger includes verstanden hast, ist das auch ohne frames kein problem.
2. wird teilweise im Mainframe auf eine andere HP verlinkt was somit in der Tabelle auch nicht funktionieren würde...
die wirklich guten gründe, fremde seiten in frames darzustellen, sind ziemlich rar gesäht - aber mal angenommen, es würde hier wirklich einer von diesen vorliegen: dann gibt's zur not auch immer noch den iframe.
die wirklich guten gründe, fremde seiten in frames darzustellen, sind ziemlich rar gesäht - aber mal angenommen, es würde hier wirklich einer von diesen vorliegen: dann gibt's zur not auch immer noch den iframe. [/B]
so oft braucht man so etwas wirklich nicht.... hier ist es allerding sehr wichtig... ist für einen Internetauftritt einer größeren Firma die im Design/Layout/Video(-schnitt)/Animationsbereich arbeitet.... und verschiedene Projekte im Mainframe öffnen muss - zu Präsentationszwecken .. z.B verschiedene Streaming-Terminals einer Hotelkette...
Frames werde ich auf jedenfall brauchen... allerdings frage ich mich warum ich dafür iFrames nehmen sollte, wenn ich es mit normalen Frames auch machen kann... der Topframe z.B wird immer statisch d.h immer derselbe sein .... im Leftframe werden sich verschiedene Menüs abrufen lassen und im Mainframe der Rest....
ich habe iFrames eigentlich nur mal zum testen benutzt... sind so ganz witzig.. wüsste aber nicht was hier der Vorteil sein sollte? ...
Aufklärung wäre nett ;)
Thx a lot - Tex
Original geschrieben von Tex Hex
so oft braucht man so etwas wirklich nicht.... hier ist es allerding sehr wichtig... ist für einen Internetauftritt einer größeren Firma die im Design/Layout/Video(-schnitt)/Animationsbereich arbeitet.... und verschiedene Projekte im Mainframe öffnen muss - zu Präsentationszwecken .. z.B verschiedene Streaming-Terminals einer Hotelkette...
und waum nicht in einer neuen seite?
fremde seiten innerhalb des eigenen framesets zu öffnen gilt weithin als ziemlich unprfessionell.
mrhappiness 09-05-2003, 11:49 wenn du normale frames nimmst, statt die seite aus einem stück zu machen (inkl. iframe) dann musst du sobald man in einem frame nen link klickt evtl. diese und auch andere seiten aktualisieren.
außerdem: die firma will das als ne art sammlung von referenzen machen oder?
dann probier mal als interessierter kunde ne seite zu bookmarken, die dir hotel xyz anzeigt und das ganze menü aus den beiden anderen frames
In dem Fall wäre es eher unprofessionell wenn einem dauernd Popups entgegenspringen....
es ist nicht so das immer die komplette Seite gezeigt wird um z.B das Html-Layout zu präsentieren ... sondern wie auch schon erwähnt bestimmte Inhalte z.B 360Grad Panoramas / Videostreamingfenster ...
z.B man klickt auf Projekte-> Panoramas....
dann öffnet sich aus der Datenbank das Menü
->Hotelkette1
-----Aussenpanorama
-----Meerblick
-----Lounge
->BMW-Gelände
-----Fertigungshalle
-----Cad-Büro
-----etc....
klickt man auf -Meerblick- würde er sich den Link aus der Datenbank holen und den Frame der Hotelkette im Mainframe darstellen....
genauso wärs mit Videos oder Animationen....
mrhappiness 09-05-2003, 12:04 und angenommen mir gefällt das meerblick hotel so gut, dass ich mir die seite bookmarken will, oder sie all meinen freunden zeigen will?
was seh ich dann, wenn ich mir die seite aus den favoriten hole?
hotel meerblick oder die ganz normale startseite?
wohl eher letzteres
Das ist in dem Fall überhaupt nicht Relevant!
Wenn sich jemand für die Technick der Panoramas oder für live streaming interessiert dann möchte er das Produkt sehen ...
Für ganze Seiten/das Layout wir sicher noch eine eigene Rubrik (Menü) zur Verfügung stehen bei dem dann auch die Fremdseite nicht im Mainframe sondern in einem neuen Fenster aufgeht....
Für einzelne Produkte soll nur das entsprechende Frame im Mainframe präsentiert werden...
Hab die Rohstruktur wie sie in etwa aussehen könnte mal etwas aktualisiert......
http://www.s-o-s.info/Pix/Struktur1.gif
man könnte es natürlcih in normalen Frames sowie in iFrames lösen...
also so:
http://www.s-o-s.info/Pix/frames.gif
wobei das mit den iFrames natürlich ganz nett wäre.... ich hab nur keine Ahnung wie die Browserkompatibilität da im mom aussieht?...
Arbeitet irgendwer von euch öfter mit iFrames?
Thx 4 help
Tex Hex
mrhappiness 09-05-2003, 13:43 netscape 4: nein
andere: ja
dein linker iframe is übrigens nicht nötig, du kannst das menü doch direkt in back.html haben (wenn du's umbenennst in back.php *g*)
Wenn ich statt dem linken iFrame nur das Php-Script einbinde....
lädt er mir doch bei aktualisierung des Menüs die ganze Site wieder neu?! oder nicht?
mrhappiness 09-05-2003, 13:59 ja, aber wie gesagt: die paar bytes an traffic werden dich nicht arm machen, andererseits bietest du aber den usern, die mit iframes nix anfangen können wenigstens das menü und sie können sich die einzelnen sachen in nem neuen fenster anschauen
Naja ... allen recht machen kann mans auch nciht .. und solange nur Netscape 4.x davon betroffen ist ... ist das glaubich auch kein Problem
aber wenn ich mir vorstelle das bei jedem Menüaufruf sich die ganze Seite neu lädt (auch wenn vieles im Cache liegt) stelln sich mir schon eher die Haare auf
sieht doch besser aus wenn sich einfach nur das kleine Menü kurz neulädt und der Rest dabei schön ruhig bleibt...
Habe jetzt auch was dazu zusagen.
Frames sind für solche Sachen wie du es machen willst sehr ungeeigent.
Was spricht dagegen wenn du das ganze in einer Seite mit Tabellen macht, statt iFrame. Wenn die Referenz es erfordert öffnest du die Seite ienfach in einem neuen Fenster ohne die ganzen Symboleleisten oben. Sieht weitaus besser aus, als des mit Frames!
Hmmm wenn das alles so einfach wäre....
Also ... wenn ich z.B unter Referenzen ins Menü gehe und mir diverse Streamingprojekte ansehen möchte..... dann sollten die auf jedenfall auf der selben Seite geöffnet werden.
Etliche Popups sind einfach nicht zu verkraften... d.b müsste bei einer Tabellenlösung immer die ganze Seite neu aufgebaut werden was auch nicht gerade toll wäre
Das einzige was an Frames zu beanstanden ist, wäre dass diverse Browser evtl. schwierigkeiten haben könnten..... oder seht ihr da mehr Probleme?
Danke aber für eure rege Teilnahme ... hier wird einem wenigstens geholfen =) .... Kritik ist immer erwünscht
Bei einer >Frame Lösung lädst du immer gleich 3 Seiten neu!
Bei einer Tabellen Lösung nur eine!
warum sollte ich immer 3 laden müssn?!!
ich lad ja schliesslich immer nur den frame der gerade benötigt wird.....
z.B
Hotel
---Videos
-------Vid1
-------Vid2
-------Vid3
---Panoramas
-------Pano1
-------Pano2
etc....
wenn ich jetzt in diesem "Menüframe auf Videos gehe ... würde er den Menüframe neu laden müssen um die Subemues auf/zuzumachen...
in den anderen Frames würde sich ncihts verändern...
wenn ich jetzt im Submenü -> Videos wäre... und auf den diversen Vid1-VidXxxxxx herumklicke ... würde im entsprechenden "Mainframe" das entsprechende Video bzw.. die Html-Site die es enthält abgerufen werden.... während der rest sich aber nicht aktulisieren muss
Bei Frames werden automatisch immer alle Seiten neu geladen!
Du kannst nicht nur eine Seite im Frameset neuladen, das geht nicht!
??
Natürlich wird immer nur einer geladen... :D sonst wären Frames ja total unsinnig ;) ....
ich hoff wir reden jetzt nicht aneinander vorbei ... oder ich steh auf der Leitung....
Aber in nem "normalen" Frameset kann ich bestimmen welcher Frame sich jetzt aktualisiert bzw.. in welchem sich eine neue Seite lädt... die anderen Frames interessiert das überhaupt nicht...
Stop! Wir sprechen aneinander vorbei! Ich arbeite wenn ich mit Frames arbeite ja mit Javascript und dann werden mir ja gleich mehrere Seite ausgetauscht. Stimmt ja! Bei Frames lässt du ja nur einen Teil neuladen.
Dennoch habe Frame ein sehr schlechtes Ansehen. Und daher würde ich es auf jeden Fall mit einer Tabelle machen, es sein den es ist eine Intranet-Seite und keine öffentliche, aber auch das sieht gegenüber dem Neukunden nicht gerader Profimäßig aus.
Wie sowas geht kannst du dir ja hier auf der Startseite ansehen.
Klickst du in den Bereich Scriptarchiv wird dir eine Andere NavLeiste geladen als wenn du auf Kostenlose Domains gehst.
Dennoch bleibt das Layout inner das selbe.
Und die Tabelle hat genau immer 780er Breite.
Jop schon klar.... mach ja auch einiges mit Tabellen.....
aber so schlecht sollte der Ruf von Frames eigentlich auch nciht sein
Ich werde die Site aber definitiv mit Frames machen (müssen)!
Wär deshalb ganz nett wenn ihr mir bei dem Weg weiterhelfen könntet....
Thx - Tex
Mit Frames ist das ja recht einfach.
<a href="nav.php?nav=1" target="nav_unten">Menu 1</a>
<a href="nav.php?nav=2" target="nav_unten">Menu 2</a>
<a href="nav.php?nav=3" target="nav_unten">Menu 3</a>
<a href="nav.php?nav=4" target="nav_unten">Menu 4</a>
<a href="nav.php?nav=5" target="nav_unten">Menu 5</a>
<a href="nav.php?nav=6" target="nav_unten">Menu 6</a>
<a href="nav.php?nav=7" target="nav_unten">Menu 7</a>
Und in der Nav fragst du jetzt immer die VAR "$nav" ab und holst dir entsprechend die Ausgabe aus der DB!
Öhhhh ja... :D ... immer langsam mit den jungen Pferden...
wie gesagt hab ich vor einer Woche das erste mal n Php Buch in die Hand genommen.... ;)
Komm aus der C/C++ Ecke .... an PHP habich mich noch garnicht gewöhnt...
muss halt jez zwangsweise hier PHP lernen... naja halb so wild....
nur habich jetzt n Haufen Code von m Haufen Leuten und weiß ncoh überhaupt nicht wie ich das zu einem ganzen zusammenfügen soll :D
Wo hast du denn jetzt noch Probs?
Das Problem ist dass ich kein PHP kann.... deswegen wälz ich mich ja grad durch n dickes Buch.... ich hab jetzt n haufen Code , kann das aber nciht einfach mit copy&paste zusammenstelln und *boing* es läuft :D
für euch mag das ja recht einfach sein.... aber die ähnlichkeiten mit C sind nciht so groß dass ich jetzt sofort loscodn kann und das script ist fertig ;)
deswegen hab ich ja auch eigentlich ein kleines "fastfertiges"-Script gesucht das schon fast fertig ist.... na acker ich mich erstmal bisschen ins buch rein.... jez is eh Woe .. ich geh jez mal heim und mach da weiter :/ ...
Greets - Tex
http://www.ammd.de/testing/men1.gif
soooo ich bins mal wieder :D
soooo mal die Erklärung zum oberen Bild:
das linke Menü wird aufgerufen wenn man sich für eine "Unterkategorie" entscheidet.... -> web, panorama, film etc. und soll immer vollständig ausgeklappt sein
das rechte Menü soll alles darstellen und auf/zuklappbar sein, da sonst ja einfach vielzuviel aufgelistet wäre... wie sag ich das dem Menü?
was mir noch eingefallen ist... wie kann ich dem Menü sagen dass es sich aktualisieren soll?
wenn ich etwas auswähle, gebe ich ihm ja nur die Anweisung er soll im Mainframe etwas verändern.... wenn sich aber glecihzeitig im Menü auch etwas ändern muß??
thx - Tex
Das machst du dann mit JavaScript!
function wir(){
parent.navigation_links.location.href="nav_links.html";
parent.navigation_oben.location.href="nav_oben.html";
parent.textausgabe.location.href="textausgabe.html";
}
Aufruf:
<a href="JavaScript:wir()">Menu 1</a>
Leerzeichen darf natürlich nicht drin sein bei JavaScript wird von Forum gemacht!
Javascript is aber nicht ;) ....
das ganze muß auf reiner PHP Basis sein
In Frames kannst du aber pro Link nur eine Seite ändern!
nja ausser ich würde ihm bei mousedown/click 2 links rein... wär aber ziemlich doof
Original geschrieben von Tex Hex
nja ausser ich würde ihm bei mousedown/click 2 links rein... wär aber ziemlich doof
Ist mir aber nicht bekannt das das so geht.
Ausserdem ist das auch JavScript!
mrhappiness 12-05-2003, 21:01 du könntest evtl. probieren als target nich mainframe zu nehmen, sondern _parent und den link so aufbane<a target="_parent" href="index.php?cat=1&subcat=27&foobar=08154711">Referenzen</a>in der index.php wertest du die übergbenen parameter aus und hängst sie an die url, die im src attribut deiner einzelnen frames steht
Beispiel:echo '<frameset cols="150,*" rows="*">
<frame src="left.php?cat='.$_GET['cat'].'&subcat='.$_GET['subcat'].'" name="nav" frameborder="1" />
<frame src="main.php?cat='.$_GET['cat'].'&foobar='.$_GET['foobar'].'" name="mainframe" />
</frameset>';w+sste nicht, wie du anders mehr als einen frame aktualisieren kannst ohne javascript zu verwenden.
wenn du es allerdings so machst, wird wieder jede datei des framesets geladen; also 1 vorteil weniger *g*
Er wird nicht um hinkommen auf Frames zuverzichten und das ganze mit Tabellen machen müssen.
Ich sehe immer noch nicht wieso er Frames nutzen muss.
Die Restriktion auf JavaScript zu verzichen deutet doch schon auf Tabellen hin.
Also, benutze nun doch endlich mal Tabellen anstatt Frames.
Du wirst sehen, das das weitaus einfacher ist als du denkst, zumal du dann nicht mehr das Problem mit JavaScript hast.
Hmmm hab mich jetzt nochmal mit einem fertigen Menü versucht.... hat eigneltihc am Anfang überhaupt nicht gefunkt aber jetzt nach einiger quälerei hab ichs hinbekommen
hab noch einiges umfunktioniert - und ne Augenkrebs-Test-HP damit erstellt...
Testmenu (http://www.s-o-s.info/testing/frameset.html)
Soo die Menüs klappn prima ein/aus ... in der Tabelle befindet sich ein zusätzlicher Wert = FRAMES der auf das gewünschte Frame deutet... hier nur zum Beispiel Menü 1.1.1 auf Google etc....
bei ganzen HPs würde das dann auf _blank zeigen
Das einzige Prob das ich im mom habe ist, dass die Werte die aus der SQL Tabelle ausgelesen werden.... direkt numerisch untereinanderstehen müssen...
1 1
2 11
3 111
4 112
5 12
6 121
7 122
etc.... damit die Ausgabe als Menü richtig ist...
Ihc hab mal als Beispiel ein paar Felder in der Tabelle hinten angefügt... 2.1 und 2.2
da aber in der Tabelle 2.2 hinter 3 liegt ... ist es im Menü auch nicht richtig...
hmmm also stimmt hier die Abfrage nicht bzw da ist wohl nicht dran gedacht worden.... kann sich mal wer den Code anschaun ?? ich bin fleissig selber am durchackern... aber wenn man das Zeug nicht selber geschrieben hat, und auch selber nich grade gut PHP kann... is das schon n gutes Stück .... :confused:
hab hier noch die aktuelle Version des ganzen Scripthaufens->Menu (http://www.s-o-s.info/testing/DaMenu.ace)
ist vom Airmenu das man orichinal von www.spellweb.de glaubich runterladen kann....
Thx - Tex Hex
mutter ... ich bin blind :D
ohne mich näher mit dem scriptmonster befasst zu haben,
würde ich vorschlagen:
- erweitere die tabelle/n um ein feld "position"
- trage dort die gewünschte position für einen menupunkt ein
- such die abfrage/n
- finde die abfrage/n :D
- ergänze/ändere abfrage/n um "order by position ASC"
dann bist du frei, menupunkte über eine positionsvergabe zu verschieben.
:D .. ja ich weiss ... aber wenn der alltag so trierst ist muss man etwas farbe ins leben bringen ;)
hmm der Vorschlag ist gut...
jetzt müßt ich bloss noch wissen wo die Abfrage ist die er macht.. (so ca. habich da schon was ausgemacht... muss mir nur den Kopf zerbrechen was ich damit anfang - dazu is mein php können doch etwas klein)
k... wenn noch wer rat weiß ... immer her damit bzw. ob ihr das airmenu vom script her gut/schlecht findet würde mich auch interessieren
thx - tex hex
|