Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

Dateien mit include laden

Fragen zum Thema PHP können hier gestellt werden

Moderatoren: Basti, Guillermo, Andreas W.

Dateien mit include laden

Beitragvon Blackeye am 11.10.2011, 03:01

Hey,

auf zur Runde 2 :)

Ich hab die Seite jetzt zerlegt, und lass u.A. Navigation und den Inhalt selbst durch include in meine index.php laden.
Ich vesuche es zumindest, aber es klappt nicht. :/
Wie gesagt, ich bin mit php noch nicht so gut vertraut. Deswegen wundert euch nicht wenn meine Herangehensweisen völlig unüblich sind. :mrgreen:

index.php:
Code: Alles auswählen
<?php $site = $_GET["site"]; ?>
<!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" />
(...)
<link href="baesslerdesign.css" rel="stylesheet" type="text/css" />
</head>

<body>   

<div id="header">
</div>
<div id="container">

   <div id="navigation">
       <ul>
         <?php include("navi.php") ?>
      </ul>
  </div>
<div id="content">
        <?php
         $site_pos = array("news", "profil", "galerie", "musik", "kontakt", "impressum");
         if(in_array ($site , $site_pos)){
            include("site.php");
         }elseif(isset($site) == false or $site == ""){
            include("news.php");
         }else{
            include("profil.php");} ?>
  </div>
     <div id="footer">
        <span>Gestaltung von Philipp B&auml;&szlig;ler &copy;2011</span><a href="index.php?site=impressum">Impressum</a>
</div>         
</div>
</body>
</html>


navi.php:
Code: Alles auswählen
<?php
$nav = array(
"<li><a href=\"index.php?site=news\">Start</a></li>\n",
"<li><a href=\"index.php?site=profil\">Profil</a></li>\n",
"<li><a href=\"index.php?site=galerie\">Galerie</a></li>\n",
"<li><a href=\"index.php?site=musik\">Musik</a></li>\n",
"<li><a href=\"index.php?site=kontakt\">Kontakt</a></li>\n"
);

      switch($site){
           case("news"): echo"
         <li><span>Start</span></li>\n
                   $nav[2]$nav[3]$nav[4]$nav[5]";
         break;
         
         case("profil"): echo"
         $nav[1]
                   <li><span>Profil</span></li>\n
         $nav[3]$nav[4]$nav[5]";
         break;
         
         case("galerie"): echo"
         $nav[1]$nav[2]
                        <li><span>Galerie</span></li>\n
                        $nav[4]$nav[5]";
         break;
         
         case("musik"): echo"
         $nav[1]$nav[2]$nav[3]
                       <li><span>Musik</span></li>
                         $nav[5]";
         break;
         
         case("kontakt"): echo"
         $nav[1]$nav[2]$nav[3]$nav[4]
                        <li><span>Kontakt</span></li>";
         break;}
     ?>


Mein Ziel ist es, dass die navi.php in die index.php geladen wird und beispielsweise folgenden Codeschnipsel darstellt:
(in dem Fall wäre man auf der Seite 'Kontakt', also $site=kontakt)
Code: Alles auswählen
<div id="navigation">
       <ul>
<li><a href=\"index.php?site=news\">Start</a></li>
<li><a href=\"index.php?site=profil\">Profil</a></li>
<li><a href=\"index.php?site=galerie\">Galerie</a></li>
<li><a href=\"index.php?site=musik\">Musik</a></li>
<li><span>Kontakt</span></li>
      </ul>
  </div>


Aber es wird nichts angezeigt. Nach meinem Verständnis wird die 'finale' index.php doch auf dem Server zusammengestellt, also die ganzen mit include zu ladenden Datein reingeschrieben, und als Paket dann zum Nutzer in den Browser geschickt. Somit reicht es dann auch, die CSS Datei nur einmal zu laden, ebenso wie es reichen müsste, $site = $_GET["site"]; einmal am Anfang der index.php zu schreiben, weil doch navi.php und der Rest dann in der index.php stehen und auf das zugreifen können, oder? :D

Was mach ich falsch?
und kann man das so überhaupt verwirklichen? :o0:
Benutzeravatar
Blackeye
Mitglied
 
Beiträge: 83
Registriert: 27.12.2006, 01:36
Wohnort: Bayern
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: Dateien mit include laden

Beitragvon Guillermo am 11.10.2011, 16:21

Hi Blackeye,

Code: Alles auswählen
include("site.php");


Damit bindest du die Seite "site.php" ein. Ist das so gewollt, ich vermute besser wäre
Code: Alles auswählen
include($site . ".php");


In der Datei navi.php sind auch noch einige Fehler, zudem hast dus ziemlich umständlich gemacht :)
Hier mal eine alternative :
Code: Alles auswählen
$nav =
   array(
      array("news", "Start"),
      array("profil", "Profil"),
      array("galerie", "Galerie"),
      array("musik", "Musik"),
      array("kontakt", "Kontakt")
   );

//Gesamte array in einer Schleife durchiterieren
//Du kannst auch gerne phpeigene foreach Schleife verwenden, siehe php.net
for($i = 0; $i < count($nav); $i++) {
   
   $actualValue = $nav[$i][0];
   $actualTitle = $nav[$i][1];

   //Ist die Seite aktiv ?
   $active = ""
   if($actualValue == $site) {
      $active = "class='active'";
   }

   echo "<li ".$active.">";
   echo "<a href='index.php?site=".$actualValue."'>";
   echo $actualTitle;
   echo "</a>";
   echo "</li>";

}


Du kannst Schleifen verwenden um durch Arrays durch zu gehen (zum Nachlesen und vertiefen: http://tut.php-quake.net/de/loops.html). Außerdem wird in Arrays beginnend ab 0 gezählt.

Viele Grüße,
Guillermo

P.s. Vergiss nicht das Codeschnipsel das ich dir geschrieben habe mit <ul></ul> zu umschließen :)
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Moderator
 
Beiträge: 1093
Registriert: 01.10.2007, 18:18
Wohnort: Bayern

Re: Dateien mit include laden

Beitragvon Blackeye am 11.10.2011, 17:29

Hey :)

vielen Dank ;)

//Edit:

Funktioniert jetzt einwandfrei, mit einem kleinen Schönheitsfehler:
Jetzt wird in der Navigation nicht mehr angezeigt, welcher Link gerade aktiv ist.
Wobei ich nicht versteh warum. Den Codeschnipsel, den du mir freundlicher Weise gegeben hast,
versteh ich soweit.
Es müsste doch bei dem "Button" der Navigation, der aktiv ist, in dem <li> Tag ein "class='active' stehen.
Sprich, wenn in der URL-Leiste "...../index.php?site=kontakt" steht, müsste in der entsprechenden Quelltextzeile
Code: Alles auswählen
<li class="active"><a href="index.php?site=kontakt">Kontakt</a></li>
stehen...
Alles was ich noch tun müsste, wäre die CSS Datei entsprechend anpassen.
Aber das Problem liegt scheinbar bei der if-Abfrage, ob
Code: Alles auswählen
$activeValue == $site
ist.
Weil im Quelltext, nachdem ich die Seite auf den Server geladen und aufgerufen hatte, in keinem <li>-Tag ein class-Attribut stand. :/

Code: Alles auswählen
<li ><a href='index.php?site=news'>Start</a></li>
<li ><a href='index.php?site=profil'>Profil</a></li>
<li ><a href='index.php?site=galerie'>Galerie</a></li>
<li ><a href='index.php?site=musik'>Musik</a></li>
<li ><a href='index.php?site=kontakt'>Kontakt</a></li>


Ich bin jetzt ehrlich gesagt sehr verwirrt, weil das doch so eigentlich alles seine Richtigkeit haben müsste. :p


//EDIT II:

Fehler behoben. Das
Code: Alles auswählen
$site = $_POST["site"]

stand einfach an der falschen Stelle.
Sorry, mein Fehler :D
Benutzeravatar
Blackeye
Mitglied
 
Beiträge: 83
Registriert: 27.12.2006, 01:36
Wohnort: Bayern


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast