Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   PHP-Skript funktioniert nicht (https://boardunity.de/php-skript-funktioniert-t4110.html)

Niklas 17.04.2006 11:26

PHP-Skript funktioniert nicht
 
Hi@all,
ich habe mal ein ganz einfaches Skript in PHP programmiert. Es ist für ein Navigationsmenü. Dort sollen nur die Punkte als Links dargestellt werden, auf der Seite man zurzeit nicht ist. Die Seite auf der man sich gerade befindet soll fett dargestellt werden. Und zwar soll es zunächst per
PHP-Code:

$_SERVER['PHP_SELF'

den Dateinamen der aktuell aufgerufenen Datei abrufen und dann mit diesem per if-else-Struktur dann entweder den Link oder das Fettgedruckte ausgeben. Bei mir werden aber alle als Link ausgegeben. Hier ist das Skript:
PHP-Code:

<?php
$_SERVER
['PHP_SELF'] = $datei;
$index "Home";
$blog "Blog";
$umfrage "Umfrage";
$guestbook "Gästebuch";
$contact "Kontakt";
$impressum "Impressum";
$index_datei "/index.php";
$blog_datei "/blog.php";
$umfrage_datei "/umfrage.php";
$guestbook_datei "/guestbook.php";
$contact_datei "/contact.php";
$impressum_datei "/impressum.php";

if (
$datei == $index_datei) { 
echo 
"[ <b>$index</b> ] "; }
else { 
echo 
"[ <a href='$index_datei'>$index</a> ] "; }

if (
$datei == $blog_datei) { 
echo 
"[ <b>$blog</b> ] "; }
else { 
echo 
"[ <a href='$blog_datei'>$blog</a> ] "; }

if (
$datei == $umfrage_datei) { 
echo 
"[ <b>$umfrage</b> ] "; }
else { 
echo 
"[ <a href='$umfrage_datei'>$umfrage</a> ] "; }

if (
$datei == $guestbook_datei) { 
echo 
"[ <b>$guestbook</b> ] "; }
else { 
echo 
"[ <a href='$guestbook_datei'>$guestbook</a> ] "; }

if (
$datei == $contact_datei) { 
echo 
"[ <b>$contact</b> ] "; }
else { 
echo 
"[ <a href='$contact_datei'>$contact</a> ] "; }

if (
$datei == $impressum_datei) { 
echo 
"[ <b>$impressum</b> ] "; }
else { 
echo 
"[ <a href='$impressum_datei'>$impressum</a> ] "; }
?>

Danach binde ich dieses Skript dann per
PHP-Code:

include("footer.inc.php"

in die entsprechenden Seiten ein.
Auf jeden Fall kann ich den Fehler einfach nicht finden. Vielleicht kann mir hier jemand helfen.
Danke :) !
MfG
Niklas

MaMo 17.04.2006 13:58

Hi,

versuch mal folgendes:
PHP-Code:

<?php
// Speichere nur den Dateinamen...
$datei basename($_SERVER['PHP_SELF']);

// Für jeden Eintrag ein Array. Reihenfolge wird berücksichtigt. 
// Jedes Array getrennt mit einem Komma. Im Index "name" steht der auszugebende Text. Im Index "link" steht die Datei.
$links = array(
    array(
'name' => 'Home''link' => '/index.php'),
    array(
'name' => 'Blog''link' => '/blog.php'),
    array(
'name' => 'Umfrage''link' => '/umfrage.php'),
    array(
'name' => 'Gästebuch''link' => '/guestbook.php'),
    array(
'name' => 'Kontakt''link' => '/contact.php'),
    array(
'name' => 'Impressum''link' => '/impressum.php')
);

//  Jeden Link durchgehen
foreach ($links as $data) { 
    
// Prüfen ob der Dateiname des Links gleich des Dateinamens der aufgerufenen Datei ist.
    
if ( $datei == basename($data['link']) ) {
        
// Nur den Namen Fett schreiben
        
echo "[ <b>{$data['name']}</b> ] ";
    }
    else {
        
// Den Link und den Namen ausgeben
        
echo "[ <a href=\"{$data['link']}\">{$data['name']}</a> ] ";
    }
}
?>

Wenn Fragen sind, einfach stellen...
Dieses Verfahren sollte funktionieren, ist aber nicht getestet.

MfG MaMo

Niklas 18.04.2006 10:12

Hi,
Danke, MaMo! Es funktioniert! Ich hab jetzt auch rausgefunden, wo mein Fehler lag. Es hätte in der zweiten Zeile statt
PHP-Code:

$_SERVER['PHP_SELF'] = $datei

PHP-Code:

$datei $_SERVER['PHP_SELF']; 

stehen müssen. Dann funktioniert auch meins.
Ich hätte nichtsdestotrotz noch ein Problem und zwar beim gleichen Skript. Ich hab mal meins genommen, da ich bei meinem besser durchblicke ;) . Also und zwar soll diese Navigationsleiste unten stehen. Deshalb möchte ich noch eine Linie darüber haben. Da die Seiten verschieden breit sind, brauche ich natürlich auch zwei verschieden breite Linien. Die Linien heißen linie.png und linie_breit.png. Die Seiten (die Tabellen, wo der Inhalt drin steht) sind entweder 472px oder 600px breit. Jetzt hab ich das mal in der footer.inc.php eingefügt:
PHP-Code:

<p><center><img src="<?php if ($datei == $index_datei || $umfrage_datei || $contact_datei || $impressum_datei) { echo "linie.png"; } elseif ($datei == $blog_datei || $guestbook_datei) { echo "linie_breit.png"; } ?>" width="<?php if ($datei == $index_datei || $umfrage_datei || $contact_datei || $impressum_datei) { echo "460"; } else { echo "590"; } ?>" alt="Trennungslinie" /></center></p>

. Wieder will dieses Skript ums Verr..... nicht hinhauen. Immer wird nur die kleine Linie genommen. Ich hab schon alles durchprobiert: "width" weggelassen usw. Kann mir da jemand helfen.
Und noch ein Problem, die eher im HTML-Bereich angesiedelt: Bei dieser Seite wird immer der Banner und der Footer gequetscht, obwohl die Grafiken exakt 600px breit sind und bei der Tabellenbreite auch exakt 600px angegeben sind. Wenn ich width="600px" weglasse sind die Grafiken zu breit. Im Editor (Dreamweaver 8) sieht alles noch ganz normal aus, aber dann im Browser eben nicht mehr.
Ich hoffe, ihr könnt mir helfen. Danke schonmal :) !
MfG
Niklas

MaMo 18.04.2006 11:46

Hi.

Versuch mal:
PHP-Code:

<p style="text-align: center;">
<?php if ($datei == $index_datei || $datei == $umfrage_datei || $datei == $contact_datei || $datei == $impressum_datei) { ?>
    <img src="linie.png" width="460" alt="Trennungslinie" />
<?php } else { ?>
    <img src="linie_breit.png" width="590" alt="Trennungslinie" />
<?php ?>
</p>

MfG MaMo

Niklas 18.04.2006 17:45

Hi,
und vielen Dank nochmal MaMo. Das hat funktioniert :) !
Und das zweite Problem hat sich auch erübrigt. Irgendwie hab ich da die Dateien verwechselt :rolleyes: .
MfG
Niklas


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25