Blätterfunktion nicht

Tucker

Erfahrenes Mitglied
Wie hier sicherlich schon einige wissen, schreibe ich schon eine Weile an meinem Gästebuch. Es ist fast schon Einsatzbereit. Allerdings scheitert alles nun an der letzten FUnktion, dem Blättern. Ich habe als Anregung das Tutorial aus diesem Forum genutzt und teilweise abgeändert, damit die Blätterfunktion auch in Zusammenhang mit der Textdatei , da das Tut ja zu einer DB- basierenden Blätterfuntion war.

Nun habe ich flgendes Problem, ich sitze nun seit zwei STunden, habe mir zichfach den Code durchgelesen, immer wieder drüber nach gedacht, was bewirkt das und das und habe dann selbst mit Hilfe des Forums keinen Fehler gefunden.

Vielleicht könnt ihr mir helfen. Kurz noch dazu, wie sich der Fehler bemerkbar macht: Alles vor dem Code wird in HTML ausgegeben, allerdings erfolgt ab der Stelle, wo der Code beginnt, keine Ausgabe mehr.

Bitte helft mir.

PHP:
<?php 

if (($fh=@fopen("gb.txt", "r")) === FALSE)
{
die ("Fehler beim Öffnen");
}

$zeilen=@file('gb.txt');
global $zeilen;

$input=count($zeilen);
global $input;

$perpage=5;
global $perpage;	

if ($input <= $perpage) {
return "&laquo; <b>1</b> &raquo;;"; // HTML-Rückgabe }

if (!$page || $page < 1) { 
$page = 1; 		
global $page;}

$pages = ceil($input / $perpage);  
global $pages;
$html = ""; // Der Rückgabestring wird geleert. 
  
if ($page > 1) {         
$html .= "<a href=\"".$PHP_SELF."?page=".($page-1)."\">&laquo;</a>&raquo;"; 
} 
else { 
$html .= "&laquo;&raquo;"; 
} 

for($i = 1; $i <= $pages; $i++) { 

if ($i == $page) { 
            $html .= "<b>".$i."</b>&raquo;"; 
        } 
else { 
            $html .= "<a href=\"".$PHP_SELF."?page=".$i."\">".$i."</a>&raquo;"; 
        } 
    } 

if ($page <= $pages-1) {         
$html .= "<a href=\"".$PHP_SELF."?page=".($page+1).">&laquo;</a>&raquo;";     } 

else { 
$html .= "» "; // Nein 
} 

return $html; // Den String zurückgeben. 

    $min = ($page - 1) * $perpage; // Startwert ermitteln 
    $max = $min + $perpage; // Der Endwert ist der Startwert + Einträge / Seite 
    global $max;
	global $min;

for ($x=$min; $x<$max; $x++) //ab hier beginnt die Schleife zur Ausgabe der Einträge
?>
 
Ich weiß nicht aber wenn keine Ausgabe mehr erscheint ab dem Punkt wo der Code anfängt dann solltest du Dir eventuell mal Gedanken über die existenz Frage machen.

PHP:
if (($fh=@fopen("gb.txt", "r")) === FALSE) 
{ 
die ("Fehler beim Öffnen"); 
}

Ich würds so abfragen

PHP:
$fh=@fopen("gb.txt",r); 

if (!$fh) 
{ 
die ("Die doofe Datei ist nicht da *grrr* "); 
}
:-)

Das ist jetzt leider nicht getestet, und es ist auch nur so ein Gedanke.

Gruß Mirko
 
Die Datei ist existend. Du musst dir unter fehlender Ausgabe dies vorstellen:

Code:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../style/style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="80%">
	<tr>
		<td colspan="3">
			<h1>Mein Gästebuch</h1>
		</td>
	</tr>
	<tr>
		<td colspan="3">Anzahl der Einträge: 
		
		24	</td>
	</tr>
	<tr>
		<td bgcolor="#999999"><b>Datum</b> </td>
		<td bgcolor="#999999"><b>Name</b></td>
		<td bgcolor="#999999"><b>Nachricht</b></td>
	</tr>

So sieht es aus, wenn es die Seite fertig geladen hat und ich mir dann von dewr Seite den Quelltext anschaue. Normalerweise kommt nach dem schließenden <tr> in dem COde der Datei der PHP_ COde, den ich oben gepostet habe.

Die Darei ist außerdem existend, was daran erkenntlich ist, dass es mir die Anzahl der Einträge trotzdem ausgibt, nur halt eben die Einträge selbst nicht.

edti: Schau es dir doch selbst an: http://www.cabe2010.de/gb/test/
 
Zuletzt bearbeitet:
@Mirko: Das ist definiiv kein Problem wenn man das fopen so schreibt wie er...

PHP:
return $html; // Den String zurückgeben.

    $min = ($page - 1) * $perpage; // Startwert ermitteln
    $max = $min + $perpage; // Der Endwert ist der Startwert + Einträge / Seite
    global $max;
    global $min;

for ($x=$min; $x<$max; $x++) //ab hier beginnt die Schleife zur Ausgabe der Einträge
wozu das return? Du bist in keiner Funktion (jedenfalls nicht ersichtlich, daher wundert mciht auch der gebrauch von global) und alles was nach dem Return erfolgt wir auch nicht mehr bearbeitet....
oder ist es etwas doch eine Funktion? Weil wenn ich mir den Output vom Link anscahue kann ich keines der Textfelder hier im Source finden. Daher wäre das Gerüst drumherum auch sinnvoll zu sehen.
 
Also, ich habe jetzt etwas abgeändert. Ich habe erstmals das Tutorials- Script "Seitenfuntionen" völlig übernommen und aus dem oberen Script alles was mit den Seitenlinks zu tun hatte raus genommen. Sieht jetzt so aus:

PHP:
<?php 
	
	if (($fh=@fopen("gb.txt", "r")) === FALSE)
	{
	die ("Fehler beim Öffnen");
	}
	
	$zeilen=@file('gb.txt');
	global $zeilen;
	
	
	$input=count($zeilen);
	$perpage=5;
	
	include("seitenteilung.php");
	
	createPages($input, $perpage);
	
	echo "<tr><td>".$html."</td></tr>";

	$min = ($page - 1) * $perpage; // Startwert ermitteln 
    $max = $min + $perpage; // Der Endwert ist der Startwert + Einträge / Seite 
    global $max;
	global $min;

		
			for ($x=$min; $x<$max; $x++)//Schliefe zur Ausgabe

Nun zeigt es mir auch wunderbar immer 5 Einträge an. Allerdings wird der String $html nicht über echo ausgegeben. Warum?

Hängt das vielleicht mit der Variable $_SERVER in der Funtion createpages() zusammen?

Hab nämlich keine Ahnung, wozu die dient. Wenn ich eine Vermutung anstellen müsste, könnt ich nicht. Ich vermute nur, dass diese Variable ähnlich $PHP_SELF ist.


Vielleicht könnt ihr mir jetzt helfen. Jetzt hängt alles nur noch an der Linkausgabe.
 
Ich bin dem Fehler entscheidend näher gerückt.
In der Funktion haben wir ja die Zeile mit
PHP:
return $html;

Dort liegt der Fehler. Aus irgendeinem Grund wird die Variable nicht zurück gegeben, selbst mit global $html; . Und wenn nichts zurückgegeben wird, kann auch nichts ausgegeben werden. Allerdings mit der Fehlerbehebung bin ich jetzt überlastet. :-( :rolleyes:
 
Zurück