Indexdatei/Template include von PHP

Bambutscha

Grünschnabel
Hallo alle zusammen,
ich habe folgendes Problem. Ich habe mich erst seit ein paar Tagen mit php auseinandergesetzt.
Nun habe ich soweit hinbekommen, das ich mein Template habe wo der Inhalt von anderen Seiten "Included" wird, dies funktioniert auch soweit und sieht wie folgt aus:

PHP:
       switch (isset($_GET['page']) ? $_GET['page'] : '') { 
    	 case "news":
            include ("inc/news.php");
            break;
        case "history":
            include ("inc/history.php");
            break;
        case "live":
            include ("inc/live.php");
            break;
				case "live1":
					include ("inc/live1.php");
					break;
				case "live2":
					include ("inc/live2.php");
					break;
				case "live3":
					include ("inc/live3.php");
					break;
       
        case "fanclub":
            include ("inc/fanclub.php");
            break;
        case "gbook":
            include ("inc/gbook/index.php");
            break;
		case "link":
            include ("inc/link.php");
            break;
		case "contact":
            include ("inc/contact.php");
            break;
        default:
        case "news":
          	include ("inc/news.php");
            break;
}

Problem Nummer 1: Ich habe in der news.php ,unten, per include noch einen Counter eingefügt:
PHP:
<?php @include_once("counter/counter.php"); ?>

dieser wird aber auf der Homepage nicht angezeigt.
hompage:http://www.beagnd.gnd-music.de/xxgndxx
so sollte es aussehen: http://www.beagnd.gnd-music.de/gnd
___________________________________________________
Problem Nummer 2: Youtube Videos werden nicht angezeigt.
homepage: http://www.beagnd.gnd-music.de/xxgndxx/mindex.php?page=video

so sollte es aussehen:http://www.beagnd.gnd-music.de/gnd/video.html
___________________________________________________
Problem Nummer 3: Ich will ein Gästebuch wie den Counter "includen".
Dabei tritt folgender Fehler auf:
Warning: filesize() [function.filesize]: stat failed for templates/read.php in /var/www/web66/html/beagnd/xxgndxx/inc/gbook/classes/class.Template.php on line 72

homepage:http://www.beagnd.gnd-music.de/xxgndxx/index.php?page=gbook
so sollte es aussehen:http://www.beagnd.gnd-music.de/gnd/g-book.php

wenn ich jetzt den fad bis zur Indexdatei des Gästebuchs angebe:
http://www.beagnd.gnd-music.de/xxgndxx/inc/gbook/
erscheint der Fehler nicht.

der Code zu dem oben erwähnten Fehler sieht wie Folgt aus:

PHP:
# read_file()
 #
 # Einlesen einer Vorlagendatei und {INCLUDE}-Anweisungen ggf. verarbeiten
 # (Text wird an bereits vorhandenen Text angehaengt)
 #
 # Parameter: 1. Datei zum Einlesen
 #            2. Status-Code (Boolean):
 #               true  => {INCLUDE}-Anweisungen nicht verarbeiten
 #               false => {INCLUDE}-Anweisungen verarbeiten (Standard)
 #
 # Rueckgabe: -nichts- (Template-Objekt wird modifiziert)

 function read_file($file,$not_include=0)
 {
  $this->file = $file;

  if(filesize($file) > 0)
  {
   $fp = fopen($file,'r');
   if(!$fp) die;
   $content = fread($fp,filesize($file));
   fclose($fp);
  }
  else $content = '';

  $this->add_text($content);
  if(!$not_include) $this->parse_includes();
 }


genauer gesagt ist das die Zeile 72 :
PHP:
 if(filesize($file) > 0)
Wenn ich die oben erwähnten 3 Teile in eine Kopie des Templates packe, dann funktionieren sie, jedoch wenn ich sie die Template-Datei "Include" treten die aufgeführten Fehler auf. Ich Hoffe ihr könnt mir weiterhelfen ;)

Im anhang habe ich auch nochmal den Gesamten ordner mit allen dateien.
 

Anhänge

Hi,

erste Gegenfrage: hast du display_errors auf 1 sowie error_reporting auf E_ALL?

Zu Problem 1:

Entferne mal das '@' vor dem Include und teile mit, ob ein Fehler angezeigt wird (file does not exist oder etwas in der Art).

Zu Problem 2:

Versuche erstmal, deinen HTML-Code zu reparieren. Der strotzt nur so von Fehlern. Möglicherweise ist eine Ursache des Problems dort zu finden.

Zu Problem 3:

Siehe Problem 1, entferne das '@' vor dem include und schau, ob ein Fehler ausgegeben wird.
 
zu deiner Gegenfrage
hast du display_errors auf 1 sowie error_reporting auf E_ALL?

Die beiden Sachen finde ich in der php.ini oder? Und die php.ini ist auf dem Server?
Wenn ich aber nur einen Ordner auf dem Server habe, für meine Page, dann müsste ich dafür den Inhaber des Servers nach der php.ini Fragen oder?

Zu Problem 1, 3:
Ich habe das "@" mal entfernt, dies hat keinerlei Änderungen gebracht. Werder das es funktioniert, noch das eine Fehlermeldung erscheint.

Zu Problem 2:
Ich weiß jetzt nicht welchen fehlerhaften HTML code du meintes. Aber ich habe den HTML code der video.php strukturiert und überflüssige teile entfehrnt. Und jetzt funktioniert das schon einmal.
Hompage: http://www.beagnd.gnd-music.de/xxgndxx
/mindex.php?page=video


auf den verdacht hin, das der Fehlerhafte HTML Code die Ursach für PRoblem 1,3 sein könnten habe ich die ganze sache stark vereinfacht:
PHP:
<html>
<head>

<title></title>
</head>

<body>
<table width="70%" border="0">
  <tr>
    <td width="20%"><li><a href="index.php?page=news">News</a></li>
    	<li><a href="index.php?page=video">Video</a></li>
        <li><a href="index.php?page=gbook">gbook</a></li>
    
    </td>
    <td width="80%"><?php
	
       switch (isset($_GET['page']) ? $_GET['page'] : '') { 
    	 case "news":
            include ("inc/news.php");
            break;
        case "history":
            include ("inc/history.php");
            break;
        case "live":
            include ("inc/live.php");
            break;
				case "live1":
					include ("inc/live1.php");
					break;
				case "live2":
					include ("inc/live2.php");
					break;
				case "live3":
					include ("inc/live3.php");
					break;
       
	   	case "video":
            include ("media/video.php");
            break;
        case "fanclub":
            include ("inc/fanclub.php");
            break;
        case "gbook":
            include ("inc/gbook.php");
            break;
		case "link":
            include ("inc/link.php");
            break;
		case "contact":
            include ("inc/contact.php");
            break;
        default:
        case "news":
          	include ("inc/news.php");
            break;
}

	
	?> </td>
  </tr>
</table>
</body>
</html>

der link dazu : http://www.beagnd.gnd-music.de/test/index.php?page=news

jedoch bestehen die Beiden Probleme weiterhin.
Im Anhang ist auch noch mal die vereinfachte Version.
 

Anhänge

Das hat keinerlei Änderung berwirkt.
Ich habe dies jetzt an den Anfang der index.php eingefügt, war doch richtig oder?
 
Ok, machen wir das Schritt für Schritt:

Problem 3:

Hast du schon untersucht, welcher Wert als Parameter an diese Methode read_file() übergeben wird? Innerhalb der Methode mal ein var_dump() auf $file machen und Ausgabe untersuchen/posten.
 
Also zu deiner ersten Frage, sry aber ich habe keine Ahnung wie ich das herausfinde.

als ich var_dump() auf $file angewendet habe.
PHP:
function read_file($file,$not_include=0)
 {
  $this->file = $file;
  var_dump($file);
wenn das so richitg ist, kam dieser Fehler zu dem anderen dazu: string(18) "templates/read.php"
 
Hi,

dann fehlt also in dem Ordner "templates" die Datei "read.php". Wo auch immer die sein soll, sie ist anscheinend nicht da, wo sie erwartet wird. Passen evtl noch irgendwelche Pfad-Einstellungen in der Configuration deines CMS nicht?
 
also die read.php ist da und die pfadangaben sind auch alle richtig. Ich finde es merkwürdig, dasalles funktioniert, wenn ich die index.php des g-books direkt aufrufe, jedoch nicht, wenn ich sie über ein include aufrufe

Gibt es noch ne gute andere Möglichkeit die andere php dateien zu includieren, außer die die ich verwendet habe?
 
Zurück