include problem

::emanuel::

Erfahrenes Mitglied
ich hab da ein problem mit dem includen. ich hab folgenden code in der index.php :

PHP:
<?php
	include("checkLinks.inc");
	$fp = fopen ("~allgemein/Links.txt","r");
if ($fp)
{
    while(!feof($fp)) 
    {
	$linksalt = fgets($fp, 50);
    $links = checkLink( $linksalt );
echo "<tr><a href=\"index.php?seite=$links\">
		<td height=\"20\" onmouseover=\"this.style.backgroundColor='#D8E6EE'\"
		onmouseout=\"this.style.backgroundColor='#FFE8A2'\">&nbsp;<a href=\"index.php?seite=$links\" target=\"_parent\">$linksalt</a></td></a>
	  </tr>
	  <tr>
		<td><img src=\"img/white.gif\" width=\"181\" height=\"1\"></td>
	  </tr>"; 
    }
fclose($fp);
}
else
	{
echo "Datei wurde nicht gefunden";
	}
?>

Das Problem ist jetzt, dass er es falsch ausgibt. Der Quelltext zu den Menüpunkten sieht zB folgendermaßen aus:

Code:
<a href="index.php?seite=Schulverwaltung
">

beim letzten menüpunkt sieht der link aber so aus:

Code:
<a href="index.php?seite=Pressespiegel">

das heißt er setzt im quelltext eine neue zeile; beim letzten menüpunkt aber nicht. kann es sein, dass es was mit der Links.txt zu tun hat. Dort hab ich die Menüpunkte einfach untereinander geschrieben. ZB:

Presse
Über uns
Sonstiges
etc...

Kann man es so programmieren, dass man php sagt, wann eine neue zeile beginnt, also zB bei \n ?:

Presse\n
Über uns\n
etc...


oder woran kann es noch liegen, dass er die links so falsch ausgibt?
danke für eure hilfe. :)
 
Zuletzt bearbeitet:
\n gibt nur einen zeilenumbruch im quelltext aus, kannst du also nur sehen, wenn du den quellcode öffnest. um einen zeilenumbruch zu machen, den der internet explorer darstellt musst du <br> benutzen
 
hm.... hast mich glaub ich falsch verstanden.
ich will ja keinen zeilenumbruch. er macht mir aber einen im quelltext:

Code:
<a href="index.php?seite=Schulverwaltung
">

wie kann ich das verhindern?
den quelltext hab ich schon oben gepostet ^^.
thx
 
normal dürfte der keinen machen bei deinem quellcode. ich würd mal nachgucken, ob du vielleicht automatischen zeilenumbruch im editor anhast, dann würde der nämlich im editor formatiert werden, wenn du dir den quelltext der html datei anguckst ^^
aber mal was anderes, ists nicht scheiss egal ob da ein zeilenumbruch ist oder nicht? gucken sich doch eh nur leute die was klauen wollen den quelltext an und für die musst das net schön machen :)
 
hi :)
ich hab mir nochmal den quelltext angschaut - es ist kein zeilenumbruch eingestellt.
naja, sooo egal ist das nicht, weil die links nicht funktionieren (bis auf den letzten).
ich glaube ich weiß woran das liegt.....
in der Links.txt sind ja die Menüpunkte untereinander geschrieben:

Über uns
Sachliches
Sonstiges
Presse

nunja, jetzt interpretiert er den link einfach mit "Über uns + Zeilenumbruch" - deshalb funktioniert es auch beim letzten eintrag - Presse, weil nachdem kein zeilenumbruch mehr ist. aber wie kann man dieses problem lösen. man müsste php so konfigurieren, dass er immer nach einem gewissen zeichen einen neuen menüpunkt interpretiert, zB nach % oder irgendsowas.

geht das überhaupt?
ich denk mir das so: in der Links.txt steht dann einfach

Über uns%
Sachliches%
Sonstiges%
Presse

oder: Über uns%Sachliches%Sonstiges%Presse

aber wie stellt man das in php ein?
stimmt meine überlegung? oder liegt es vielleicht an dem switch-befehl:
PHP:
<?php
    switch($_GET['seite'])
    {
        case "$links": include("~allgemein/$links.txt");
            break;
        default: include("home.txt");
            break;
    }
?>
oder gibt es vielleicht noch andere lösungsvorschläge für mein problem? help! :(
 
Zuletzt bearbeitet:
hm.... das problem ist, dass ich das immer mit switch gelöst hab.
kann mir vielleicht jemand helfen, wie ich das in eine schleife umsetze? :)
 
wenn

ich dich richtig verstanden habe,
liest du die Ziele für die Links
also die Variable "seite" in deinen
Links aus der Textdatei aus.

Schreib diese doch einfach mal mit
einem Trennzeichen in deine Datei,
dann kannst du sicher gehen daß
keine versteckten Zeilenumbrüche
hineingelangen.

Sehe deine Datei also folgendermaßen
aus :

Über uns|Sachliches|Sonstiges|Presse

müsste dein Code folgendermaßen
aussehen. (Daß Trennzeichen ist
natürlich austauschbar. Einfach
in der Funktion "explode" zwischen
den ersten "" ändern.

PHP:
<?php
include("checkLinks.inc");
$_file = "~allgemein/Links.txt";
$fp = fopen ($_file,  "r");

if($fp)
{
 $_string = fgets($fp,  filesize($_file));
 $_array = explode("|", $_string);
 foreach($_array as $linksalt)
 {
 $links = checkLink( $linksalt );
echo "<tr><a href=\"index.php?seite=$links\">
  <td height=\"20\" onmouseover=\"this.style.backgroundColor='#D8E6EE'\"
onmouseout=\"this.style.backgroundColor='#FFE8A2'\">&nbsp;<a href=\"index.php?seite=$links\" target=\"_parent\">$linksalt</a></td></a>
  </tr>
  <tr>
   <td><img src=\"img/white.gif\" width=\"181\" height=\"1\"></td>
  </tr>"; 
 }
 fclose($fp);
}
else echo "Datei wurde nicht gefunden";
?>

Sollte rein theoretisch gehen.

Jonathan
 
super, das problem mit den zeilen ist gelöst - danke vielmals :)

aber jetzt hab ich noch das andere problem.....
ich hab bei switch folgendes eingestellt:

PHP:
<?php
    switch($_GET['seite'])
    {
        case "$links": include("~allgemein/$links.txt");
            break;
        default: include("home.txt");
            break;
    }
?>

er spricht jetzt aber nur einen case von den links an. wie kann ich das verhindern und so einstellen, dass er alle anspricht?

manuel
 
Zurück