Antworten auf deine Fragen:
Neues Thema erstellen

php Navigation

R

realKID

Guest

Hey leute,
ich hab da ein problem. :(

Ich bin gerade am programmieren meiner Website und bis jetzt lief alles klasse, da ich html und css kentnisse habe.
Doch jetzt wollte ich die Seite dynamisch gestalten und habe mich entschieden ein wenig php anzuwenden. Mein Problem: Ich stehe mit dem Programmieren auf Kriegsfuß (bin Grafiker).
Musste schon in der Schule (ITG) C++ programmieren und schon damals fand ichs doof :D Naja was solls!

also ich habe jetzt eine index.php, head.php
Der Mittelteil soll eben dynamisch sein, dazu gehört eine Navigationsleiste und der Content. Ich möchte jetzt erreichen, dass wenn man auf einen hyperlink von der Navi klickt der gewünschte content rauskommt, aber ich komm alleine nicht mehr weiter.

Ich schick euch auch mal ein bild der website, damit ihr euch mal vorstellen könnt was ich meine.

Ich flehe euch an.. helft mir bitte :(
 

MyBad

localhorst

AW: php Navigation

Hi!

Du musst den Links Variabeln mit übergeben. Zum Beispiel so:

Code:
<a href="index.php?content=about">Über mich</a>
<a href="index.php?content=impressum">Impressum</a>

Anschließend musst du die Variabeln aus der URL wieder abfragen und ensprechenden Inhalt darstellen:

PHP:
if($_GET['content'] == 'about'){
  echo "Über mich";
}
elseif($_GET['content'] == 'impressum'){
 echo "Impressum";
}
else{ echo "Startseite"; }

Das nur als kleines Beispiel! Hoffe es hilft dir weiter.
 

ferni

Noch nicht viel geschrieben

AW: php Navigation

mein tipp für anfänger:

komplettes design in (x)hmtl & css umsetzten

dort wo der inhalt hinkommt per switch($_GET['site']) eine bestimmte unterseite (diese kann unter umständen auch statisch sein) mittels include einbinden - ebenso die navigation, indem du je nach übergebener variable ein mehrdimensionales array, in welchem deine menüeinträge und jeweils der status stehen, auf einen bestimmten "active"-Wert setzt und diese dann durch eine schleife laufen lässt in welcher du die einträge abarbeitest und dem entsprechendem eintrag die klasse deiner Wahl zuteilst.

lg. jo
 

FredFuchs94

Allrounder...

AW: php Navigation

Ich habe das zu Anfang immer so gemacht, das ich eben auch die angeforderte Seite per index.php?page=impress verlinkt habe und dann halt mit if-Abfragen den passenden Content ausgegeben habe.

Wenn du das ganze aber noch ein wenig abrunden willst und nicht immer den meiner Meinung nach recht hässlichen GET-Content im Link stehen zu haben, dann kannst du dir vielleicht noch überlegen mod_rewrite einzubinden.

Dort kannst du dann Link verwenden wie z.B. impress.html und die leitet das Apache Modul mod_rewrite dann automatisch auf index.php?page=impress um. Das würde das ganze noch ein wenig abrunden.
 

ferni

Noch nicht viel geschrieben

AW: php Navigation

Ich habe das zu Anfang immer so gemacht, das ich eben auch die angeforderte Seite per index.php?page=impress verlinkt habe und dann halt mit if-Abfragen den passenden Content ausgegeben habe.

Wenn du das ganze aber noch ein wenig abrunden willst und nicht immer den meiner Meinung nach recht hässlichen GET-Content im Link stehen zu haben, dann kannst du dir vielleicht noch überlegen mod_rewrite einzubinden.

Dort kannst du dann Link verwenden wie z.B. impress.html und die leitet das Apache Modul mod_rewrite dann automatisch auf index.php?page=impress um. Das würde das ganze noch ein wenig abrunden.

wobei switch hier praktischer ist, da es nicht mehr als ein schnellschreibweise der if-abfrage ist - mit dem großen vorteil das man einen default wert angeben kann.

zu mod-rewrite: hier musst du aber erst prüfen ob es auf deinem server verfügbar ist. (mitteweile bei den meisten)
 

saila

Moderatorle

AW: php Navigation

Hi!

Du musst den Links Variabeln mit übergeben. Zum Beispiel so:

Code:
<a href="index.php?content=about">Über mich</a>
<a href="index.php?content=impressum">Impressum</a>
Anschließend musst du die Variabeln aus der URL wieder abfragen und ensprechenden Inhalt darstellen:

PHP:
if($_GET['content'] == 'about'){
  echo "Über mich";
}
elseif($_GET['content'] == 'impressum'){
 echo "Impressum";
}
else{ echo "Startseite"; }
Das nur als kleines Beispiel! Hoffe es hilft dir weiter.

Dir ist schon klar, dass dieser Vorschlag zu einem error führt?!
Und wie schon genannt ist switch insofern besser, das der default eine Seite mit dem Hinweis (z.B.: Diese Seite gibt es nicht) enthält. Dann musst du schon gar nicht mir modrewrite arbeiten - bis auf die üblichen Error-Seiten :)
 

FredFuchs94

Allrounder...

AW: php Navigation

Mod_rewrite war ja auch nur als kleine Verfeinerung gedacht.

Und man kann die Default-Seite auch einfach so festlegen, das man die IF Abfragen mit Elseif Konstrukten aufbaut und dann als letzte else Anweisung einfach die Default-Seite setzt.
Natürlich kann man das auch so machen, das die Seite $_GET['content'].".php" included wird. Vorher müsste man dann per file_exists prüfen ob es die File gibt wenn nicht, dann gehts ab zur Defaultseite.

Es gibt hier sicherlich zig Möglichkeiten, die alle auf ihre Weise gut sind.
Ich bevorzuge halt die die ich nannte.
 

ferni

Noch nicht viel geschrieben

AW: php Navigation

Dir ist schon klar, dass dieser Vorschlag zu einem error führt?!
Und wie schon genannt ist switch insofern besser, das der default eine Seite mit dem Hinweis (z.B.: Diese Seite gibt es nicht) enthält. Dann musst du schon gar nicht mir modrewrite arbeiten - bis auf die üblichen Error-Seiten :)

modrewrite würde ich trotzdem nicht weglassen, da du deine urls damit suchmaschinenfreundlicher machst.

zB: "index.php?site=impressum" wird zu "impressum.html"
 

saila

Moderatorle

AW: php Navigation

Nein - kann man echt! Na klar kann man. Doch das war ja nicht die Fragestellung und zudem sollte man einem fragenden zum Thema php nicht mit rewrite kommen. Zumal das 1. Beispiel schon nicht korrekt kommuniziert wurde. Direkt fehler vermitteln - super. Und dazu mit Themen kommen, die mit der Fragestellung rein gar nichts zu tun haben.
 

MyBad

localhorst

AW: php Navigation

Dir ist schon klar, dass dieser Vorschlag zu einem error führt?!
Und wie schon genannt ist switch insofern besser, das der default eine Seite mit dem Hinweis (z.B.: Diese Seite gibt es nicht) enthält. Dann musst du schon gar nicht mir modrewrite arbeiten - bis auf die üblichen Error-Seiten :)

Nein, kläre mich bitte auf?

Mein Vorschlag ist eine funktionierende Möglichkeit genau so wäre es auch mit eine Switch-Anweisung möglich, was sicherlich die schickere Lösung ist. Dennoch ist mir nicht klar, zu welchem Error meine Methode führen soll.
 
R

realKID

Guest

AW: php Navigation

Oh man leute ich bin jetzt total verwirrt.
Erstmal Danke für die vielen interessanten Antworten :)

aber ich weis einfach nicht mehr wie ich das ganze genau schreiben soll.:(

Meine Index.php
PHP:
<?php 
    if($_GET['content'] == 'about'){
      echo "page/about.php";
}
?>

<body>   
<table id="container" width="900px" height="1024px" border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
            <?php
                $titel="Dimitri Hoffmann";
                $menu="home";
                require("head.php");
                require("page/home.php");
                require("foot.php");
            ?>
</tr>
</table>
</body>
Meine home.php (Navi+Content):
PHP:
<body>
    
    <div class="design" id="navi">
        <ul>
             <li><a href="#">home</a></li>
               <li><a href="#">news</a></li>
              <li><a href="#">showroom</a></li>
              <li><a href="index.php?content=about">about me</a></li>
             <li><a href="#">contact</a></li>
              <li><a href="#">impress</a></li>
         </ul>
       </div>
    
   
    <div class="design" id="main">
                <div class="text" id="maintext">
                    <p><b><font size="+1">Herzlich Willkommen!</font></b>
                    <br />Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et.
                       </p>
                   </div>
    </div>
    
</body>
Das mit der Verlinkung verstehe ich, aber wo und wie lese ich sie jetzt genau aus?

Sorry wenn ich so doof bin :(
 

saila

Moderatorle

AW: php Navigation

Nein, kläre mich bitte auf?

Mein Vorschlag ist eine funktionierende Möglichkeit genau so wäre es auch mit eine Switch-Anweisung möglich, was sicherlich die schickere Lösung ist. Dennoch ist mir nicht klar, zu welchem Error meine Methode führen soll.
Dann leg mal error_reporting(E_ALL); in deine Datei, dann weist du was ich meine.


@realKID

wie folgt würde ich es dir vorerst vorschlagen, solange du keine Datenbank für die Navigation verwendest:
PHP:
<?php
/**
* Zu Beginn starten wir das error-reporting, damit du auch Fehler sehen kannst, welche dir unterlaufen können.
*/ 
error_reporting(E_ALL);

/**
* Wir legen eine Konstante an, in welcher der root-path zum Verzeichnis enthalten ist, in welchem die Menüdateien liegen
*/
define('ROOT_MENU_FILES',$_SERVER['DOCUMENT_ROOT'] .'/verzeichnis/page/');

/*
* Prüfen ob eine GET-Wert vorhanden ist. Hierfür legen wir eine Funktion an, welche die ganze von if/elseif/else oder switch/case/default Arbeit abnimmt:
*/
function _getParam($var) {
 return $get = isset($_GET[$var]) ? $_GET[$var] : '';
}

/*
* Funktion einsetzen und prüfen ob ein GET-Parameter mit Content übergeben wird.
*/
$navPhpFile = _getParam('content');

/**
* würde man nun als Parameter einen integer erwarten, bräuchte man nur noch folgendes tun:
*/
#$navPhpFile = intval(_getParam('content'));
/*
* würde somit nun $navPhpFile kein integer sein (bei einer nachfolgenden Prüfung, kann man somit entsprechende 
* Vorkehrung treffen. Die Raute davon würde dann entfallen. Diese ist lediglich um die Zeile auszukommentieren.
*/

/*
* Filename und das entsprechende Verzeichnis einer Variablen zuweisen
*/
$filename = ROOT_MENU_FILES . $navPhpFile .'.php';

/*
* prüfen, ob es eine entsprechende Datei gibt - wenn ja bereitstellen, wenn nein default-page laden.
*/
if(file_exists($filename)) {
 require_once($filename);
} else {
 /* 
 * hier kannst du nun den Verweis auf eine Datei legen, welche eine Default-Seite beinhaltet. 
 */
 require_once(ROOT_MENU_FILES .'default.php');
}
?>
Das wars eigentl. schon.
 
Zuletzt bearbeitet:

MyBad

localhorst

AW: php Navigation

Dann leg mal error_reporting(E_ALL); in deine Datei, dann weist du was ich meine.

Ach verdammt.... hast ja recht. Funktionieren tut es dennoch. Damit nun dieser Error nicht mehr ensteht habe ich mein Skript etwas abgewandelt. So funktioniert es dann auch ohne Error:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php error_reporting(E_ALL); ?>
<div id="navigation">
<a href="navi.php?content=about">Über mich</a>
<a href="navi.php?content=impressum">Impressum</a>
</div>

<div id="content">
<?php
$seite = isset($_GET['content']) ? $_GET['content'] : ''; // Prüfen, ob die Variable Content gesetzt ist und Variable $start initialisieren

if($seite == 'about'){
  include("seiten/about.php"); // Inkludieren der about.php
}
elseif($seite == 'impressum'){
 include("seiten/imprint.php"); // Inkludieren der imprint.php
}
else{ include("seiten/start.php"); }  Inkludieren der Startseite, wenn nichts ausgewählt wurde
?>
</div>

</body>
</html>

Gibt es da irgendwelche Einwände? Sicher ist es mit einer Switch-Anweisung schicker, funktioniert aber auch so!
 
Zuletzt bearbeitet:
R

realKID

Guest

AW: php Navigation

@Saila vielen vielen vielen vielen dank :)
endlich funktioniert das ganze :) zumindestens wie es scheint.. ich habe auch so gut wie alles verstanden...

ach leute ich danke euch allen :lol:

btw. werde mir jetzt wohl doch php ein wenig anschauen müssen, damit ich euch nicht mehr nerven muss :p

mfg
ich
 

JPS

Nicht mehr ganz neu hier

AW: php Navigation

Vielleicht ne einfachere Lösung ohne viel Abfragerei....

PHP:
//--------------------Inhalt festlegen---------------
$action=$_GET['action'];
$link=$action.".php";
//--------------------Content festlegen---------------
if (file_exists($link))
{$content=$link;}
else {$content="start.php";}
$inhalt="".$content;

Dann sieht dein nächster Teil in der Index.php vielleicht so aus.
HTML:
<table width="960" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td>{HEADERBILD}</td>
  </tr>
  <tr>
    <td>{NAVIGATION}</td>
</tr>
  <tr>
    <td valign="top"><?php include($inhalt); ?></td>
  </tr>
</table>

Die Links in der Navi könnten dann so aussehen:

HTML:
<a href="index.php?action=gallery">Gallery</a>

Vorteil bei der Sache: Solange es in diesem Fall eine datei gallery.php gibt, wird sie auch in deinem Content-Bereich geladen, ansonsten die Standart-Datei start.php.

Wichtig wäre noch zu erwähnen, dass man hier und da noch ein paar Sicherheiten einbauen sollte, dass keine Fremdskripte geladen werden können.
 

saila

Moderatorle

AW: php Navigation

Wer nach derLösung immer noch auf switch möchte, hat nichts verstanden :)

Bitte - gerne geschehen.
 

webarchitekt

Noch nicht viel geschrieben

AW: php Navigation

Ich habe das Thema verfolgt und möchte gerne meinen Vorschlag vorstellen:

Der Ansatz, einem Link Parameter mitzugeben ist schon richtig.
Mann kann sich aber den switch sparen !

Ich gehe meist fogendermaßen vor:
Ich erstelle mir ein Template, in das ich wechselde Inhalte einbinde und nenne das dann index.php.

Diese Inhalte binde ich dann in die verschiedenen Container(HTML, mit CSS positioniert) mit dem include-Befehl ein, so kann ich auch gleichzeitig
mehrere Imhalte wechseln lassen.

Beispiel für den Link:
PHP:
<a href="index.php?inhalt=news.php&header_bild=winter.jpg">News</a>
<a href="index.php?inhalt=kontakt.php&header_bild=sommer.jpg">Kontakt</a>
In die index.php kommt dann:
1) an den Seitenanfang:
PHP:
$inhalt = $_GET['inhalt'];
$header_bild = $_GET['header_bild'];
2) in den Container, wo der neue Inhalt erscheinen soll folgendes Codeschnipsel:
PHP:
// Abfangen des Erstaufrufs, da ja noch keine Parameterübergabe !
if($inhalt == "") // wenn die Variable inhalt leer ist
$inhalt = start.php;

include("PFAD_ZUR_DATEI/$inhalt");
wobei PFAD_ZUR_DATEI der korrekte Pfad zur einzubindenden Datei ist.Diese Datei enthält dann nur den einzubindenden Inhalt, keinen Titel,Metas etc., auch keinen body_tag. Nur den Text, der darzustellen ist.

Bzw. für das Bild:
PHP:
// Abfangen des Erstaufrufs, da ja noch keine Parameterübergabe !
if($header_bild == "") // wenn die Variable header_bild leer ist
$header_bild = herbst.jpg;

<img src="PFAD_ZU_DATEI/$header_bild" width="100" height="200" />
Die Bilder lege ich in ein Verzeichniss xyz und passe dann PFAD_ZUR_DATEI entsprechend an.


So habe ich dann ständig wechselnde Inhalte und Bilder. Sogar über mehrer Inhaltsbereiche. Dazu benötige ich dann halt weitere Variablen.



Das mit dem rewrite ist dann noch eine Schönheitskorrektur, aber für Anfänger nicht unbedingt sofort verständlich. Und soweit ich informiert bin, auch eine Frage des Providers.

Hoffe, geholfen haben zu können.
Für Fragen stehe ich gerne zur Verfügung.
Vinter
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben