kostenloser Webspace werbefrei: lima-city


Navigation mit include

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fansite

    fansite hat kostenlosen Webspace.

    Also, ich möchte jetzt eine Website mit HTML erstellen und dazu habe ich verschiedene div-Elemente erstellt. Und jetzt möchte ich, dass ein angeklickter Link in der Navigation nicht die komplette Seite neu lädt. Da ich aber nicht mit Frames gearbeitet habe wollte ich in dem Inhalts div-Bereich die neue Datei mit include ( ) einbinden. Leider klappt das aber nicht so wie ich es mir vorstelle. Ich poste hier mal die beiden wichtigen Bereiche:
    Die Navigation:

    <div id="fixiert">  
      <ul id="Navigation">      
        <li><a href="index.php?goto?home">Home</a></li>
        <li><a href="index.php?goto?uns">&Uuml;ber uns</a></li>
        <li><a href="index.php?goto?kontakt">Kontakt</a></li>
        <li><a href="index.php?goto?impressum">Impressum</a></li>
      </ul>
       
    </div>


    Und der Inhalt:

    <div id="Scrollbereich">
      <h1>Überschrift</h1>
    
    <div id="Inhalt">
       <?php
    
            if($goto == "")
           {
           include("start.html");
           }
    
           if($goto == "uns")
           {
           include("uns.html");
           }
    
           if($goto == "kontakt")
           {
           include("kontakt.html");
           }
    
           if($goto == "impressum")
           {
           include("imb.html");
           }
    
    ?>
    
        <p id="Fusszeile">© by Solution Productions</p>
    </div>

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 1. Falscher Query String: Man baut ihn auf nach dem Prinzip ?goto=home
    2. Ich weiß nicht ob auf Lima register_globals aktiv ist. Daher solltest du dich nciht auf die Existenz von $goto verlassen (zudem ists scheiß unsicher und auch noch unschön). Nutze statt dessen $_GET['goto']

    Daraus folgt:
    <?php
    if(isset($_GET["goto"])) {
    $goto = $_GET['goto'];
            if($goto == "")
           {
           include("start.html");
           }
    
           if($goto == "uns")
           {
           include("uns.html");
           }
    
           if($goto == "kontakt")
           {
           include("kontakt.html");
           }
    
           if($goto == "impressum")
           {
           include("imb.html");
           }
    }
    else {
           include "start.html";
    }
    ?>


    Es gibt noch alternative Möglichkeiten via switch-case und Array. Blätter mal hier auf Seite 3 oder so, da werden verschiedene Möglichkeiten gezeigt und warum man sie nehmen sollte.

    Beitrag zuletzt geändert: 15.7.2009 14:16:52 von nikic
  4. t*****b

    Statt index.php?goto?home das: index.php?goto=home.
  5. nikic schrieb:
    Nutze statt dessen $_POST['goto']


    Du meinst wohl eher $_GET['goto']!
  6. cookies schrieb:
    nikic schrieb:
    Nutze statt dessen $_POST['goto']

    Du meinst wohl eher $_GET['goto']!

    Korrekt! War ein kleiner Denkfehler... :D
  7. fansite schrieb:
    ... Und jetzt möchte ich, dass ein angeklickter Link in der Navigation nicht die komplette Seite neu lädt.
    Dann solltest dir Ajax schmackhaft machen. Meines Wissens nach die einzige Möglichkeit mit PHP+JavaScript genau das zu tun.
    Da ich aber nicht mit Frames gearbeitet habe ...
    löbliche Tendenz :o) Uralttechnologie! Solltest dabei belassen!

    lg
    joseph
  8. @bere: Äh... Villeicht solltest du dir ansehen, was in diesem Thread steht (bitte nicht nur den ersten Satz). Dann wüsstest du, dass es deutlich elegantere Varianten gibt, dies zu realisieren. Nichts gegen Ajax, aber wenn du es nutzt, ohne die klassische variante zu kennen, dann solltest du mal dringend NoScript instaliieren und auf deine Seite gehen...
  9. @nikic: Deine Variante ist sehr umständlich und hat keinen wirklichen Default-Wert... aber diese Diskusion hatten wir schon mal ;)

    Leider bin ich auch grad zu müde um meine Variante ma niederzu schreiben, werd ich auf Morgen verschieben, sofern ich dran denke :P

    Beitrag zuletzt geändert: 15.7.2009 21:07:10 von strange
  10. @strange: Ich bitte dich erneut zu verstehen. Ich habe explizit auf die beiden alternativen Varianten verwiesen. Ich glaube es hilft dem Fragesteller mehr, wenn ich seinen Code bei behalte und nur die Fehler korrigiere, als ihm einen gänzlich neuen Code zu geben. Und wie gesagt, der Verweis zu Alternativen besteht.
  11. Ja dennoch fehlt was! Was pasisert wenn goto, nen falschen wert hat? Bzw. einen Wert der in dem If/Else Gewusel nicht abgedeckt ist? Genau das war auch der Grund warum ich Deinen SwitchCase bei LimaBone angekreidet habe. Und was bringt es dem Fragesteller wenn Du ihm auch noch seine (nicht korrekte) Variante zurecht biegst, anstatt Ihm den richtigen Weg zu zeigen? Nichts, weil er es dann immernoch falsch machen wird.
  12. Nun, ich sehe schon, dass du deine PHP Kentnisse wieder auffrischen solltest. Du hast noch nie etwas von "default" gehört, oder? Damit du nicht ins Manual sehen musst: Das default im switch-case entspricht dem else bei einer if-Anweisung. Wenn ich das in besagtem Thread kein einziges Mal erwähnt habe (man achte immer zu auf Kleinigkeiten), dann ist es natürlich mein Fehler. Wenn mich das Gefühlt nicht trügt, sagte ich das aber.

    @fansite: Damit strange nichts mehr zu meckern hat:
    <?php
    if(isset($_GET["goto"])) {
            $goto = $_GET['goto'];
            if($goto == "")
           {
           include("start.html");
           }
    
           else if($goto == "uns")
           {
           include("uns.html");
           }
    
           else if($goto == "kontakt")
           {
           include("kontakt.html");
           }
    
           else if($goto == "impressum")
           {
           include("imb.html");
           }
           
           else
           {
           include("error.html");
           }
    }
    else {
           include "start.html";
    }
    ?>


    Für solche Fälle gibts aber switch-case, damit gehts schöner:
    <?php
    if(isset($_GET["goto"])) {
           switch($_GET['goto']) {
           case "":
                include("start.html");
                break;
           case "uns":
                include("uns.html");
                break;
           case "kontakt":
                include("kontakt.html");
                break;
           case "impressum":
                include("imb.html");
                break;
           default:
                include("error.html");
           }
    }
    else {
           include "start.html";
    }
    ?>


    Beitrag zuletzt geändert: 16.7.2009 0:35:05 von nikic
  13. Autor dieses Themas

    fansite

    fansite hat kostenlosen Webspace.

    Danke für die Hilfe, Funktioniert jetzt alles und bevor das ganze hier in ausschweifenden Diskussionen endet, kann man den Thread sicherlich schließen :biggrin:.
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!