Blätterfunktion will nicht so recht

Kracky

Mitglied
Hallo Leute,

ich habe ein kleines Gästebuch Script geschrieben das nach 15 Einträgen eine neue Seite anlegen soll.

Wenn ich die Datei direkt öffne, also über den direkten Link /script/guestbook/guestbook.php

dann macht er auch alles so wie er es soll und wenn man dann auf Seite 2 klickt dann macht er halt /guestbook.php?seite=2 draus.

Jetzt habe ich das ganze versucht in meine Homepage einzubinden.

Der Link zum Gästebuch ist in einer externen navigation.php definiert

PHP:
$links['guestbook']		=	array(
	'title'	=>	'Gästebuch',
	'link'	=>	'/script/guestbook/guestbook.php');

die navigation.php ist wiederum mit include in die index.php eingebunden.

Sobald ich jetzt aber aber der guestbook.php den Link zu Seite 2 anklicke bleibt der content allerdings leer.

Wie gesagt wenn ich die Seite direkt aufrufe ohne GET dann funktioniert auch die Blätterfunktion.

Jetzt habe ich einfach mal testweise noch folgendes in die navigation.php eingetragen

PHP:
$check['seite2']	= array(
	'link'	=>	'/script/guestbook/guestbook.php?seite=2');

damit wollte ich halt erreichen das wenn ich jetzt ?page=seite2 aufrufe er auch die seite 2 lädt.

Tut er aber nicht :/ Er gibt mir nur einen Fehler aus

Warning: include(/script/guestbook/guestbook.php?seite=2) [function.include]: failed to open stream: No such file or directory in F:\xampp\htdocs\layout\index.php on line 59

Warning: include() [function.include]: Failed opening '/script/guestbook/guestbook.php?seite=2' for inclusion (include_path='.;F:\xampp\php\PEAR') in F:\xampp\htdocs\layout\index.php on line 59

Ist ja klar das er den Link erstmal "stationär" nicht findet er wird ja auch von der guestbook.php generiert.

Folgenden Code hat die Ausgabe:

PHP:
error_reporting(1);
$seite = $_GET["seite"];
error_reporting(0);

if(!isset($seite))
	{
	$seite = 1;
	}
	
include("../../bin/mysql.php");

$eintraege_pro_seite	=	15;

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;

$abfrage = "SELECT * FROM guestbook WHERE aktiv = '1' ORDER BY id DESC LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
	{
	$inhalt = $row->inhalt;
	$inhalt = htmlentities($inhalt);
	$inhalt = nl2br($inhalt);
	$datum	= date("d.m.Y H:i", $row->datum);
	
	if($row->email == "")
		{
		$name = "<b>$row->name</b>";
		}
	else
		{
		$name = "<a href=\"mailto:$row->email\">$row->name</a>";
		}
	
	echo "
	<div class=\"bla\">
		<div class=\"kopf\">
		Von <b>$name</b> am $datum
		</div>
		<div class=\"inhalt\">
		<br>
		$inhalt
		</div>
		<br>
		<hr>
	</div>";
	}

$result	= mysql_query("SELECT id FROM guestbook WHERE aktiv = '1'");
$menge	= mysql_num_rows($result);

$wieviel_seiten = $menge / $eintraege_pro_seite;

echo "<div align=\"left\">";
echo "<b>Seite:</b> ";

for($a=0; $a < $wieviel_seiten; $a++)
	{
	$b = $a + 1;
	
	if($seite == $b)
		{
		echo " <b>$b</b> ";
		}
	else
		{
		echo " <a href=\"?seite=$b\">$b</a> ";
		}
	}
echo "</div>";
?>

Würde mich über Hilfe freuen ^^
 
Zuletzt bearbeitet:
Ohne genaue Analyse. Einfach mal aus der Problembeschreibung heraus gehe ich mal davon aus, dass dein Problem mit den verschachtelten includes() hast.

Wenn du das Gästebuch direkt aufrufst, dann müssen die Links auf das Gästebuchscript zeichen.
Wenn du das Gästebuch mit include() einbindest, dann müssen die Links auf die Haubtseite zeigen.

Wenn du deine Navigationslinks mit __FILE__ erstellst, dann zeigen sie immer auf das Script, das gerade den Lead hat.
__FILE__:
Der vollständige Pfad- und Dateiname einer Datei. Wird diese Konstante innerhalb einer nachgeladenen Datei verwendet, wird der Name dieser eingebundenen Datei zurückgegeben. Seit PHP 4.0.2 enthält __FILE__ immer einen absoluten Pfad mit aufgelösten Symlinks, während in älteren Versionen unter Umständen ein relativer Pfad enthalten sein kann.


PHP:
$check['seite2']    = array(
    'link'    =>    __FILE__'?seite=2');

Und falls du Verschachtelungen bei den include() hast:
PHP verschachtelte include
 
Danke erstmal

da krieg ich direkt ne Fehlermeldung in der navigation.php rein

PHP:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in F:\xampp\htdocs\layout\navigation.php on line 53

ich würd jetzt mal auf falsche formatierung tippen? :o

edit: Verschachtelte Include's sind ne gute Frage hm

Also die Struktur is folgendermaßen:

das gästebuch script befindet sich in /script/guestbook/
was mit include über die navigation in die index.php eingebunden ist

in der navigation befindet sich allerdings kein include sondern dort wird nur das array definiert

in der index.php wird dann im entsprechenden navigations div die navigation mit include("navigation.php"); eingebunden und in das content div reingeladen mittels
include($check[$page]['link']);
bzw.
include($links[$page]['link']);
 
Zuletzt bearbeitet:
hmm das behebt den fehler leider auch nicht :/

Der einzige unterschied ist das er jetzt die Navigation bemängelt

Warning: include(F:\xampp\htdocs\layout\navigation.php?guestbook_seite=2) [function.include]: failed to open stream: No such file or directory in F:\xampp\htdocs\layout\index.php on line 59
 
Warum gibtst du beim include einen Paramter der URL mit? Das '?guestbook_seite=2' hat beim include nix verloren. Lies nochmals genau nach, was der include() macht,
 
ich gebe dem include keinen paramater der url mit ^^ die url ist im array unter 'link' gespeichert ich include lediglich die navigation.php und die einzelnen seiten wie die guestbook.php
 
du hast auch recht

PHP:
$check['seite2']    = array(
    'link'    =>    '/script/guestbook/guestbook.php?seite=2');

wenn das im array gespeichert ist versucht er natürlich auch den parameter zu includen.

Hmm aber auch ohne den Parameter komm ich nicht weiter ^^
 
Zurück