[Webdesign] wenn, dann

S

sam_semillia

Forum Freak
hey leute.

hab ein problem. ich bastel grad an ner hp und würd gern ne "wenn dann" funktion eibauen (gibsts sowas überhaupt? lol)

also, das wenn bezieht sich auf den datei namen, das dann soll als text dargestellt werden.

zB. wenn die datei "index.html" heist, dann soll "home" dastehen.
wenn die datei "sitemap.html" aufgerufen wird, dass soll "Home / Sitemap" dastehen.

also ned ordnerstruktur mehr oder weniger. aber ich will angeben können was dastehen soll, weil die navi von ner externen ja datei kommt. es soll nur formatted text dastehen.

kann da wer helfen?

thx

mfg sam
 
HTML sieht per se keine Dynamik vor.

Du könntest das zwar über Umwege machen, z.B. mit JavaScript, aber das Problem allerdings versteh ich nicht:

Du hast zwei html-Seiten (meinst Du das mit "Dateien" ?) und willst, dass beide sich in gewissen Punkten unterscheiden ? Wo ist da das Problem ? Mach die eine halt so und die andere so, Du kannst die doch jeweils gestalten, wie es erforderlich ist... :confused:
 
Zuletzt bearbeitet:
@dooyou: lol

@brunolp: naja ich will ne art qicknavi/pathlink machen, oder ne schnelle übersicht wo man grad ist. deswegen würd ich gern im header die "wenn, dann" function einbauen... deswegen, wenn sitemap.php in de adressleite aufgrufen woird, dann soll eben home / sitemap im header stehen und bei ner andren site eben was andres. aber ich will selber angeben was bei welcher seite dastehen soll.

mfg samse
 
Na wenn du anscheinend sowiso PHP zur Verfügung hast dann schreib doch ein kleines Skript:
PHP:
<?
if(basename($_SERVER['SCRIPT_FILENAME'],".php") == "bla1") echo "blub1";
elseif((basename($_SERVER['SCRIPT_FILENAME'],".php") == "bla2") echo "blub2";
elseif((basename($_SERVER['SCRIPT_FILENAME'],".php") == "bla3") echo "blub3";
...
?>
 
sam_semillia schrieb:
naja ich will ne art qicknavi/pathlink machen, oder ne schnelle übersicht wo man grad ist.

schon klar, aber rein theoretisch geht das so, wie ich es beschrieben habe (auf Seite 1 steht oben "Seite 1" und auf Seite 2 sieht man oben den Text "Seite 2"). Die Navigation verlinkt jeweils auf die entsprechenden Dateinamen, die dann bei Klick zur Anzeige gebracht werden.

Andererseits scheinst Du ja doch php zur Verfügung zu haben (anders als Dein Ausgangsbeitrag aussagte), also eine Sprache, die Server-seitig ausgeführt wird und ein dynamisches Verhalten der Seiten ermöglicht.
Damit sind die Möglichkeiten ganz andere (und MagixD hat ja schon ein Beispiel geliefert).
 
Das Skript von MagixD lässt sich schon mal optimieren, in dem man Switch-Case nimmt... PHP ist nicht wie C, da kann auch ein String als Case-Bedingung genommen werden...

Eine andere, ggf. einfacherere Lösung wäre, die Navigation auch aufs Dateisystem abzubilden. Das meine ich so: Du hast einen root-Ordner und deine ganzen Navi-Punkte sind dann Unterordner. Da gibt es dann einen für Sitemap, um bei deinem Beispiel zu bleiben. Dort drin liegt eine index.htm oder index.php. Wenn man den Webserver 'richtig' konfiguriert, dann kann man einstellen, dass, wenn jemand nur den Verzeichnisnamen als URL eingibt, z.B. standardmäßig eine index.php gesucht wird und wenn diese vorhanden ist, dann wird die geöffnet. Deine Navi gestaltet sich dann so, dass du nur das aktuelle Verzeichnis (entweder aus der URL oder vom Server direkt) auslesen musst, und alles, was nicht angezeigt werden soll, wird einfach abgeschnitten. Der letzte Schritt besteht dann darin, dass du einfach deinen String an den Trennzeichen (/) trennst und die einzelnen Verzeichnisse als Links an den Browser weiter gibst. Home kannst du dann manuell immer auf dein root-Verzeichnis verlinken.

Das ganze lässt sich auch mit einer Datenbank umsetzen, da könntest du auch eine Art Verzeichnisstruktur abbilden. Ist aber etwas aufwändiger, da eben ein DBS benötigt wird...
 
naja, es führen immer viele Wege nach Rom... (mir scheint jedoch, dass hier zunächst mal die einfachen gefordert sind)
 
erstmal danke für die vielen antworten und helfsvorschläge.

um zum problem zurückzukehren, ich möchts wie folgt machen:

also ich hab ne header.php, footer php und index.pho. in der index.php werden header und footer mit include angehängt. im header soll dann eben zu sehen sein was ich definiert habe. (also "dynamisch"?)
Code:
<?
if(basename($_SERVER['SCRIPT_FILENAME'],"index.php") == "bla1") echo "Home";
elseif((basename($_SERVER['SCRIPT_FILENAME'],"sitemap.php") == "bla2") echo "Home / Sitemap";
elseif((basename($_SERVER['SCRIPT_FILENAME'],"test.php") == "bla3") echo "Home / Test";
?>


würd das so stimmen?? sry aber bin kein profi ;)

thx

mfg samse
 
müsst so gehen ja. Wenn du das dann noch in den Title Tag schreibst hast es in der Titelzeile stehen, was ich mal annehme dass das das ist was du willst.
 
nicht ganz
PHP:
<?
if(basename($_SERVER['SCRIPT_FILENAME']) == "index.php") echo "Home";
elseif((basename($_SERVER['SCRIPT_FILENAME']) == "sitemap.php") echo "Home / Sitemap";
elseif((basename($_SERVER['SCRIPT_FILENAME']) == "test.php") echo "Home / Test";
?>
oder wie MrGroover vorgeschlagen hat mit Switch-Case-Anweisung:
PHP:
<?
switch(basename($_SERVER['SCRIPT_FILENAME']))
 {
  case "index.php":
   echo "Home";
   break;
  case "sitemap.php":
   echo "Home / Sitemap";
   break;
  case "test.php":
   echo "Home / Test";
   break;
 }
?>

@MrGroover:
Wieso lässt sich der Code mit Switch-Case "optimieren"? Bringt es Geschwindigkeits-Gewinn beim parsen? Ich bin mit PHP nur oberflächlich vertraut und hab mir eigentlich über PHP-Code-Optimierung noch nie Gedanken gemacht.

MagixD
 
Switch-Case sollte schneller sein als eine If-Elseif-Else-Verzweigung. Bei Switch-Case muss der zu vergleichende Ausdruck nur einmal ausgewertet werden und dann an die entsprechende Stelle verzweigt werden. Bei If wird jede If-Anweisung getrennt ausgewertet.
Aber mE ist es auch eine Optimierung beim Lesen... Aber das ist Geschmackssache...
 
Achja, das Skript wird ja Zeile für Zeile interpretiert - dann ist es verständlich das Case schneller ist. Danke für die Erklärung.

Übersichtlicher ist es wahrscheinlich auch, aber Hardcore-Programmierer schreiben ja möglichst kurzen und unverständlichen Code :D ;)
 
MagixD schrieb:
Wieso lässt sich der Code mit Switch-Case "optimieren"? Bringt es Geschwindigkeits-Gewinn beim parsen?

und ich seh immer noch nicht, wozu man dabei php überhaupt braucht :confused: :rolleyes:
 
"Brauchen" tut man es nicht, aber wenn er diese "Navigations-Pfade" dynamisch erzeugen möchte dann braucht er irgend eine Skript-Sprache wie (von dir vorgeschlagen) JavaScript, PHP oder sonst etwas. Da er aber schenibar sowiso PHP-Seiten hat wird es wahrscheinlich mit PHP für ihm am besten funktionieren.

Ganz im allgemeinen macht natürlich das dynamische Erzeugen von sollchen Sachen durchaus Sinn. Sollte er einmal der Meinung sein das er eine ganze Rubrik seiner Website in eine andere Kategorie verschieben möchte, müsst er auf allen Seiten den Navigations-Pfad ändern. Wenn er ein PHP-Skript schlau über ein include-Statement einbindet braucht er nur ein paar Zeilen in diesem Skript ändern.

MagixD
 
braucht er nur ein paar Zeilen in diesem Skript ändern.
Oder auch gar nix, siehe meine Vorschlag weiter oben... Zu dem wurde ja keine Aussage darüber getroffen, wie die angezeigten Daten zu stande kommen, also ob es irgendwelche statischen HTML-Seiten sind und immer sein werden, oder z.B. aus einer DB gelesen werden. Aber im Grunde hat Brunolp12 recht, brauchen tut man PHP keineswegs dafür.

Aber nochmal zu Switch-Case und If im Vergleich. Mit Zeile für Zeile hat das weniger zu tun. Wenn man im Inet sucht, dann findet man 'Performance-Messungen' und die bescheinigen Switch-Case keineswegs eine 1/n (n = Anzahl Möglichkeiten) Rechenzeit gegenüber If-Elseif. (1/n Rechenzeit ist so gemeint, dass Switch immer konstant braucht, If aber mit jeder erneuten Abfrage um eine Zeiteinheit länger braucht.)
 
MagixD schrieb:
"Brauchen" tut man es nicht, aber wenn er diese "Navigations-Pfade" dynamisch erzeugen möchte dann braucht er irgend eine Skript-Sprache wie (von dir vorgeschlagen) JavaScript, PHP oder sonst etwas.

naja, ein bisschen mit dem Thema rumspielen ist immer erlaubt.... aber bevor man an solchen Kleinigkeiten scheitert, sollte man halt auch immer das Ziel/Erfordernisse, Technologie und Möglichkeiten im Blick haben:
X Seiten mit jeweils einer eigenen Überschrift (nix anderes sind diese "Navigationspfade") kriegt man jedenfalls auch hin, ohne Code auszuführen (und man kann sich ja auch garnicht immer drauf verlassen, dass der Server PHP- oder alle Clients JavaScript erlauben...).

Dieses fest codierte "mapping" ("wenn Seite heisst xy, dann zeige Namen blabla") ist jedenfalls -genau genommen- rein programmier-technisch auch nicht so prall (deshalb der Tip von MrGroover). Was gewinnt man denn ? Weniger Arbeit, wenn sich ein Name ändert jedenfalls nicht. Ob man es einmal im includeten Code oder einmal auf der betreffenden Seite ändert, das ist kein grosser Unterschied. Eventuell hat man weniger zu tun, wenn sich ganze Ordner (Teile des Navigationsbaumes) ändern (suchen... ersetzen per Entwicklungsumgebung mal aussen vor gelassen)... ist halt die Frage, wie oft man das zu erwarten hat.
 
Zuletzt bearbeitet:
sodale leute, vielen dank für eure hilfe ;)

habs mit der switch abfrage gemacht, funzt prima^^

Code:
<?
switch(basename($_SERVER['SCRIPT_FILENAME']))
 {
  case "index.php":
   echo "Home";
   break;
  case "sitemap.php":
   echo "Home / Sitemap";
   break;
  case "test.php":
   echo "Home / Test";
   break;
 }
?>

aber eine frage hätt ich noch: kann ich diesen text nun auch ne andre farbe geben???

thf und mfg samse
 
sam_semillia schrieb:
habs mit der switch abfrage gemacht, funzt prima^^
aber eine frage hätt ich noch: kann ich diesen text nun auch ne andre farbe geben???

Dir stehen alle HTML-Möglichkeiten zur Verfügung. Dazu findest Du hier ne Übersicht: *klick*

Das selfhtml ist ohnehin sehr empfehlenswert, wenn man mit HTML rumspielt !

Du kannst den Tag zum Einfärben (z.B. mit <font color="#XXXXXX">DeinText</font> - #XXXXXX ist eine hex-Farbe, kannst auch Namen benutzen) entweder vor Deinem Codefragment auf- und danach zu machen (dann haben alle cases dieselbe Farbe).

Oder Du baust in den einzelnen Fällen noch jeweils einen einfärb-Tag drumrum, das könnte man dann eleganter machen, indem Du eine Hilfsvariable einsetzt, diese im switch zuweist und die Ausgabe einmal am Schluss nach dem Switch zusammensetzt & plazierst.

Edit - ich flicke hier mal noch ein Beispiel für den ersten Fall ein:


Code:
<font color="#XXXXXX">
<?
switch(basename($_SERVER['SCRIPT_FILENAME']))
 {
  case "index.php":
   echo "Home";
   break;
  case "sitemap.php":
   echo "Home / Sitemap";
   break;
  case "test.php":
   echo "Home / Test";
   break;
 }
?> 
</font>

statt xxxxxx musst Du für die Farbe natürlich einen Wert einsetzen, dazu gibts z.B. hier ne Übersicht *klick*
 
Zuletzt bearbeitet:
danke für alles leute, funzt prima ;) werd es aber vllt mit css definieren.

THX

mfg samse
 
Zurück
Oben